Quarkus: Applikatioun Moderniséierung Benotzt Helloworld als Beispill vum JBoss EAP Quickstart

Moien alleguer op dësem Blog, hei ass dee véierte Post an der Quarkus-Serie!

Quarkus: Applikatioun Moderniséierung Benotzt Helloworld als Beispill vum JBoss EAP Quickstart

Viregt war iwwer wéi Quarkus MicroProfile a Fréijoer kombinéiert. Loosst eis dat erënneren Quark ass als "ultra-schnell subatomic Java" positionéiert, aka "Kubernetes-orientéiert Java Stack, ugepasst fir GraalVM an OpenJDK HotSpot a versammelt aus de beschte Bibliothéiken a Standarden." Haut wäerte mir weisen wéi existéierend Java Uwendungen mat de Fäegkeete vu Quarkus moderniséiert ginn, mam Beispill Helloworld Uwendungen vum Red Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstart Repository, déi benotzt CDI a Servlet 3 Technologien ënnerstëtzt vum Quarkus.

Et ass wichteg hei ze bemierken datt souwuel Quarkus wéi och JBoss EAP ënnersträichen d'Benotzung vun Tools déi sou Standardbaséiert wéi méiglech sinn. Hutt keng Applikatioun déi op JBoss EAP leeft? Kee Problem, et kann einfach vun Ärem aktuellen Applikatiounsserver op JBoss EAP migréiert ginn Red Hat Applikatioun Migratioun Toolkit. Duerno wäert déi lescht an funktionéierend Versioun vum moderniséierte Code am Repository verfügbar sinn github.com/mrizzi/jboss-eap-quickstarts/tree/quarkus, am Modul Moien Welt.

Wann Dir dëse Post schreift, hu mir benotzt Quarkus Tutorials, meeschtens Erstellt Är éischt Applikatioun und Bau a Native Ausféierbar.

Loosst eis de Code kréien

Als éischt, loosst eis e lokale Klon vum Repository erstellen JBoss EAP Quickstarts:

$ git clone https://github.com/jboss-developer/jboss-eap-quickstarts.git
Cloning into 'jboss-eap-quickstarts'...
remote: Enumerating objects: 148133, done.
remote: Total 148133 (delta 0), reused 0 (delta 0), pack-reused 148133
Receiving objects: 100% (148133/148133), 59.90 MiB | 7.62 MiB/s, done.
Resolving deltas: 100% (66476/66476), done.
$ cd jboss-eap-quickstarts/helloworld/

Loosst eis kucken wéi déi originell Helloworld funktionnéiert

Eigentlech ass d'Essenz vun dëser Applikatioun kloer vum Numm, awer mir wäerte säi Code strikt wëssenschaftlech moderniséieren. Dofir, loosst eis als éischt dës Applikatioun a senger ursprénglecher Form kucken.

Helloworld ofsetzen

1. Öffnen en Terminal a gitt op d'Root vum JBoss EAP Dossier (Dir kënnt et eroflueden hei), dat heescht, an den EAP_HOME Dossier.

2. Start den JBoss EAP Server mam Standardprofil:

$ EAP_HOME/bin/standalone.sh

Opgepasst: Op Windows gëtt den EAP_HOMEbinstandalone.bat Skript benotzt fir et ze starten.

No e puer Sekonnen soll eppes wéi dëst am Logbuch erscheinen:

[org.jboss.as] (Controller Boot Thread) WFLYSRV0025: JBoss EAP 7.2.0.GA (WildFly Core 6.0.11.Final-redhat-00001) started in 3315ms - Started 306 of 527 services (321 services are lazy, passive or on-demand)

3. Open an engem Browser 127.0.0.1:8080 a mir gesinn dat:

Quarkus: Applikatioun Moderniséierung Benotzt Helloworld als Beispill vum JBoss EAP Quickstart

Reis. 1. JBoss EAP Home Page.

4. Follegt d'Instruktioune am Handbuch Bauen an Deploy de Quickstart: Helloworld erweideren a lafen (vum Projet Root Dossier) de folgende Kommando:

