import io.javalin.Javalin;
public class App {
public static void main(String() args) {
var app = Javalin.create()
.get("/", ctx -> ctx.result("Hello World"))
.start(7070);
}
}
Observe a mudança do método fluente e o código limpo, permitindo-nos descrever a definição do servidor e os endpoints juntos.
Javalin evita inchaço e qualquer sintaxe de dependência desnecessária. Se você está procurando uma estrutura minimalista para realizar o trabalho, Javalin pode ser a estrutura para você.
Micronauta
Micronaut é uma ótima opção quando o tempo de inicialização é fundamental e/ou se você deseja uma estrutura multilíngue e full stack para construir microsserviços e aplicativos sem servidor. Ele fornece um compilador AOT que fornece desempenho e injeção de dependência sem reflexão. Ele pode ser executado na JVM ou compilar imagens nativas com GraalVM.
A forma como o contêiner Micronaut IoC (inversão de controle) funciona significa que todas as dependências são resolvidas durante a compilação. Isso proporciona tempos de inicialização rápidos, essenciais para microsserviços. O design do Micronaut também significa menor uso de memória para injeção de dependência.
Micronaut é poliglota, com suporte para Java, Groovy e Kotlin, com planos de suporte para Scala.
Matthew Tyson
Micronuat foi projetado para a nuvem. Possui integração automatizada para descoberta de serviços com provedores como Kubernetes e rastreamento como Jaeger. Isso permite evitar codificação e projetar microsserviços com descoberta e rastreamento automatizados por meio de configuração. Ele também oferece suporte a configurações distribuídas como Consul.
O Micronaut possui conectores de armazenamento de dados integrados e suporte para camadas de acesso a dados. Ele também oferece suporte a descritores OpenAPI.
Apesar de seus recursos avançados, os endpoints do Micronaut são simples e legíveis:
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
@Controller("/hello")
public class HelloController {
@Get("/{name}")
public String hello(String name) {
return "Hello, " + name;
}
}
Como o próprio nome indica, Micronaut é ideal para microsserviços e realmente tenta facilitar ao máximo sua vida ao desenvolvê-los. É possivelmente a estrutura de microsserviços mais ajustada para Java.
Veja também: Introdução ao Micronaut: uma estrutura Java nativa da nuvem.
Helidon
Vale a pena considerar o Helidon se você deseja seguir os padrões Java, estar pronto para a empresa e gostar de ter sua escolha de tipos de estrutura.
Helidon é o framework mais novo abordado aqui e um projeto oficial da Oracle. Ele foi projetado desde o início para threads virtuais e injeção de dependência em tempo de construção (semelhante ao Micronaut). Ele também adicionou recentemente recursos direcionados à IA.

Matthew Tyson
Helidon vem em duas variedades:
Helidon SE se assemelha ao Javalin, enquanto o Helidon MP é como o Quarkus em termos de filosofia e conjunto de recursos. A adoção de threads virtuais significa que foram dispensados modelos de simultaneidade complicados, facilitando a compreensão e o gerenciamento de nós de aplicativos.
Aqui está um endpoint no Helidon SE:
import io.helidon.webserver.WebServer;
import io.helidon.webserver.http.HttpRouting;
public class Main {
public static void main(String() args) {
HttpRouting routing = HttpRouting.builder()
.get("/hello", (req, res) -> res.send("Hello from InfoWorld!"))
.build();
WebServer.builder()
.routing(routing)
.port(8080)
.build()
.start();
}
}
O recurso matador do Helidon é provavelmente o padrão Oracle e oferece a você a escolha do modelo, se você deseja fazer DIY mais simples com SE ou prefere uma estrutura opinativa e completa com MP.
Veja também: Os melhores frameworks de linguagem Java e JVM.
Conclusão
Java oferece uma ampla gama de opções para construir tudo na nuvem moderna, desde APIs simples até clusters sofisticados de microsserviços, implantações sem servidor e aplicativos full-stack. Cada uma das microestruturas Java discutidas neste artigo é sólida, portanto não há necessidade de se preocupar com a escolha. Você pode começar identificando um ou dois que parecem atender às suas necessidades, depois mergulhar no código e escolher aquele que lhe parece melhor. O bom dessas estruturas é que todas priorizam a experiência do desenvolvedor, cabendo a você decidir qual experiência de desenvolvedor é mais adequada para você.
