El ascenso de Helidon

Hola Habr! Les presento la traducción del artículo de Dmitry Kornilov Helidon Takes Flight . No soy un empleado de Oracle, pero encontré un artículo interesante sobre un nuevo y creciente tipo de framework. Entonces vamos ...

Hoy es un buen dia. Hoy presentamos la nueva familia MicroProfile de frameworks Java para implementar microservicios. El proyecto Helidon es el nuevo marco Java de Oracle .

Helidon, de la traducción griega, es una golondrina, un tipo de ave, según Wikipedia, con un cuerpo delgado y aerodinámico y alas puntiagudas, que proporcionan una gran maniobrabilidad y ... un vuelo muy eficiente. Ideal para volar en las nubes.

Introduccion


Hace algún tiempo, se comenzó a trabajar en lo que es el proyecto Helidon ahora. Cuando ingresamos al mercado de soluciones en la nube, y la arquitectura de microservicios se hizo muy popular para crear servicios en la nube, nos dimos cuenta de que la experiencia en desarrollo también debería ampliarse. Es posible crear microservicios utilizando Java EE, pero es mejor tener una infraestructura diseñada desde cero para crear microservicios. Queríamos crear un conjunto ligero de bibliotecas que no requirieran un servidor de aplicaciones y una nube para aplicaciones Java SE. Estas bibliotecas se pueden usar por separado, pero si se usan juntas, proporcionarán al desarrollador la creación de un marco de microservicio: configuración inicial, subsistema de seguridad y servidor web.

Ya se están haciendo intentos para crear sistemas de microservicio estándar a partir de MicroProfile. MicroProfile es bastante popular en la comunidad Java EE / Jakarta EE y proporciona una experiencia de desarrollo similar a Java EE. Nos gusta la idea y apoyamos esta iniciativa. Helidon implementa MicroProfile 1.1. Continuaremos trabajando en la introducción de nuevas versiones de MicroProfile e intentaremos mantener los estándares relevantes de Jakarta EE en esta área, como ya se describieron.

Helidon está hecho en Oracle, así que no se sorprenda de que haya integración con Oracle Cloud. No se incluyen en la versión inicial, pero se agregarán más adelante. Helidon ya es utilizado por muchos proyectos internos de Oracle y estas integraciones simplifican la vida de nuestros desarrolladores. Creemos que esto simplificará su vida si usa Oracle Cloud. Si no, estas integraciones son opcionales.

Clasificación



Los marcos de Java de escritura de microservicios se dividen en varias categorías, de pequeñas a grandes:

  • Microframeworks : simple, divertido, con un conjunto de características intencionalmente limitado, por ejemplo: Spark, Javalin, Micronaut y otros.
  • MicroProfile : más familiar para los desarrolladores de Java EE, pero un poco "más difícil". Algunos de ellos se desarrollan sobre servidores de aplicaciones Java EE, por ejemplo: Thorntail (anteriormente Wildfly Swarm), OpenLiberty, Payara.
  • Pila completa : con características completas , como Spring Boot.

Helidon viene en dos sabores y pertenece a dos categorías: Microframeworks y MicroProfile.

  • Helidon SE es un microframework simple, funcional y liviano diseñado en un estilo reactivo moderno. No hay "magia" en ello. No se requiere un entorno especial; JDK se utiliza como tal.
  • Helidon MP es una implementación de Eclipse Microprofile que proporciona un estilo de desarrollo familiar para los desarrolladores de Java EE / Jakarta EE.

Arquitectura


La arquitectura de Helidon se muestra a continuación.


Los componentes de Helidon SE son verdes, incluidos Config, Seguridad y RxServer.
Los componentes Java EE / Jakarta EE están atenuados, incluidos JSON-P, JAX-RS / Jersey y CDI. Necesitan una implementación de MicroProfile. Helidon MP es una capa en la parte superior del componente Helidon SE. Los componentes adicionales de los servicios de Oracle Cloud están coloreados en rojo y pueden ser utilizados por los componentes Helidon SE y Helidon MP.

Ejemplos de uso


Instalación


La forma más fácil de comenzar con Helidon es tener un proyecto Maven en Java 8 (o superior) en el que especifique Helidon bom-pom y dependencias 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 es la base de los microservicios reactivos ligeros. Ejemplo "Hola 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(); 

En este caso, iniciamos el servidor web en un puerto arbitrario (libre) y abrimos el acceso a través de / hello.

Agregar métricas


Ahora agregamos la implementación de interfaces MicroProfile Metrics para Helidon SE (sin compatibilidad con DI, ya que esto no está incluido en SE). Esto requerirá las siguientes dependencias:

 <dependency> <groupId>io.helidon.metrics</groupId> <artifactId>helidon-metrics-se</artifactId> </dependency> 

Implementación

 //    MetricsSupport metricsSupport = MetricsSupport.create(); //   MetricRegistry registry = RegistryFactory .getRegistryFactory() .get() .getRegistry(MetricRegistry.Type.APPLICATION); //   Counter helloCounter = registry.counter("helloCounter"); Routing routing = Routing.builder() //    web- .register(metricsSupport) .get("/hello", (req, res) -> { //   helloCounter.inc(); res.send("Hello World"); }) .build(); WebServer.create(routing) .start(); 

Ahora tenemos los siguientes puntos finales disponibles:

  • / metrics : todas las métricas básicas
  • / metrics / application / helloCounter : métricas creadas por la aplicación "hello world"

Helidon mp


Helidon MP es una implementación de Eclipse Microprofile y tiempo de ejecución para microservicios.
Para crear una aplicación de "Hola mundo" que use métricas de llamadas, debe crear una clase de recurso JAX-RS para manejar solicitudes:

 @Path("hello") @RequestScoped //   CDI public class HelloWorld { @GET @Metered public String hello() { return "Hello World"; } } 

y luego inicie el servidor con este recurso:

 Server.builder() .addResourceClass(HelloWorld.class) .build() .start(); 

También necesita crear beans.xml en el directorio src / main / resources / META-INF para activar 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> 

Con esta configuración, el servidor web se iniciará en el puerto predeterminado (7001) y se abrirá el acceso a través de / hello. . Los siguientes puntos finales estarán disponibles:

  • localhost : 7001 / hello : la aplicación hello world en sí
  • localhost : 7001 / metrics - Métricas de microperfil
  • localhost : 7001 / metrics / application / com.oracle.tlanger.HelloWorld.hello : métricas de nuestra aplicación "hello world"
  • localhost : 7001 / health - Métricas de estado de MicroProfile

Planes


Tenemos muchos planes que son adecuados para un artículo separado.

Nuestro objetivo a corto plazo es cubrir e introducir Helidon en la comunidad Java. Planeamos hablar sobre Helidon en algunas conferencias. Ya se han programado cuatro informes de Helidon para Oracle Code One 2018. También hemos solicitado EclipseCon Europe 2018 y participaremos en el Día de la Comunidad Jakarta EE / MicroProfile. Materiales de capacitación como videos, estudios de casos, artículos, etc. ya en desarrollo y será publicado próximamente.

En cuanto a la parte técnica, estamos trabajando en la implementación de la próxima versión de MicroProfile, soporte GraalVM.

Estamos trabajando en otras cosas interesantes, pero hasta ahora no podemos revelar todas las cartas. Quédese con nosotros, anunciaremos nuevas funciones tan pronto como estén listas.

Fuentes



Quizás te interese esto:


  • Inicialmente, el nombre era J4C (Java para Cloud)
  • Helidon está siendo desarrollado por un equipo distribuido de Praga y Estados Unidos.
  • Helidon ya es utilizado por más de diez proyectos en Oracle
  • Algunos componentes de Helidon todavía están en desarrollo y estarán disponibles públicamente después de un tiempo.

Source: https://habr.com/ru/post/es424607/


All Articles