$ mvn clean install wildfly:deploy

Nodeems Dir dëse Kommando erfollegräich ausféiert, gesi mir eppes wéi de folgenden am Logbuch:

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 8.224 s

Also, déi éischt Deployment vun der Helloworld Applikatioun op JBoss EAP huet just iwwer 8 Sekonnen gedauert.

Helloworld testen

Handlung strikt no Instruktioune Zougang zu der Applikatioun, oppen am Browser 127.0.0.1:8080/helloworld a mir gesinn dëst:

Quarkus: Applikatioun Moderniséierung Benotzt Helloworld als Beispill vum JBoss EAP Quickstart

Reis. 2. Original Hallo Welt vun JBoss EAP.

Ännerungen ze maachen

Ännert den Inputparameter createHelloMessage (String Numm) vu Welt op Marco:

writer.println("<h1>" + helloService.createHelloMessage("Marco") + "</h1>");

Fëllt de folgende Kommando nach eng Kéier aus:

$ mvn clean install wildfly:deploy

Da aktualiséieren mir d'Säit am Browser a gesinn datt den Text geännert huet:

Quarkus: Applikatioun Moderniséierung Benotzt Helloworld als Beispill vum JBoss EAP Quickstart

Reis. 3. Hallo Marco an JBoss EAP.

Roll den Helloworld Deployment zréck a schalt JBoss EAP aus

Dëst ass fakultativ, awer wann Dir d'Deployment annuléiere wëllt, kënnt Dir dat mat dem folgenden Kommando maachen:

$ mvn clean install wildfly:undeploy

Fir Är JBoss EAP Instanz auszeschalten, dréckt einfach Ctrl + C an der Terminalfenster.

Upgrade helloworld

Loosst eis elo déi originell Helloworld Applikatioun moderniséieren.

Erstellt eng nei Branche

Mir kreéieren eng nei Aarbechtszweig nodeems de Quickstart Projet ofgeschloss ass:

$ git checkout -b quarkus 7.2.0.GA

Änneren vun der pom.xml Datei

Mir fänken un d'Applikatioun vun der pom.xml Datei z'änneren. Fir Quarkus z'erméiglechen XML-Blöcke anzeginn, fuert de folgende Kommando am Helloworld-Ordner:

$ mvn io.quarkus:quarkus-maven-plugin:0.23.2:create

Wann Dir dësen Artikel schreift, gouf d'Versioun 0.23.2 benotzt. Quarkus verëffentlecht dacks nei Versiounen, Dir kënnt erausfannen wéi eng Versioun déi lescht op der Websäit ass github.com/quarkusio/quarkus/releases/latest.

Deen uewe genannte Kommando setzt déi folgend Elementer an pom.xml an:

  • Immobilie , déi spezifizéiert d'Versioun vum Quarkus fir ze benotzen.
  • Block fir Quarkus BOM (Materialrechnung) z'importéieren, fir net eng Versioun fir all Quarkus Ofhängegkeet ze addéieren.
  • De quarkus-maven-Plugin ass verantwortlech fir d'Applikatioun ze packen an d'Entwécklungsmodus ze liwweren.
  • Den gebiertege Profil fir Applikatioun ausféierbar ze kreéieren.

