Tecnologias Java
Nesta unidade, nós fazemos a distinção entre os diferentes tipos de estruturas, servidores e plataformas Java.
Spring Framework
O Spring Framework é uma estrutura de aplicativo e um contêiner de IoC (inversão de controle). Historicamente, o Spring é usado para complementar o modelo EJB (Enterprise JavaBeans). Suas principais funcionalidades são:
- Injeção de dependência
- Programação orientada a aspectos
- Abstração de negócios
Spring Boot
O Spring Boot é executado sobre o Spring Framework e tem uma configuração automática flexível. Os aplicativos Spring Boot são executados de maneira autônoma e são a opção ideal para os microsserviços.
Spring Data
O Spring Data simplifica o acesso a dados para bancos de dados relacionais e não relacionais, estruturas MapReduce e serviços de dados baseados em nuvem.
Spring Security
O Spring Security é o padrão de referência na proteção de aplicativos baseados em Spring. Ele oferece um alto nível de autenticação e controle de acesso. Por exemplo, o Spring Security se integra bem ao Active Directory.
Spring Cloud
O Spring Cloud é usado para sistemas distribuídos. O Spring Cloud vem com descoberta de serviço, gerenciamento de configuração, monitoramento e uma boa experiência para o desenvolvedor.
Spring Batch
O Spring Batch é uma estrutura leve para aplicativos em lote robustos, essenciais para as operações diárias.
MicroProfile e Jacarta EE
O MicroProfile e o Jacarta EE (Edição Enterprise) podem ser vistos como a continuação de software livre das especificações do Java EE.
O MicroProfile é um conjunto de especificações para arquiteturas de microsserviço. Ele se autodenomina um fórum aberto para otimizar o Java Enterprise em uma arquitetura de microsserviços. Seu objetivo é inovar em várias implementações e colaborar em áreas comuns de interesse.
O Jacarta EE é um conjunto de especificações para a criação de aplicativos empresariais. Sua estrutura modularizada possibilita aos desenvolvedores criar soluções de software eficientes. Você pode empacotar aplicativos Jakarta EE como arquivos EAR ou WAR.
O WebProfile é um subconjunto do Jakarta EE para serviços de back-end com foco na Web, mas não se preocupe! Você pode adicionar APIs específicas da plataforma Enterprise a ele.
Servidores de aplicativos
Os aplicativos Java EE precisam ser implantados em servidores de aplicativos compatíveis com Java EE (WebLogic, WebSphere, WildFly, GlassFish, Payara e outros).
O Apache Tomcat é um servidor HTTP e um contêiner de Servlet Java. Ele implementa as especificações do Servlet, das JSP (Java Server Pages), da Java Expression Language e do Java WebSocket.
O Oracle WebLogic Server é uma plataforma unificada e extensível para desenvolver, implantar e executar aplicativos empresariais. O WebLogic Server oferece uma implementação robusta e madura do Java EE e do Jacarta EE.
O Red Hat JBoss Enterprise Application Platform oferece segurança e desempenho de nível empresarial para implementações locais e virtuais ou em nuvens privadas, públicas ou híbridas.
O WildFly é o upstream de software livre para JBoss EAP. Essa variante controlada pela comunidade é ótima para desenvolvimento e teste.
O IBM WAS (WebSphere Application Server) é um ambiente de runtime de servidor Java flexível e seguro para aplicativos corporativos. Ele tem como foco a alta confiabilidade. Ele dá suporte a microsserviços e modelos de programação baseados em padrões. Você pode modernizar em seu próprio ritmo, obter maior visibilidade entre as cargas de trabalho, analisar aplicativos corporativos e avançar em sua jornada para o Kubernetes.
O Open Liberty é a versão de software livre e orientada pela comunidade do WAS.
O Oracle GlassFish é a implementação de referência de muitos padrões Web Java EE (incluindo o Servlet e o JSP).
Outras estruturas para arquiteturas orientadas a microsserviços
O Netty é uma estrutura cliente/servidor de NIO (E/S não bloqueada). Ele permite o desenvolvimento rápido e fácil de aplicativos de rede, como clientes e servidores de protocolo. Ele simplifica e agiliza muito a programação de rede, como servidores de soquete TCP e UDP. O Netty é uma estrutura de aplicativo de rede orientada a eventos assíncronos para desenvolvimento rápido de clientes e servidores de protocolo sustentáveis e de alto desempenho.
O Quarkus é uma pilha Java nativa do Kubernetes adaptada para OpenJDK HotSpot e GraalVM. O Quarkus está ganhando cada vez mais força. Aliás, há estruturas mais focadas em desempenho como essa, por exemplo, Vert.x, Helidon, Payara Micro e KumuluzEE.
O Micronaut é uma estrutura de pilha completa moderna baseada em JVM para a criação de microsserviços modulares facilmente testáveis e aplicativos sem servidor. O Micronaut apresenta uma injeção de dependência e runtime de programação orientado a aspectos que não usa reflexão. Isso facilita a execução de aplicativos Micronaut no GraalVM.