Hallo Habr! Ich präsentiere Ihnen die Übersetzung des Artikels von Dmitry Kornilov
Helidon Takes Flight . Ich bin kein Oracle-Mitarbeiter, aber ich habe einen interessanten Artikel über ein neues Framework gefunden, das immer beliebter wird. Also lass uns gehen ...
Heute ist ein guter Tag. Heute stellen wir die neue MicroProfile-Familie von Java-Frameworks zur Implementierung von Microservices vor. Das Helidon- Projekt ist das neue Java-Framework von Oracle .
Helidon, aus der griechischen Übersetzung, ist laut Wikipedia eine Schwalbe, eine Art Vogel, mit einem schlanken, stromlinienförmigen Körper und spitzen Flügeln, die eine hervorragende Manövrierfähigkeit und ... einen sehr effizienten Flug bieten. Ideal zum Fliegen in den Wolken.Einführung
Vor einiger Zeit begannen die Arbeiten an dem heutigen Helidon-Projekt. Als wir in den Markt für Cloud-Lösungen eintraten und die Microservice-Architektur für die Erstellung von Cloud-Diensten sehr beliebt wurde, wurde uns klar, dass auch die Entwicklungskompetenz erweitert werden sollte. Es ist möglich, Microservices mit Java EE zu erstellen, aber es ist besser, eine Infrastruktur zu haben, die von Grund auf neu entwickelt wurde, um Microservices zu erstellen. Wir wollten einen einfachen Satz von Bibliotheken erstellen, für die kein Anwendungsserver und keine Cloud für Java SE-Anwendungen erforderlich waren. Diese Bibliotheken können getrennt voneinander verwendet werden. Wenn sie jedoch zusammen verwendet werden, können Entwickler ein Microservice-Framework erstellen: Erstkonfiguration, Sicherheitssubsystem und Webserver.
Es wird bereits versucht, Standard-Microservice-Systeme aus MicroProfile zu erstellen. MicroProfile ist in der Java EE / Jakarta EE-Community sehr beliebt und bietet eine ähnliche Entwicklungserfahrung wie Java EE. Wir mögen die Idee und unterstützen diese Initiative. Helidon implementiert MicroProfile 1.1. Wir werden weiterhin an der Einführung neuer Versionen von MicroProfile arbeiten und beabsichtigen, die relevanten Jakarta EE-Standards in diesem Bereich beizubehalten, wie sie bereits beschrieben wurden.
Helidon wird in Oracle hergestellt. Seien Sie also nicht überrascht, dass es eine Integration mit Oracle Cloud geben wird. Sie sind nicht in der ursprünglichen Version enthalten, werden aber später hinzugefügt. Helidon wird bereits von vielen internen Oracle-Projekten verwendet, und diese Integrationen vereinfachen das Leben unserer Entwickler. Wir glauben, dass dies Ihr Leben vereinfachen wird, wenn Sie Oracle Cloud verwenden. Wenn nicht, sind diese Integrationen optional.
Klassifizierung
Das Schreiben von Microservice-Java-Frameworks fällt in verschiedene Kategorien, von klein bis groß:
- Mikroframeworks - einfach, witzig, mit absichtlich begrenzten Funktionen, zum Beispiel: Spark, Javalin, Micronaut und andere.
- MicroProfile - Java EE-Entwicklern besser bekannt, aber etwas "schwieriger". Einige von ihnen werden auf Java EE-Anwendungsservern entwickelt, z. B. Thorntail (ehemals Wildfly Swarm), OpenLiberty, Payara.
- Full Stack - Voll funktionsfähig, z. B. Spring Boot.
Helidon gibt es in zwei Varianten und gehört zu zwei Kategorien: Microframeworks und MicroProfile.
- Helidon SE ist ein einfaches, funktionales und leichtes Mikroframework, das in einem modernen reaktiven Stil gestaltet ist. Es ist keine "Magie" darin. Es ist keine spezielle Umgebung erforderlich, da JDK verwendet wird.
- Helidon MP ist eine Eclipse Microprofile-Implementierung, die einen Entwicklungsstil bietet, der Java EE / Jakarta EE-Entwicklern vertraut ist.
Architektur
Helidons Architektur ist unten dargestellt.
Helidon SE-Komponenten sind grün, einschließlich Config, Security und RxServer.
Java EE / Jakarta EE-Komponenten, einschließlich JSON-P, JAX-RS / Jersey und CDI, sind ausgegraut. Sie benötigen eine MicroProfile-Implementierung. Helidon MP ist eine Schicht auf der Helidon SE-Komponente. Zusätzliche Komponenten der Oracle Cloud-Dienste sind rot gefärbt und können sowohl von Helidon SE- als auch von Helidon MP-Komponenten verwendet werden.
Anwendungsbeispiele
Installation
Der einfachste Weg, um mit Helidon zu beginnen, ist ein Maven-Projekt in Java 8 (oder höher), in dem Sie Helidon bom-pom und minimale Abhängigkeiten angeben:
<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
Die Helidon SE ist die Grundlage für leichte reaktive Mikrodienste. Beispiel "Hallo Welt":
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();
In diesem Fall starten wir den Webserver an einem beliebigen (freien) Port und öffnen den Zugriff über / hello.
Metriken hinzufügen
Jetzt fügen wir die Implementierung von MicroProfile Metrics-Schnittstellen für Helidon SE hinzu (ohne DI-Unterstützung, da dies nicht in SE enthalten ist). Dies erfordert die folgenden Abhängigkeiten:
<dependency> <groupId>io.helidon.metrics</groupId> <artifactId>helidon-metrics-se</artifactId> </dependency>
Implementierung:
Jetzt stehen folgende Endpunkte zur Verfügung:
- /metrics - alle grundlegenden Metriken
- /metrics / application / helloCounter - Metriken, die von der Anwendung "hello world" erstellt wurden
Helidon mp
Helidon MP ist eine Eclipse Microprofile-Implementierung und Laufzeit für Microservices.
Um eine "Hello World" -Anwendung zu erstellen, die Anrufmetriken verwendet, müssen Sie eine JAX-RS-Ressourcenklasse erstellen, um Anforderungen zu verarbeiten:
@Path("hello") @RequestScoped
Starten Sie dann den Server mit dieser Ressource:
Server.builder() .addResourceClass(HelloWorld.class) .build() .start();
Sie müssen auch beans.xml im Verzeichnis src / main / resources / META-INF erstellen, um CDI zu aktivieren:
<?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>
Mit dieser Konfiguration wird der Webserver am Standardport (7001) gestartet und über / hello geöffnet . . Die folgenden Endpunkte sind verfügbar:
- localhost : 7001 / hello - die Hallo-Welt-Anwendung selbst
- localhost : 7001 / Metriken - MicroProfile-Metriken
- localhost : 7001 /metrics / application / com.oracle.tlanger.HelloWorld.hello - Metriken unserer "Hallo Welt" -Anwendung
- localhost : 7001 / health - MicroProfile-Statusmetriken
Pläne
Wir haben viele Pläne, die für einen separaten Artikel geeignet sind.
Unser kurzfristiges Ziel ist es, Helidon in der Java-Community zu behandeln und einzuführen. Wir planen, auf einigen Konferenzen über Helidon zu sprechen. Für Oracle Code One 2018 sind bereits vier Helidon-Berichte geplant. Wir haben uns auch für die EclipseCon Europe 2018 beworben und werden am Jakarta EE / MicroProfile Community Day teilnehmen. Schulungsmaterialien wie Videos, Fallstudien, Artikel usw. bereits in der Entwicklung und wird in Kürze veröffentlicht.
Was die technische Seite betrifft, arbeiten wir an der Implementierung der nächsten Version von MicroProfile, der GraalVM-Unterstützung.
Wir arbeiten an anderen coolen Sachen, aber bisher können wir nicht alle Karten aufdecken. Bleiben Sie bei uns, wir werden neue Funktionen bekannt geben, sobald sie fertig sind.
Quellen
Das könnte Sie interessieren:
- Ursprünglich hieß der Name J4C (Java for Cloud)
- Helidon wird von einem verteilten Team aus Prag und den USA entwickelt.
- Helidon wird bereits von mehr als zehn Projekten in Oracle verwendet
- Einige Helidon-Komponenten befinden sich noch in der Entwicklung und werden nach einiger Zeit öffentlich verfügbar sein.