Quarkus: rakenduste moderniseerimine nÀite pÔhjal helloworld JBoss EAP Quickstartis

Tere kÔigile sellel blogis ja siin on neljas postitus Quarkuse sarjast!

Quarkus: rakenduste moderniseerimine nÀite pÔhjal helloworld JBoss EAP Quickstartis

Eelmise postituse teema oli see, kuidas Quarkus ĂŒhendab MicroProfile’i ja Springi. Meenutame, et Quarkus positsioneeritakse kui "ĂŒlikiire subaatomaarne Java", see on "Kubernetes-centriline Java-pesa, mis on kohandatud GraalVM-i ja OpenJDK HotSpot'i, ning kogutud parimatest raamatukogudest ja standarditest". TĂ€na nĂ€itame, kuidas uuendada juba olemasolevaid Java-rakendusi, kasutades Quarkuse funktsioone, jĂ€rgmise nĂ€ite abil helloworld rakendusest Red Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstart'i hoidlast, kus kasutatakse Quarkuses toetatud tehnoloogiaid CDI ja Servlet 3.

Siin on oluline mÀrkida, et nii Quarkus kui ka JBoss EAP keskenduvad tööriistadele, mis on maksimaalselt pÔhinenud standarditel. Kas teie rakendus ei tööta JBoss EAP-l? Pole probleemi, seda saab hÔlpsasti migreerida praeguselt rakendusserverilt JBoss EAP-le kasutades Red Hat Application Migration Toolkit. PÀrast seda on lÔplik ja töötav versioon moderniseeritud koodist saadaval hoidlas github.com/mrizzi/jboss-eap-quickstarts/tree/quarkus, moodulis helloworld.

Selle postituse kirjutamisel kasutati Quarkuse juhendeid, peamiselt Creating Your First Application ja Building a.

Native Executable

Saame koodi Esiteks loome kohaliku klooni hoidlast:

$ git clone https://github.com/jboss-developer/jboss-eap-quickstarts.git
Kloonimine '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/

Vaadake, kuidas originaal helloworld töötab

Oma olemuselt on selle rakenduse sisu nimest arusaadav, kuid me uuendame selle koodi rangelt teaduslikult. SeetÔttu vaatame esmalt seda rakendust selle algses vormis.

KĂ€ivitame helloworldi

1. Avage terminal ja minge JBoss EAP kausta juure, kuhu selle alla laadida siin), st EAP_HOME kausta.

2. KĂ€ivitage JBoss EAP server vaikimisi profiiliga:

$ EAP_HOME/bin/standalone.sh

MĂ€rkus: Windowsi puhul kasutage skripti EAP_HOMEbinstandalone.bat.

MÔne sekundi pÀrast peaks logis ilmuma umbes midagi sellist:

[org.jboss.as] (Controller Boot Thread) WFLYSRV0025: JBoss EAP 7.2.0.GA (WildFly Core 6.0.11.Final-redhat-00001) kÀivitatud 3315ms - KÀivitati 306 527 teenust (321 teenust on laisk, passiivne vÔi nÔudmisel)

3. Avage brauseris 127.0.0.1:8080 ja nÀete seda:

Quarkus: rakenduste moderniseerimine nÀite pÔhjal helloworld JBoss EAP Quickstartis

Joon. 1. JBoss EAP avaleht.

4. JÀrgige juhendites olevaid juhiseid Build and Deploy the Quickstart: kÀivitame helloworld ja tÀidame (projekti juurkataloogis) jÀrgmise kÀskluse:

$ mvn clean install wildfly:deploy

Kuna see kÀsklus on edukalt tÀidetud, nÀeme logis umbes jÀrgmist:

[INFO] ------------------------------------------------------------------------ 
[INFO] EHITUS ÕNNESTUS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Kokku vÔetud aeg: 8.224 s

Seega kestis helloworld rakenduse esmane juurutamine JBoss EAP-s natuke ĂŒle 8 sekundi.

Testime helloworld

JÀrgides tÀpselt juhiseid Rakendusele juurdepÀÀs, avame brauseris 127.0.0.1:8080/helloworld ja nÀeme jÀrgmist:

Quarkus: rakenduste moderniseerimine nÀite pÔhjal helloworld JBoss EAP Quickstartis

Joonis 2. Algne Hello World JBoss EAP-st.

Teeme muudatusi

Muudame sisendparameetri createHelloMessage(String name) World aga Marco-ks:

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

Uuesti tÀidame jÀrgmise kÀskluse:

$ mvn clean install wildfly:deploy