Zousätzlech maache mir déi folgend Ännerungen op pom.xml manuell:

  1. Den Tag erauszéien vum Block a setzt se iwwer dem Tag . Well am nächste Schrëtt wäerte mir de Block ewechhuelen , da musst Dir späicheren .
  2. E Block erofhuelen , well wann Dir mam Quarkus leeft, brauch dës Applikatioun net méi en Elterendeel vum JBoss.
  3. Füügt en Tag a setzt se ënner dem Tag . Dir kënnt d'Versiounsnummer uginn, déi Dir wëllt.
  4. Ewechzehuelen der Tag , well dës Applikatioun net méi e WAR ass, awer e reguläre JAR.
  5. Mir änneren déi folgend Ofhängegkeeten:
    1. Ännert d'Ofhängegkeet javax.enterprise:cdi-api op io.quarkus:quarkus-arc, ewechzehuelen virgesinn , zënter (no den Dokumenter) dës Quarkus Extensioun gëtt Injektioun vun CDI Ofhängegkeeten.
    2. Ännert d'Ofhängegkeet org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec op io.quarkus:quarkus-undertow, ewechzehuelen virgesinn , well (no den Dokumenter) dës Quarkus Extensioun bitt Ënnerstëtzung fir Servlets.
    3. Mir läschen d'org.jboss.spec.javax.annotation: jboss-annotations-api_1.3_spec Ofhängegkeet well et mat den Ofhängegkeeten kënnt, déi mir just geännert hunn.

D'Versioun vun der pom.xml Datei mat all den Ännerungen ass op github.com/mrizzi/jboss-eap-quickstarts/blob/quarkus/helloworld/pom.xml.

Bedenkt datt de mvn io.quarkus:quarkus-maven-plugin:0.23.2:create Kommando uewen net nëmmen d'pom.xml Datei ännert, awer och eng Rei Komponente fir de Projet bäidréit, nämlech déi folgend Dateien an Ordner:

  • D'mvnw- a mvnw.cmd-Datei an den .mvn-Ordner: Maven Wrapper erlaabt Iech Maven-Projete vun enger bestëmmter Maven-Versioun auszeféieren ouni dës Versioun z'installéieren.
  • Docker Dossier (am src/main/ Verzeichnis): Dëst enthält Beispill Dockerfiles fir gebierteg a jvm Modi (zesumme mat der .dockerignore Datei).
  • Ressourcen Dossier (am src/main/ Verzeechnes): Dëst enthält eng eidel application.properties Datei an eng Prouf Quarkus index.html Start Säit (kuckt Run déi moderniséiert Helloworld fir méi Detailer).

Helloworld starten
Fir d'Applikatioun ze testen, benotze mir quarkus:dev, deen Quarkus am Entwécklungsmodus lancéiert (fir méi Detailer, kuckt dës Sektioun am Handbuch Entwécklung Modus).

Opgepasst: Dëse Schrëtt wäert erwaart zu engem Feeler Resultat, well mir hunn nach net all néideg Ännerungen gemaach.

Loosst eis de Kommando ausféieren fir ze kucken wéi et funktionnéiert:

$ ./mvnw compile quarkus:dev
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------< org.jboss.eap.quickstarts:helloworld >----------------
[INFO] Building Quickstart: helloworld quarkus
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- quarkus-maven-plugin:0.23.2:dev (default-cli) @ helloworld ---
Listening for transport dt_socket at address: 5005
INFO  [io.qua.dep.QuarkusAugmentor] Beginning quarkus augmentation
INFO  [org.jbo.threads] JBoss Threads version 3.0.0.Final
ERROR [io.qua.dev.DevModeMain] Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.jboss.as.quickstarts.helloworld.HelloService and qualifiers [@Default]
	- java member: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService
	- declared on CLASS bean [types=[javax.servlet.ServletConfig, java.io.Serializable, org.jboss.as.quickstarts.helloworld.HelloWorldServlet, javax.servlet.GenericServlet, javax.servlet.Servlet, java.lang.Object, javax.servlet.http.HttpServlet], qualifiers=[@Default, @Any], target=org.jboss.as.quickstarts.helloworld.HelloWorldServlet]
	at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:841)
	at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:214)
	at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:106)
	at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:249)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.quarkus.deployment.ExtensionLoader$1.execute(ExtensionLoader.java:780)
	at io.quarkus.builder.BuildContext.run(BuildContext.java:415)
	at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
	at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426)
	at java.lang.Thread.run(Thread.java:748)
	at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.jboss.as.quickstarts.helloworld.HelloService and qualifiers [@Default]
	- java member: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService
	- declared on CLASS bean [types=[javax.servlet.ServletConfig, java.io.Serializable, org.jboss.as.quickstarts.helloworld.HelloWorldServlet, javax.servlet.GenericServlet, javax.servlet.Servlet, java.lang.Object, javax.servlet.http.HttpServlet], qualifiers=[@Default, @Any], target=org.jboss.as.quickstarts.helloworld.HelloWorldServlet]
	at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:428)
	at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:371)
	at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:206)
	... 14 more

Also, et funktionnéiert net ... Firwat?

D'UnsatisfiedResolutionException weist op d'HelloService Klass, déi Member vun der HelloWorldServlet Klass ass (Java Member: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService). De Problem ass datt HelloWorldServlet eng injizéiert Instanz vun HelloService brauch, an et kann net fonnt ginn (och wa béid vun dëse Klassen am selwechte Package sinn).

Et ass Zäit fir zréck ze kommen Dokumentatioun a liest wéi et am Quarkus funktionnéiert Sprëtzen, an dofir Kontexter an Ofhängegkeet Injektioun (CDI). Dofir, öffnen de Contexts and Dependency Injection Guide an an der Rubrik Bean Entdeckung mir liesen: "Eng Bouneklass déi keng Boun-definéierend Annotatioun huet gëtt net gesicht."

Loosst eis d'HelloService Klass kucken - et huet wierklech net sou eng Annotatioun. Dofir muss et derbäigesat ginn fir datt Quarkus d'Boun sichen an fannen. A well dëst e stateless Objet ass, kënne mir einfach d'@ApplicationScoped Annotatioun esou addéieren:

@ApplicationScoped
public class HelloService {

Opgepasst: hei kann d'Entwécklungsëmfeld Iech froen de erfuerderleche Package derbäi ze ginn (kuckt d'Linn hei ënnen), an Dir musst dat manuell maachen, sou:

import javax.enterprise.context.ApplicationScoped;

Wann Dir am Zweifel sidd iwwer wéi en Ëmfang soll benotzt ginn am Fall wann et guer net fir d'Quellboun uginn ass, liest d'Dokumentatioun JSR 365: Kontexter an Ofhängegkeet Injektioun fir Java 2.0 - Standard Ëmfang.

Elo probéieren mir erëm d'Applikatioun mam Kommando ze starten ./mvnw compile quarkus:dev:

$ ./mvnw compile quarkus:dev
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------< org.jboss.eap.quickstarts:helloworld >----------------
[INFO] Building Quickstart: helloworld quarkus
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /home/mrizzi/git/forked/jboss-eap-quickstarts/helloworld/target/classes
[INFO]
[INFO] --- quarkus-maven-plugin:0.23.2:dev (default-cli) @ helloworld ---
Listening for transport dt_socket at address: 5005
INFO  [io.qua.dep.QuarkusAugmentor] (main) Beginning quarkus augmentation
INFO  [io.qua.dep.QuarkusAugmentor] (main) Quarkus augmentation completed in 576ms
INFO  [io.quarkus] (main) Quarkus 0.23.2 started in 1.083s. Listening on: http://0.0.0.0:8080
INFO  [io.quarkus] (main) Profile dev activated. Live Coding activated.
INFO  [io.quarkus] (main) Installed features: [cdi]

Elo geet alles ouni Feeler.

Lancéiere vun der moderniséierter Helloworld
Wéi am Logbuch geschriwwen, öffnen et am Browser 0.0.0.0:8080 (déi Standard Quarkus Start Säit) a mir gesinn dëst:

Quarkus: Applikatioun Moderniséierung Benotzt Helloworld als Beispill vum JBoss EAP Quickstart

Reis. 4. Quarkus Dev Start Säit.

D'WebServlet Annotatioun fir dës Applikatioun enthält déi folgend Kontextdefinitioun:

@WebServlet("/HelloWorld")
public class HelloWorldServlet extends HttpServlet {

Dofir gi mir am Browser op 0.0.0.0:8080/HelloWorld a mir gesinn déi folgend:

Quarkus: Applikatioun Moderniséierung Benotzt Helloworld als Beispill vum JBoss EAP Quickstart

Reis. 5: D'Quarkus Dev Säit fir d'Hello World Applikatioun.

Gutt, alles funktionnéiert.

Loosst eis elo Ännerungen am Code maachen. Notéiert datt de ./mvnw compile quarkus:dev Kommando nach ëmmer leeft a mir hu keng Absicht et ze stoppen. Loosst eis elo probéieren déiselwecht - trivialst - Ännerunge fir de Code selwer z'applizéieren a kucken wéi Quarkus d'Liewe méi einfach mécht fir den Entwéckler:

writer.println("<h1>" + helloService.createHelloMessage("Marco") + "</h1>");

Späichert d'Datei an erfrëscht dann d'Websäit fir Hallo Marco ze gesinn, wéi am Screenshot hei ënnen gewisen:

Quarkus: Applikatioun Moderniséierung Benotzt Helloworld als Beispill vum JBoss EAP Quickstart

Reis. 6. Hallo Marco Säit am Quarkus dev.

Loosst eis elo den Ausgang am Terminal kucken:

INFO  [io.qua.dev] (vert.x-worker-thread-3) Changed source files detected, recompiling [/home/mrizzi/git/forked/jboss-eap-quickstarts/helloworld/src/main/java/org/jboss/as/quickstarts/helloworld/HelloWorldServlet.java]
INFO  [io.quarkus] (vert.x-worker-thread-3) Quarkus stopped in 0.003s
INFO  [io.qua.dep.QuarkusAugmentor] (vert.x-worker-thread-3) Beginning quarkus augmentation
INFO  [io.qua.dep.QuarkusAugmentor] (vert.x-worker-thread-3) Quarkus augmentation completed in 232ms
INFO  [io.quarkus] (vert.x-worker-thread-3) Quarkus 0.23.2 started in 0.257s. Listening on: http://0.0.0.0:8080
INFO  [io.quarkus] (vert.x-worker-thread-3) Profile dev activated. Live Coding activated.
INFO  [io.quarkus] (vert.x-worker-thread-3) Installed features: [cdi]
INFO  [io.qua.dev] (vert.x-worker-thread-3) Hot replace total time: 0.371s

D'Säitfrëschung huet d'Detectioun vun Ännerungen am Quellcode ausgeléist, a Quarkus huet automatesch eng Stop-Start Prozedur gemaach. An all dat war an nëmmen 0.371 Sekonnen fäerdeg (hei ass et, datt "ultra-schnell subatomic Java").

Helloworld an e JAR Package bauen
Elo datt de Code funktionnéiert wéi et soll, loosst eis et mat dem folgenden Kommando packen:

$ ./mvnw clean package

Dëse Kommando erstellt zwee JAR Dateien am / Target Dossier: d'helloworld-.jar Datei, déi e Standardartefakt ass, dee vum Maven Team zesumme mat de Klassen a Ressourcen vum Projet zesummegesat gëtt. An d'helloworld-runner.jar Datei, déi en ausführbare JAR ass.

Maacht weg datt dëst keen Uber-Jar ass, well all Ofhängegkeeten einfach an den /target/lib Dossier kopéiert ginn (net an eng JAR Datei verpackt). Dofir, fir dësen JAR aus engem aneren Dossier oder op engem aneren Host ze lafen, musst Dir souwuel d'JAR-Datei selwer wéi och den /lib Dossier do kopéieren, well de Class-Path Element an der MANIFEST.MF Datei am JAR Package enthält eng explizit Oplëschtung vu JARs aus lib-Ordner
Fir ze léieren wéi een uber-jar Uwendungen erstellt, kuckt w.e.g. den Tutorial Uber-Jar Kreatioun.

Lancéiere helloworld verpackt am JAR

Elo kënne mir eise JAR mat dem Standard Java Kommando lafen:

$ java -jar ./target/helloworld-<version>-runner.jar
INFO  [io.quarkus] (main) Quarkus 0.23.2 started in 0.673s. Listening on: http://0.0.0.0:8080
INFO  [io.quarkus] (main) Profile prod activated.
INFO  [io.quarkus] (main) Installed features: [cdi]

Nodeems alles gemaach ass, gitt op Äre Browser op 0.0.0.0:8080 a kontrolléiert datt alles funktionnéiert wéi et soll.

Helloworld kompiléieren an eng gebierteg ausführbar Datei

Also eis Helloworld leeft als Standalone Java Applikatioun mat Quarkus Ofhängegkeeten. Awer Dir kënnt méi wäit goen an et an eng gebierteg ausführbar Datei ëmsetzen.

GraalVM installéieren
Als éischt musst Dir déi néideg Tools installéieren:

1. Download GraalVM 19.2.0.1 vun github.com/oracle/graal/releases/tag/vm-19.2.0.1.

2. Erweidert den erofgelueden Archiv:

$ tar xvzf graalvm-ce-linux-amd64-19.2.0.1.tar.gz

3. Gitt an den Untar Dossier.

4. Fëllt de Kommando hei drënner fir de gebiertege Bild erofzelueden an ze addéieren:

$ ./bin/gu install native-image

5. Registréiert den Dossier erstallt am Schrëtt 2 an d'GRAALVM_HOME Ëmfeld Variabel:

$ export GRAALVM_HOME={untar-folder}/graalvm-ce-19.2.0.1)

Fir méi Informatiounen an Installatiounsinstruktiounen iwwer aner OSes, kuckt d'Handbuch En Native Executable bauen - Viraussetzunge.

Helloworld an eng gebierteg ausführbar Datei bauen
D'Handbuch liesen Eng gebierteg Ausféierbar bauen - eng gebierteg Ausféierbar produzéieren: "Loosst eis elo eng gebierteg ausführbar Datei fir eis Applikatioun erstellen fir seng Startzäit an d'Diskgréisst ze reduzéieren. Déi ausführbar Datei huet alles wat néideg ass fir d'Applikatioun auszeféieren, och de JVM (oder éischter, eng ofgeschnidden Versioun dovun, enthält nëmmen dat wat néideg ass fir d'Applikatioun ze lafen) an eis Applikatioun selwer.

Fir eng gebierteg ausführbar Datei ze kreéieren, musst Dir den gebiertege Maven Profil aktivéieren:

$ ./mvnw package -Pnative

Eis Build huet eng Minutt an 10 Sekonnen gedauert, an déi lescht Helloworld-Runner f Datei gouf am / Target Dossier erstallt.

Run déi gebierteg ausféierbar Helloworld

Am virege Schrëtt hu mir déi ausführbar Datei /target/helloworld-runner kritt. Loosst eis et elo lafen:

$ ./target/helloworld-<version>-runner
INFO  [io.quarkus] (main) Quarkus 0.23.2 started in 0.006s. Listening on: http://0.0.0.0:8080
INFO  [io.quarkus] (main) Profile prod activated.
INFO  [io.quarkus] (main) Installed features: [cdi]

Öffnen et nach eng Kéier am Browser 0.0.0.0:8080 a kontrolléiert datt alles funktionnéiert wéi et soll.

Fortsetzung kënnt no!

Mir gleewen datt d'Method fir Java Uwendungen ze moderniséieren mat Quarkus Fäegkeeten, déi an dësem Post diskutéiert ginn (och wann Dir en einfacht Beispill benotzt) sollt aktiv am richtege Liewen benotzt ginn. Wann Dir dëst maacht, wäert Dir wahrscheinlech eng Rei vu Probleemer begéinen, déi mir deelweis am nächste Post adresséieren, wou mir schwätzen iwwer d'Messung vum Gedächtnisverbrauch fir d'Leeschtungsverbesserungen ze bewäerten, e wichtege Bestanddeel vum ganzen Applikatiounsmoderniséierungsprozess.

Source: will.com

Setzt e Commentaire