La montée d'Hélidon

Bonjour, Habr! Je vous présente la traduction de l'article de Dmitry Kornilov Helidon Takes Flight . Je ne suis pas un employé d'Oracle, mais j'ai trouvé un article intéressant sur un nouveau type de framework, qui gagne en popularité. Alors allons-y ...

Aujourd'hui est une bonne journée. Aujourd'hui, nous présentons la nouvelle famille MicroProfile de frameworks Java pour l'implémentation de microservices. Le projet Helidon est le nouveau framework Java d' Oracle .

Hélidon, de la traduction grecque, est une hirondelle, un type d'oiseau, selon Wikipédia, avec un corps mince et profilé et des ailes pointues, qui offrent une grande maniabilité et ... un vol très efficace. Idéal pour voler dans les nuages.

Présentation


Il y a quelque temps, les travaux ont commencé sur le projet Helidon. Lorsque nous sommes entrés sur le marché des solutions cloud et que l'architecture de microservices est devenue très populaire pour la création de services cloud, nous avons réalisé que l'expertise en développement devait également être étendue. Il est possible de créer des microservices à l'aide de Java EE, mais il est préférable d'avoir une infrastructure conçue à partir de zéro pour créer des microservices. Nous voulions créer un ensemble léger de bibliothèques ne nécessitant pas de serveur d'applications et de cloud pour les applications Java SE. Ces bibliothèques peuvent être utilisées séparément les unes des autres, mais si elles sont utilisées ensemble, elles fourniront au développeur la création d'une infrastructure de microservices: configuration initiale, sous-système de sécurité et serveur Web.

Des tentatives sont déjà faites pour créer des systèmes de microservices standard à partir de MicroProfile. MicroProfile est assez populaire dans la communauté Java EE / Jakarta EE et offre une expérience de développement similaire à Java EE. Nous aimons l'idée et nous soutenons cette initiative. Helidon implémente MicroProfile 1.1. Nous continuerons de travailler à l'introduction de nouvelles versions de MicroProfile et avons l'intention de maintenir les normes Jakarta EE pertinentes dans ce domaine, comme elles sont déjà décrites.

Helidon est fabriqué dans Oracle, ne soyez donc pas surpris qu'il y ait intégration avec Oracle Cloud. Ils ne sont pas inclus dans la version initiale, mais seront ajoutés ultérieurement. Helidon est déjà utilisé par de nombreux projets Oracle internes et ces intégrations simplifient la vie de nos développeurs. Nous pensons que cela vous simplifiera la vie si vous utilisez Oracle Cloud. Sinon, ces intégrations sont facultatives.

Classification



Les frameworks Java d'écriture de microservices se répartissent en plusieurs catégories, de petite à grande:

  • Microframeworks - simple, drôle, avec un ensemble de fonctionnalités intentionnellement limité, par exemple: Spark, Javalin, Micronaut et autres.
  • MicroProfile - Plus familier aux développeurs Java EE, mais un peu "plus difficile". Certains d'entre eux sont développés sur des serveurs d'applications Java EE, par exemple: Thorntail (anciennement Wildfly Swarm), OpenLiberty, Payara.
  • Full Stack - Fonctionnalité complète , telle que Spring Boot.

Helidon est disponible en deux versions et appartient à deux catégories: Microframeworks et MicroProfile.

  • Helidon SE est un microframework simple, fonctionnel et léger conçu dans un style réactif moderne. Il n'y a pas de "magie" en elle. Aucun environnement spécial n'est requis; JDK est utilisé tel quel.
  • Helidon MP est une implémentation de microprofil Eclipse qui fournit un style de développement familier aux développeurs Java EE / Jakarta EE.

L'architecture


L'architecture d'Hélidon est illustrée ci-dessous.


Les composants Helidon SE sont verts, y compris Config, Security et RxServer.
Les composants Java EE / Jakarta EE sont grisés, y compris JSON-P, JAX-RS / Jersey et CDI. Ils ont besoin d'une implémentation MicroProfile. Helidon MP est une couche au-dessus du composant Helidon SE. Les composants supplémentaires des services Oracle Cloud sont colorés en rouge et peuvent être utilisés par les composants Helidon SE et Helidon MP.

Exemples d'utilisation


L'installation


La façon la plus simple de démarrer avec Helidon est d'avoir un projet Maven en Java 8 (ou supérieur) dans lequel vous spécifiez le nom de domaine Helidon et les dépendances minimales:

<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 est le fondement des microservices réactifs légers. Exemple "Bonjour tout le monde":

 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(); 

Dans ce cas, nous démarrons le serveur Web sur un port arbitraire (gratuit) et ouvrons l'accès via / hello.

Ajout de mesures


Nous ajoutons maintenant l'implémentation des interfaces MicroProfile Metrics pour Helidon SE (sans support DI, car cela n'est pas inclus dans SE). Cela nécessitera les dépendances suivantes:

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

Réalisation:

 //    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(); 

Nous avons maintenant les points de terminaison suivants disponibles:

  • / métriques - toutes les métriques de base
  • / metrics / application / helloCounter - métriques créées par l'application "hello world"

Helidon mp


Helidon MP est une implémentation et un runtime Eclipse Microprofile pour les microservices.
Pour créer une application «Hello world» qui utilise des mesures d'appel, vous devez créer une classe de ressources JAX-RS pour gérer les demandes:

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

puis démarrez le serveur avec cette ressource:

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

Vous devez également créer beans.xml dans le répertoire src / main / resources / META-INF pour activer 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> 

Avec cette configuration, le serveur web sera lancé sur le port par défaut (7001) et en accès ouvert via / hello. . Les points de terminaison suivants seront disponibles:

  • localhost : 7001 / hello - l'application hello world elle-même
  • localhost : 7001 / metrics - MicroProfile metrics
  • localhost : 7001 / metrics / application / com.oracle.tlanger.HelloWorld.hello - métriques de notre application "hello world"
  • localhost : 7001 / health - Mesures d'état du MicroProfile

Plans


Nous avons de nombreux plans qui conviennent à un article séparé.

Notre objectif à court terme est de couvrir et d'introduire Helidon dans la communauté Java. Nous prévoyons de parler d'Hélidon lors de certaines conférences. Quatre rapports Helidon ont déjà été programmés pour Oracle Code One 2018. Nous avons également postulé pour EclipseCon Europe 2018 et participerons à la Jakarta EE / MicroProfile Community Day. Supports de formation tels que vidéos, études de cas, articles, etc. déjà en développement et sera publié prochainement.

Côté technique, nous travaillons sur l'implémentation de la prochaine version de MicroProfile, le support GraalVM.

Nous travaillons sur d'autres trucs sympas, mais jusqu'à présent, nous ne pouvons pas révéler toutes les cartes. Restez avec nous, nous annoncerons de nouvelles fonctionnalités dès qu'elles seront prêtes.

Les sources



Cela pourrait vous intéresser:


  • Initialement, le nom était J4C (Java for Cloud)
  • Helidon est développé par une équipe distribuée de Prague et des États-Unis.
  • Helidon est déjà utilisé par plus de dix projets dans Oracle
  • Certains composants Helidon sont toujours en développement et seront accessibles au public après un certain temps.

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


All Articles