SeejÀrel vÀrskendame brauseri lehte ja nÀeme, et tekst on muutunud:

Quarkus: rakenduste moderniseerimine nÀite pÔhjal helloworld JBoss EAP Quickstartis

Joonis 3. Hello Marco JBoss EAP-s.

TĂŒhistame helloworld juurutamise ja lĂ”petame JBoss EAP töö

See ei ole kohustuslik, kuid kui soovite juurutamist tĂŒhistada, siis saate seda teha jĂ€rgmise kĂ€sklusega:

$ mvn clean install wildfly:undeploy

JBoss EAP eksemplari lÔpetamiseks vajutage lihtsalt Ctrl+C terminaliaknas.

Uuendame helloworld

NĂŒĂŒd tegeleme algse helloworld rakenduse uuendamisega.

Loome uue haru

Loome uue tööharu pÀrast quickstart projekti tÀitmist:

$ git checkout -b quarkus 7.2.0.GA

Muudame faili pom.xml

Rakenduse muutmise alustame failist pom.xml. Et Quarkus saaks sinna lisada XML-bloke, tÀidame jÀrgmise kÀskluse helloworld kataloogis:

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

KĂ€esoleva artikli kirjutamise ajal kasutati versiooni 0.23.2. Quarkusel ilmub sageli uusi versioone, viimase versiooni leidmiseks kĂŒlastage github.com/quarkusio/quarkus/releases/latest.

Ülaltoodud kĂ€sk lisab pom.xml jĂ€rgmised elemendid:

  • Omadus , mis mÀÀrab kasutatava Quarkus versiooni.
  • Block Quarkus BOM-i (materjalide arve) importimiseks, et iga Quarkus sĂ”ltuvuse jaoks versiooni juurde ei lisataks.
  • quarkus-maven-plugin, mis vastutab rakenduse pakkimise ja arendusreĆŸiimi pakkumise eest.
  • Native profiil rakenduse kĂ€ivitatavate failide loomiseks.

Lisaks viime pom.xml faili kÀsitsi sisse jÀrgmised muudatused:

  1. TÔmbame sildi plokist vÀlja ja asetame selle sildi kohale. Kuna jÀrgmises etapis eemaldame ploki , tuleb sÀilitada.
  2. Eemaldame bloki , kuna selle rakenduse jaoks ei ole Quarkusega enam vajalik JBossi vanem pom.
  3. Lisame sildi ja asetame selle sildi alla. Versiooni numbri vÔite mÀÀrata, nagu soovite.
  4. Eemaldame sildi , kuna see rakendus ei ole enam WAR, vaid tavaline JAR.
  5. Muudame jÀrgmisi sÔltuvusi:
    1. Vahetame sĂ”ltuvuse javax.enterprise:cdi-api io.quarkus:quarkus-arc vastu, eemaldades provided, kuna (vastavalt dokumentatsioonile) see Quarkus-i laiendus tagab CDI sĂ”ltuvuse sĂŒstimise.
    2. Vahetame sÔltuvuse org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec io.quarkus:quarkus-undertow vastu, eemaldades provided, kuna (vastavalt dokumentatsioonile) see Quarkus-i laiendus tagab Servletide toe.
    3. Eemaldame sÔltuvuse org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec, kuna see on kaasas sÔltuvustega, mida just muutsime.

Muudetud pom.xml faili versioon on saadaval aadressil github.com/mrizzi/jboss-eap-quickstarts/blob/quarkus/helloworld/pom.xml.

Pange tĂ€hele, et ĂŒlaltoodud kĂ€sk mvn io.quarkus:quarkus-maven-plugin:0.23.2:create ei muudab mitte ainult pom.xml faili, vaid lisab projekti hulga komponente, nimelt jĂ€rgmised failid ja kaustad:

  • Fail mvnw ja mvnw.cmd ning kaust .mvn: Maven Wrapper vĂ”imaldab teil kĂ€ivitada Maven projekte mÀÀratud versiooniga ilma selle versiooni installimiseta.
  • Kaust docker (kaustas src/main/): siin on nĂ€idis Dockerfile faile native ja jvm reĆŸiimide jaoks (koos faili .dockerignore).
  • Kaust resources (kaustas src/main/): siin on tĂŒhi fail application.properties ja nĂ€idis Quarkus'i stardileht index.html (ĂŒlaltoodu kohta, vaata Run the modernized helloworld ).

KĂ€ivitame helloworld
Rakenduse testimiseks kasutame quarkus:dev, mis kĂ€ivitab Quarkuse arendusreĆŸiimis (ĂŒlaltoodud, vaata seda jaotist juhendis ArendusreĆŸiim).

