Olá Habr! Apresento a você a tradução do artigo de Dmitry Kornilov
Helidon Takes Flight . Não sou funcionário da Oracle, mas encontrei um artigo interessante sobre um novo tipo de estrutura, cada vez mais popular. Então vamos lá ...
Hoje é um bom dia. Hoje estamos apresentando a nova família MicroProfile de estruturas Java para implementar microsserviços. O projeto Helidon é a nova estrutura Java da Oracle .
Helidon, da tradução grega, é uma andorinha, um tipo de pássaro, de acordo com a Wikipedia, com um corpo esbelto e aerodinâmico e asas pontudas, que proporcionam grande manobrabilidade e ... um voo muito eficiente. Ideal para voar nas nuvens.1. Introdução
Há algum tempo, começaram os trabalhos sobre o que é o projeto Helidon agora. Quando entramos no mercado de soluções em nuvem e a arquitetura de microsserviço se tornou muito popular na criação de serviços em nuvem, percebemos que a experiência em desenvolvimento também deveria ser expandida. É possível criar microsserviços usando Java EE, mas é melhor ter uma infraestrutura projetada do zero para criar microsserviços. Queríamos criar um conjunto leve de bibliotecas que não exigisse um servidor de aplicativos e uma nuvem para aplicativos Java SE. Essas bibliotecas podem ser usadas separadamente umas das outras, mas se usadas juntas, fornecerão ao desenvolvedor a criação de uma estrutura de microsserviço: configuração inicial, subsistema de segurança e servidor da web.
Já estão sendo feitas tentativas para criar sistemas de microsserviço padrão do MicroProfile. O MicroProfile é bastante popular na comunidade Java EE / Jakarta EE e fornece uma experiência de desenvolvimento semelhante ao Java EE. Gostamos da ideia e apoiamos essa iniciativa. Helidon implementa o MicroProfile 1.1. Continuaremos trabalhando na introdução de novas versões do MicroProfile e pretendemos manter os padrões relevantes de Jakarta EE nessa área, como eles já estão descritos.
O Helidon é fabricado em Oracle, portanto, não se surpreenda com a integração com o Oracle Cloud. Eles não estão incluídos na versão inicial, mas serão adicionados mais tarde. Helidon já é usado por muitos projetos internos da Oracle e essas integrações simplificam a vida de nossos desenvolvedores. Acreditamos que isso simplificará sua vida se você usar o Oracle Cloud. Caso contrário, essas integrações são opcionais.
Classificação
As estruturas Java para gravação de microsserviços se enquadram em várias categorias, de pequenas a grandes:
- Microframework - simples, engraçado, com um conjunto intencionalmente limitado de recursos, por exemplo: Spark, Javalin, Micronaut e outros.
- MicroProfile - Mais familiar para desenvolvedores de Java EE, mas um pouco "mais difícil". Alguns deles são desenvolvidos sobre servidores de aplicativos Java EE, por exemplo: Thorntail (anteriormente Wildfly Swarm), OpenLiberty, Payara.
- Pilha completa - completo , como Spring Boot.
Helidon vem em dois sabores e pertence a duas categorias: Microframeworks e MicroProfile.
- Helidon SE é um microframework simples, funcional e leve, projetado em um estilo reativo moderno. Não há "mágica" nele. Nenhum ambiente especial é necessário; o JDK é usado como ele.
- Helidon MP é uma implementação do Microprofile Eclipse que fornece um estilo de desenvolvimento familiar aos desenvolvedores Java EE / Jakarta EE.
Arquitetura
A arquitetura de Helidon é mostrada abaixo.
Os componentes do Helidon SE são verdes, incluindo Config, Segurança e RxServer.
Os componentes Java EE / Jakarta EE estão acinzentados, incluindo JSON-P, JAX-RS / Jersey e CDI. Eles precisam de uma implementação de MicroProfile. Helidon MP é uma camada em cima do componente Helidon SE. Os componentes adicionais dos serviços Oracle Cloud estão em vermelho e podem ser usados pelos componentes Helidon SE e Helidon MP.
Exemplos de uso
Instalação
A maneira mais fácil de iniciar o Helidon é ter um projeto Maven em Java 8 (ou superior), no qual você especifica o bom-pom do Helidon e as dependências mínimas:
<dependencyManagement> <dependencies> <dependency> <groupId>io.helidon</groupId> <artifactId>helidon-bom</artifactId> <version>${helidon-version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ..... <dependency> <groupId>io.helidon.webserver</groupId> <artifactId>helidon-webserver-netty</artifactId> </dependency>
Helidon se
Helidon SE é a base para microsserviços reativos leves. Exemplo "Olá, mundo":
import io.helidon.webserver.Routing; import io.helidon.webserver.WebServer; ..... Routing routing = Routing.builder() .get("/hello", (req, res) -> res.send("Hello World")) .build(); WebServer.create(routing) .start();
Nesse caso, iniciamos o servidor da web em uma porta arbitrária (gratuita) e abrimos o acesso via / hello.
Adicionando métricas
Agora, adicionamos a implementação de interfaces MicroProfile Metrics para Helidon SE (sem suporte a DI, pois isso não está incluído no SE). Isso exigirá as seguintes dependências:
<dependency> <groupId>io.helidon.metrics</groupId> <artifactId>helidon-metrics-se</artifactId> </dependency>
Implementação:
Agora, temos os seguintes pontos de extremidade disponíveis:
- / metrics - todas as métricas básicas
- / metrics / application / helloCounter - métricas criadas pelo aplicativo "hello world"
Helidon mp
Helidon MP é uma implementação e tempo de execução do Microprofile Eclipse para microsserviços.
Para criar um aplicativo "Hello world" que usa métricas de chamada, você deve criar uma classe de recurso JAX-RS para manipular solicitações:
@Path("hello") @RequestScoped
e, em seguida, inicie o servidor com este recurso:
Server.builder() .addResourceClass(HelloWorld.class) .build() .start();
Você também precisa criar beans.xml no diretório src / main / resources / META-INF para ativar o CDI:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd" bean-discovery-mode="annotated"> </beans>
Com essa configuração, o servidor da web será iniciado na porta padrão (7001) e abrirá o acesso via / hello. . Os seguintes pontos de extremidade estarão disponíveis:
- localhost : 7001 / hello - o próprio aplicativo hello world
- localhost : 7001 / metrics - métricas de microprofile
- localhost : 7001 / metrics / application / com.oracle.tlanger.HelloWorld.hello - métricas do nosso aplicativo "hello world"
- localhost : 7001 / health - métricas de estado do MicroProfile
Planos
Temos muitos planos adequados para um artigo separado.
Nosso objetivo a curto prazo é cobrir e apresentar o Helidon na comunidade Java. Planejamos conversar sobre Helidon em algumas conferências. Quatro relatórios Helidon já foram agendados para o Oracle Code One 2018. Também solicitamos o EclipseCon Europe 2018 e participaremos do Jakarta EE / MicroProfile Community Day. Materiais de treinamento, como vídeos, estudos de caso, artigos etc. já em desenvolvimento e será publicado em breve.
Quanto ao lado técnico, estamos trabalhando na implementação da próxima versão do MicroProfile, suporte GraalVM.
Estamos trabalhando em outras coisas legais, mas até agora não podemos revelar todas as cartas. Fique conosco, anunciaremos novos recursos assim que estiverem prontos.
Fontes
Você pode estar interessado nisso:
- Inicialmente, o nome era J4C (Java for Cloud)
- Helidon está sendo desenvolvido por uma equipe distribuída de Praga e dos EUA.
- Helidon já é usado por mais de dez projetos no Oracle
- Alguns componentes Helidon ainda estão em desenvolvimento e estarão disponíveis ao público após algum tempo.