MÀrkus: see samm toob oodatult kaasa vea, kuna me ei ole veel kÔik vajalikud muudatused teinud.

NĂŒĂŒd kĂ€ivitame kĂ€su, et kontrollida, kuidas see töötab:

$ ./mvnw compile quarkus:dev
[INFO] Otsitakse projekte...
[INFO]
[INFO] ----------------< org.jboss.eap.quickstarts:helloworld >----------------
[INFO] Ehitatakse Quickstart: helloworld quarkus
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---
[INFO] Kasutatakse 'UTF-8' kodeeringut filtreeritud ressursside kopeerimiseks.
[INFO] Kopeeritakse 2 ressursi
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---
[INFO] Midagi pole kompileerida - kÔik klassid on ajakohased
[INFO]
[INFO] --- quarkus-maven-plugin:0.23.2:dev (default-cli) @ helloworld ---
Oodatakse transport dt_socket aadressil: 5005
INFO  [io.qua.dep.QuarkusAugmentor] Algab quarkus'i tÀiendamine
INFO  [org.jbo.threads] JBoss Threads versioon 3.0.0.Final
ERROR [io.qua.dev.DevModeMain] Quarkus'i kÀivitamine ebaÔnnestus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Ehitus ebaÔnnestus: Ehitus ebaÔnnestus vigade tÔttu
	[error]: Ehitus etapp io.quarkus.arc.deployment.ArcProcessor#validate viskas erandi: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Rahuldamata sĂ”ltuvus tĂŒĂŒbi org.jboss.as.quickstarts.helloworld.HelloService ja kvalifikaatorite [@Default]
	- java liik: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService
	- deklareeritud KLASI bean'il [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)
PĂ”hjus: javax.enterprise.inject.UnsatisfiedResolutionException: Rahuldamata sĂ”ltuvus tĂŒĂŒbi org.jboss.as.quickstarts.helloworld.HelloService ja kvalifikaatorite [@Default]
	- java liik: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService
	- deklareeritud KLASI bean'il [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 rohkem

Nii, ei tööta... Aga miks?

UnsatisfiedResolutionException nĂ€itab klassi HelloService, mis on osa klassist HelloWorldServlet (java liikmed: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService). Probleem on selles, et HelloWorldServlet vajab sĂŒstimist HelloService'i eksemplarist, kuid seda ei leita (kuigi mĂ”lemad klassid asuvad samas paketis).

On aeg tagasi pöörduda dokumentatsioon ja lugeda, kuidas Quarkuses töötab SĂŒstimine, seega ka Kontekstid ja SĂ”ltuvuse SĂŒstimine (CDI). SeetĂ”ttu avame Kontekstid ja SĂ”ltuvuse SĂŒstimise juhendi ja jaotises Bean'i avastamine loeme: «Bean-i klass, millel ei ole mÀÀravat bean-annotatsiooni, ei otsita.»

Vaadake klassi HelloService – selles tĂ”epoolest ei ole sellist annotatsiooni. Seega tuleb see lisada, et Quarkus saaks bean'i otsida ja leida. Ja kuna see on stateless objekt, saame me kĂŒll lisada annotatsiooni @ApplicationScoped jĂ€rgmiselt:

@ApplicationScoped
public class HelloService {

MÀrkus: siin vÔib arenduskeskkond paluda teil lisada nÔutav pakett (vt allolevat rida), ja see tuleb kÀsitsi teha, nagu nii:

import javax.enterprise.context.ApplicationScoped;

Kui te kahtlete, millist ulatust tuleks kasutada juhul, kui algse bean'i ulatus ei ole ĂŒldse mÀÀratud, uurige dokumentatsiooni JSR 365: Kontekstid ja SĂ”ltuvuse SĂŒstimine Java 2.0—Vaikeulatus.

NĂŒĂŒd proovime uuesti kĂ€ivitada rakendust kĂ€suga .\/mvnw compile quarkus:dev:

$ .\/mvnw compile quarkus:dev
[INFO] Otsin projekte...
[INFO]
[INFO] ----------------< org.jboss.eap.quickstarts:helloworld >----------------
[INFO] Ehitan Quickstart: helloworld quarkus
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---
[INFO] Kasutatakse 'UTF-8' kodeeringut filtreeritud ressursside kopeerimiseks.
[INFO] Kopeerin 2 ressurssi
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---
[INFO] Tuletatud muudatused - kompileerin mooduli uuesti!
[INFO] Kompileerimine 2 allika faili jaoks /home/mrizzi/git/forked/jboss-eap-quickstarts/helloworld/target/classes
[INFO]
[INFO] --- quarkus-maven-plugin:0.23.2:dev (default-cli) @ helloworld ---
Kuulan transpordi dt_socket aadressil: 5005
INFO  [io.qua.dep.QuarkusAugmentor] (peamine) Algab quarkus augmentatsioon
INFO  [io.qua.dep.QuarkusAugmentor] (peamine) Quarkuse augmentatsioon lÔpetatud 576ms jooksul
INFO  [io.quarkus] (peamine) Quarkus 0.23.2 kÀivitatud 1.083s jooksul. Kuulab aadressil: http:\/\/0.0.0.0:8080
INFO  [io.quarkus] (peamine) Profiil dev aktiveeritud. Elav kodeerimine aktiveeritud.
INFO  [io.quarkus] (peamine) Installitud funktsioonid: [cdi]

NĂŒĂŒd lĂ€heb kĂ”ik veatult.

KĂ€ivitage uuendatud helloworld
Nagu logis öeldud, avame brauseris 0.0.0.0:8080 (Quarkuse vaikimisi algusleht) ja nÀeme jÀrgmist:

Quarkus: rakenduste moderniseerimine nÀite pÔhjal helloworld JBoss EAP Quickstartis

Joon. 4. Quarkuse arengu algusleht.

Selles rakenduses on annotatsioonis WebServlet jÀrgmine konteksti mÀÀratlemine:

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

SeetÔttu lÀheme brauseris aadressile 0.0.0.0:8080/HelloWorld ja nÀeme jÀrgmist:

Quarkus: rakenduste moderniseerimine nÀite pÔhjal helloworld JBoss EAP Quickstartis

Joonis 5: The Quarkus dev leht Hello World rakenduse jaoks.

Noh, kÔik töötab.

NĂŒĂŒd teeme koodis muudatusi. Pange tĂ€hele, et kĂ€sk ./mvnw compile quarkus:dev töötab endiselt ja me ei kavatse seda peatada. NĂŒĂŒd proovime teha samu – ÀÀretult lihtsaid – muudatusi koodis ja vaatame, kuidas Quarkus arendaja elu lihtsamaks teeb:

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

Salvestame faili ja seejÀrel vÀrskendame veebilehte, et nÀha kirjutist Hello Marco, nagu on nÀidatud alloleval ekraanipildil:

Quarkus: rakenduste moderniseerimine nÀite pÔhjal helloworld JBoss EAP Quickstartis

Joonis 6. Leht Hello Marco Quarkus dev-is.

NĂŒĂŒd kontrollime vĂ€ljundit terminalis:

INFO  [io.qua.dev] (vert.x-worker-thread-3) Muudetud allika faile tuvastatud, kompileerimine [ /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 peatatud 0.003s
INFO  [io.qua.dep.QuarkusAugmentor] (vert.x-worker-thread-3) Alustatakse quarkus peensuse suurendamist
INFO  [io.qua.dep.QuarkusAugmentor] (vert.x-worker-thread-3) Quarkus peensuse suurendamine lÔpetatud 232ms
INFO  [io.quarkus] (vert.x-worker-thread-3) Quarkus 0.23.2 kÀivitatud 0.257s. Kuulab aadressil: http://0.0.0.0:8080
INFO  [io.quarkus] (vert.x-worker-thread-3) Profiil dev aktiveeritud. Elav kodeerimine aktiveeritud.
INFO  [io.quarkus] (vert.x-worker-thread-3) Paigaldatud funktsioonid: [cdi]
INFO  [io.qua.dev] (vert.x-worker-thread-3) Kuum asendamise koguaeg: 0.371s

Lehe vÀrskendamine kÀivitas allika koodi muudatuste tuvastamise ja Quarkus sooritas automaatselt protseduuri "peatamine-alustamine". Ja kÔik see toimus vaid 0.371 sekundi jooksul (see ongi see "superkiire subaatomaarne Java").

Kogume helloworld paketti JAR-iks
NĂŒĂŒd, kui kood töötab nagu peab, pakime selle jĂ€rgmise kĂ€suga:

$ ./mvnw clean package

See kĂ€sk loob kaks JAR-faili kaustas /target: fail helloworld-.jar, mis on standardne artefakt, mis on loodud Maven-kĂ€suga koos projektide klasside ja ressurssidega. Ja fail helloworld—runner.jar, mis on kĂ€ivitatav JAR.

Pange tÀhele, et see ei ole uber-jar, kuna kÔik sÔltuvused on lihtsalt kopeeritud kausta /target/lib (mitte pakitud JAR-faili). SeetÔttu, et kÀivitada see JAR mujalt kaustast vÔi muul hostil, tuleb seal kopeerida nii JAR-fail kui ka kaust /lib, arvestades, et Class-Path element failis MANIFEST.MF JAR-pakendis sisaldab selget nimekirja JAR-idest kaustast lib.
Kuidas luua uber-jar rakendusi, vaata juhendist Uber-Jar loomine.

KĂ€ivitame helloworld, mis on pakitud JAR-iks

NĂŒĂŒd saame kĂ€ivitada meie JAR-i standardse Java kĂ€suga:

$ java -jar ./target/helloworld--runner.jar
INFO  [io.quarkus] (main) Quarkus 0.23.2 kÀivitamine kestis 0.673 sekundit. Kuulamine aadressil: http://0.0.0.0:8080
INFO  [io.quarkus] (main) Profiil prod aktiveeritud.
INFO  [io.quarkus] (main) Installitud omadused: [cdi]

PÀrast selle lÔpetamist avage brauser ja minge 0.0.0.0:8080 ja kontrollige, et kÔik töötab nagu peab.

Kogume helloworldi natiivseks tÀidetavaks failiks

Nii et meie helloworld töötab kui standalone Java rakendus, kasutades Quarkuse sÔltuvusi. Kuid saame minna edasi ja muuta selle natiivseks tÀidetavaks failiks.

Paigaldame GraalVM
Esiteks tuleb installida vajalikud tööriistad:

1. Laadige alla GraalVM 19.2.0.1 aadressilt github.com/oracle/graal/releases/tag/vm-19.2.0.1.

2. Pakkige lahti allalaaditud arhiiv:

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

3. Liikuge avatud kausta.

4. KÀivitage allpool toodud kÀsk, et alla laadida ja lisada natiivne pilt:

$ ./bin/gu install native-image

5. Lisage 2. sammus loodud kaust keskkonnamuutujasse GRAALVM_HOME:

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

Lisainfot ja installijuhiseid teistele operatsioonisĂŒsteemidele leiate juhendist Building a Native Executable—Prerequisites.

Kogume helloworldi natiivseks tÀidetavaks failiks
Lugege juhendit Building a Native Executable—Producing a native executable: «Ja nĂŒĂŒd loome natiivse tĂ€idetava faili meie rakenduse jaoks, et vĂ€hendada kĂ€ivitamise aega ja suurust kettal. TĂ€idetav fail sisaldab kĂ”ike, mis on vajalik rakenduse kĂ€ivitamiseks, sealhulgas JVM-masinat (tĂ€psemalt, selle kĂ€rbitud versioon, mis sisaldab ainult seda, mis on vajalik rakenduse tĂ€itmiseks) ja meie rakendust ise.»

Natiivse tÀidetava faili loomiseks tuleb aktiveerida Maven'i native-profiil:

$ ./mvnw package -Pnative

Meie kogumine kestis ĂŒhe minuti ja 10 sekundit ning lĂ”plik fail helloworld-runner loodi kaustas /target.

KÀivitame helloworldi natiivse tÀidetava faili

Eelmises etapis saime tĂ€idetava faili /target/helloworld-runner. NĂŒĂŒd kĂ€ivitame selle:

$ ./target/helloworld--runner
INFO  [io.quarkus] (main) Quarkus 0.23.2 kÀivitamine kestis 0.006 sekundit. Kuulamine aadressil: http://0.0.0.0:8080
INFO  [io.quarkus] (main) Profiil prod aktiveeritud.
INFO  [io.quarkus] (main) Installitud omadused: [cdi]

Avame taas brauseris 0.0.0.0:8080 ja kontrollime, et kÔik töötab nagu peab.

JĂ€tkub!

Me arvan, et selles postituses kÀsitletud (kuigi kÔige lihtsama nÀite pÔhjal) Java-rakenduste moderniseerimise meetodit Quarkuse vÔimaluste kasutamisel tasub reaalses elus aktiivselt rakendada. Samuti vÔite tÔenÀoliselt silmitsi seista mitmete probleemidega, mille lahendust kÀsitleme osaliselt jÀrgmises postituses, kus rÀÀgime, kuidas mÔÔta mÀlu kasutust, et hinnata jÔudluse paranemist, mis on kogu rakenduste moderniseerimise protsessi oluline osa.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster