Quarkus: Application Modernization Siv Helloworld ua piv txwv los ntawm JBoss EAP Quickstart

Nyob zoo txhua tus ntawm qhov blog no, ntawm no yog plaub tshaj tawm hauv Quarkus series!

Quarkus: Application Modernization Siv Helloworld ua piv txwv los ntawm JBoss EAP Quickstart

Ncej tas los yog hais txog yuav ua li cas Quarkus muab MicroProfile thiab Caij nplooj ntoos hlav. Cia peb nco qab txog qhov ntawd quarkus yog positioned li "ultra-ceev subatomic Java", aka "Kubernetes-oriented Java pawg, tailored rau GraalVM thiab OpenJDK HotSpot thiab sib sau ua ke los ntawm cov tsev qiv ntawv zoo tshaj plaws thiab cov qauv." Niaj hnub no peb yuav qhia yuav ua li cas hloov kho cov ntawv thov Java uas twb muaj lawm siv lub peev xwm ntawm Quarkus, siv qhov piv txwv helloworld daim ntawv thov los ntawm Red Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstart repository, uas siv CDI thiab Servlet 3 thev naus laus zis txhawb nqa los ntawm Quarkus.

Nws yog ib qho tseem ceeb uas yuav tsum nco ntsoov ntawm no tias ob qho tib si Quarkus thiab JBoss EAP hais txog kev siv cov cuab yeej ua raws li cov qauv raws li qhov ua tau. Tsis muaj daim ntawv thov khiav ntawm JBoss EAP? Tsis muaj teeb meem, nws tuaj yeem txav tau yooj yim los ntawm koj daim ntawv thov tam sim no rau JBoss EAP siv Red Hat Application Migration Toolkit. Tom qab ntawd qhov kawg thiab ua haujlwm version ntawm cov txheej txheem niaj hnub yuav muaj nyob rau hauv qhov chaw cia khoom github.com/mrizzi/jboss-eap-quickstarts/tree/quarkus, nyob rau hauv lub module helloworld.

Thaum sau ntawv no peb siv Quarkus phau ntawv qhia, feem ntau Tsim Koj Thawj Daim Ntawv Thov thiab Building a Native Executable.

Wb tau lub chaws

Ua ntej ntawm tag nrho cov, cia peb tsim ib lub zos clone ntawm lub repository JBoss EAP pib sai:

$ 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/

Cia peb saib seb tus thawj helloworld ua haujlwm li cas

Qhov tseeb, cov ntsiab lus ntawm daim ntawv thov no yog qhov tseeb ntawm lub npe, tab sis peb yuav hloov kho nws cov cai nruj me ntsis kev tshawb fawb. Yog li ntawd, ua ntej, cia saib daim ntawv thov no hauv nws daim ntawv qub.

Deploying helloworld

1. Qhib lub davhlau ya nyob twg thiab mus rau hauv paus ntawm JBoss EAP nplaub tshev (koj tuaj yeem rub tawm nws no), uas yog, mus rau EAP_HOME folder.

2. Tua tawm JBoss EAP server nrog lub neej ntawd profile:

$ EAP_HOME/bin/standalone.sh

Nco ntsoov: Ntawm Windows, EAP_HOMEbinstandalone.bat tsab ntawv yog siv los tso nws.

Tom qab ob peb feeb, ib yam dab tsi zoo li no yuav tsum tshwm sim hauv lub cav:

[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. Qhib qhov browser 127.0.0.1:8080 and we see this:

Quarkus: Application Modernization Siv Helloworld ua piv txwv los ntawm JBoss EAP Quickstart

Rice. 1. JBoss EAP Home Page.

4. Ua raws li cov lus qhia hauv phau ntawv qhia Tsim thiab Deploy lub Quickstart: nthuav helloworld thiab khiav (los ntawm qhov project hauv paus nplaub tshev) cov lus txib hauv qab no:

$ mvn clean install wildfly:deploy

Tom qab ua tiav cov lus txib no, peb yuav pom qee yam zoo li hauv qab no hauv lub cav:

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

Yog li, thawj qhov kev xa tawm ntawm daim ntawv thov helloworld ntawm JBoss EAP tsuas yog siv sijhawm li 8 vib nas this.

Testing helloworld

Ua nruj me ntsis raws li cov lus qhia Nkag mus rau Daim Ntawv Thov, qhib hauv browser 127.0.0.1:8080/helloworld and we see this:

Quarkus: Application Modernization Siv Helloworld ua piv txwv los ntawm JBoss EAP Quickstart

Rice. 2. Thawj Nyob Zoo Ntiaj Teb los ntawm JBoss EAP.

Kev hloov pauv

Hloov cov input parameter createHelloMessage(String name) los ntawm Ntiaj Teb rau Marco:

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

Khiav cov lus txib nram qab no dua:

$ mvn clean install wildfly:deploy

Tom qab ntawd peb rov kho nplooj ntawv hauv browser thiab pom tias cov ntawv hloov pauv:

Quarkus: Application Modernization Siv Helloworld ua piv txwv los ntawm JBoss EAP Quickstart

Rice. 3. Nyob zoo Marco hauv JBoss EAP.

Yob rov qab rau helloworld xa tawm thiab kaw JBoss EAP

Qhov no yog xaiv tau, tab sis yog tias koj xav rho tawm qhov kev xa tawm, koj tuaj yeem ua tau nrog cov lus txib hauv qab no:

$ mvn clean install wildfly:undeploy

Txhawm rau kaw koj qhov JBoss EAP piv txwv, tsuas yog nias Ctrl + C hauv lub qhov rais davhlau ya nyob twg.

Txhim kho helloworld

Tam sim no cia peb hloov kho tus thawj daim ntawv thov helloworld.

Tsim ib ceg tshiab

Peb tsim ib ceg ua hauj lwm tshiab tom qab lub Quickstart project tiav:

$ git checkout -b quarkus 7.2.0.GA

Hloov cov ntaub ntawv pom.xml

Peb yuav pib hloov daim ntawv thov los ntawm pom.xml cov ntaub ntawv. Txhawm rau tso cai rau Quarkus los ntxig XML blocks rau hauv nws, khiav cov lus txib hauv qab no hauv helloworld folder:

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

Thaum sau tsab xov xwm no, version 0.23.2 tau siv. Quarkus feem ntau tso tawm cov ntawv tshiab, koj tuaj yeem nrhiav seb qhov twg yog qhov tseeb ntawm lub vev xaib github.com/quarkusio/quarkus/releases/latest.

Cov lus txib saum toj no yuav ntxig cov ntsiab lus hauv qab no rau hauv pom.xml:

  • Khoom , uas qhia txog lub version ntawm Quarkus siv.
  • Thaiv kom import Quarkus BOM (daim nqi ntawm cov ntaub ntawv), thiaj li tsis mus ntxiv ib tug version rau txhua Quarkus dependency.
  • Lub quarkus-maven-plugin yog lub luag haujlwm rau ntim cov ntawv thov thiab muab hom kev txhim kho.
  • Cov haiv neeg profile rau tsim daim ntawv thov executables.

Ntxiv mus, peb manually hloov cov nram qab no rau pom.xml:

  1. Rub tawm tag los ntawm block thiab muab tso rau saum lub cim . Vim tias nyob rau hauv cov kauj ruam tom ntej peb yuav tshem tawm qhov thaiv , ces koj yuav tsum tau txuag .
  2. Tshem tawm ib qho thaiv , vim tias thaum khiav nrog Quarkus, daim ntawv thov no yuav tsis xav tau niam txiv pom los ntawm JBoss lawm.
  3. Ntxiv tag thiab muab tso rau hauv qab lub cim . Koj tuaj yeem qhia tus lej version koj xav tau.
  4. Tshem tag , txij li daim ntawv thov no tsis yog WAR, tab sis yog JAR li niaj zaus.
  5. Peb hloov kho cov kev vam meej hauv qab no:
    1. Hloov qhov kev vam meej javax.enterprise:cdi-api rau io.quarkus:quarkus-arc, tshem tawm muab , txij li (raws li cov ntaub ntawv) qhov no Quarkus txuas ntxiv muab kev txhaj tshuaj ntawm CDI kev vam meej.
    2. Hloov qhov kev vam meej org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec rau io.quarkus:quarkus-undertow, tshem tawm muab , vim hais tias (raws li cov ntaub ntawv) qhov no Quarkus txuas ntxiv muab kev txhawb nqa rau servlets.
    3. Peb tshem tawm org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec kev vam khom vim nws los nrog cov kev vam khom peb nyuam qhuav hloov.

Lub version ntawm cov ntaub ntawv pom.xml nrog tag nrho cov kev hloov pauv nyob ntawm github.com/mrizzi/jboss-eap-quickstarts/blob/quarkus/helloworld/pom.xml.

Nco ntsoov tias mvn io.quarkus:quarkus-maven-plugin: 0.23.2: tsim cov lus txib saum toj no tsis tsuas yog hloov cov ntaub ntawv pom.xml, tab sis kuj ntxiv ntau cov khoom rau qhov project, uas yog cov ntaub ntawv hauv qab no thiab folders:

  • Cov ntaub ntawv mvnw thiab mvnw.cmd thiab .mvn nplaub tshev: Maven Wrapper tso cai rau koj los khiav Maven tej yaam num ntawm ib tug muab Maven version yam tsis tau txhim kho qhov version.
  • Docker folder (hauv src/main/ directory): Qhov no muaj piv txwv Dockerfiles rau haiv neeg thiab jvm hom (nrog rau cov ntaub ntawv .dockerignore).
  • Cov ntaub ntawv khaws cia (hauv src/main/ directory): Qhov no muaj cov ntaub ntawv khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob khoob

Tua tawm helloworld
Txhawm rau kuaj daim ntawv thov, peb siv quarkus: dev, uas tso tawm Quarkus hauv hom kev txhim kho (kom paub meej ntxiv, saib tshooj no hauv phau ntawv qhia Hom kev txhim kho).

Nco ntsoov: Cov kauj ruam no yuav cia siab tias yuav ua rau muaj qhov yuam kev, txij li peb tseem tsis tau hloov pauv txhua qhov tsim nyog.

Tam sim no cia peb khiav cov lus txib kom pom nws ua haujlwm li cas:

$ ./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

Yog li, nws tsis ua haujlwm ... Vim li cas?

Lub UnsatisfiedResolutionException taw qhia rau chav HelloService, uas yog ib tug tswv cuab ntawm HelloWorldServlet chav kawm (java member: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService). Qhov teeb meem yog tias HelloWorldServlet xav tau qhov kev txhaj tshuaj ntawm HelloService, thiab nws nrhiav tsis tau (txawm tias ob chav kawm no nyob hauv tib pob).

Nws yog lub sijhawm rov qab los cov ntaub ntawv thiab nyeem nws ua haujlwm li cas hauv Quarkus Txhaj, thiab yog li ntawd Cov ntsiab lus thiab Kev Txhaum Cai (CDI). Yog li ntawd, qhib Cov Lus Qhia thiab Kev Cia Siab Kev Txhaum Cai thiab hauv ntu Taum Discovery peb nyeem: "Ib chav kawm taum uas tsis muaj cov lus piav qhia taum txhais tsis tau tshawb nrhiav."

Cia peb saib ntawm HelloService chav kawm - nws yeej tsis muaj cov lus piav qhia zoo li no. Yog li ntawd, nws yuav tsum tau ntxiv kom Quarkus tuaj yeem tshawb nrhiav thiab pom taum. Thiab txij li qhov no yog cov khoom tsis muaj lub xeev, peb tuaj yeem yooj yim ntxiv @ApplicationScoped annotation zoo li no:

@ApplicationScoped
public class HelloService {

Nco ntsoov: ntawm no qhov chaw loj hlob tuaj yeem hais kom koj ntxiv cov pob uas xav tau (saib kab hauv qab), thiab koj yuav tau ua qhov no manually, zoo li qhov no:

import javax.enterprise.context.ApplicationScoped;

Yog tias koj tsis ntseeg txog qhov twg yuav tsum tau siv nyob rau hauv rooj plaub thaum nws tsis tau teev tseg rau lub hauv paus taum txhua, nyeem cov ntaub ntawv JSR 365: Cov Ntsiab Lus thiab Kev Cia Siab Rau Kev Txhaum Cai rau Java 2.0-Cov Txheej Txheem Default.

Tam sim no peb rov sim tso daim ntawv thov nrog cov lus txib ./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]

Tam sim no txhua yam mus yam tsis muaj qhov yuam kev.

Launching lub modernized helloworld
Raws li sau rau hauv lub cav, qhib nws hauv qhov browser 0.0.0.0:8080 (lub neej ntawd Quarkus nplooj pib) thiab peb pom qhov no:

Quarkus: Application Modernization Siv Helloworld ua piv txwv los ntawm JBoss EAP Quickstart

Rice. 4. Quarkus dev pib nplooj.

WebServlet annotation rau daim ntawv thov no muaj cov ntsiab lus hauv qab no:

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

Yog li ntawd, peb mus rau hauv qhov browser mus 0.0.0.0:8080/HelloWorld thiab peb pom cov hauv qab no:

Quarkus: Application Modernization Siv Helloworld ua piv txwv los ntawm JBoss EAP Quickstart

Rice. 5: Quarkus dev nplooj ntawv rau daim ntawv thov Nyob Zoo Ntiaj Teb.

Zoo, txhua yam ua haujlwm.

Tam sim no cia peb hloov cov cai. Nco ntsoov tias ./mvnw compile quarkus:dev hais kom ua tseem tab tom ua haujlwm thiab peb tsis muaj lub hom phiaj txwv nws. Tam sim no cia peb sim siv tib yam - tsis tseem ceeb - hloov pauv rau tus lej nws tus kheej thiab pom tias Quarkus ua rau lub neej yooj yim dua rau tus tsim tawm:

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

Txuag cov ntaub ntawv thiab tom qab ntawd hloov kho lub vev xaib kom pom nyob zoo Marco, raws li qhia hauv lub screenshot hauv qab no:

Quarkus: Application Modernization Siv Helloworld ua piv txwv los ntawm JBoss EAP Quickstart

Rice. 6. Nyob zoo Marco nplooj ntawv hauv Quarkus dev.

Tam sim no cia peb kuaj cov zis hauv lub davhlau ya nyob twg:

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

Nplooj ntawv tshiab ua rau pom qhov hloov pauv hauv qhov chaws, thiab Quarkus cia li ua tus txheej txheem nres. Thiab tag nrho cov no tau ua tiav hauv tsuas yog 0.371 vib nas this (ntawm no nws yog, uas "ultra-ceev subatomic Java").

Tsim helloworld rau hauv pob JAR
Tam sim no uas cov cai ua haujlwm raws li nws yuav tsum tau, cia peb ntim nws nrog cov lus txib hauv qab no:

$ ./mvnw clean package

Cov lus txib no tsim ob JAR cov ntaub ntawv hauv / lub hom phiaj nplaub tshev: helloworld-.jar cov ntaub ntawv, uas yog cov khoom qub tsim los ntawm pab pawg Maven nrog rau qhov project cov chav kawm thiab cov peev txheej. Thiab cov ntaub ntawv helloworld-runner.jar, uas yog JAR ua tiav.

Thov nco ntsoov tias qhov no tsis yog uber-jar, vim tias txhua qhov kev cia siab tsuas yog theej rau hauv / lub hom phiaj / lib nplaub tshev (tsis ntim rau hauv JAR cov ntaub ntawv). Yog li ntawd, txhawm rau khiav JAR no los ntawm lwm lub nplaub tshev lossis ntawm lwm tus tswv tsev, koj yuav tsum luam ob qho tib si JAR cov ntaub ntawv nws tus kheej thiab /lib nplaub tshev nyob rau ntawd, muab qhov Class-Path element hauv MANIFEST.MF cov ntaub ntawv hauv JAR pob muaj. ib qho kev qhia meej ntawm JARs los ntawm lib folders
Txhawm rau kawm paub yuav ua li cas los tsim uber-jar daim ntawv thov, thov mus saib cov lus qhia Uber-Jar Creation.

Tua tawm helloworld ntim hauv JAR

Tam sim no peb tuaj yeem khiav peb JAR siv tus qauv java hais kom ua:

$ 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]

Tom qab tag nrho cov no ua tiav, mus rau koj tus browser ntawm 0.0.0.0:8080 thiab xyuas tias txhua yam ua haujlwm raws li nws yuav tsum tau ua.

Compiling helloworld rau hauv cov ntaub ntawv executable ib txwm

Yog li peb helloworld khiav raws li daim ntawv thov Java standalone siv Quarkus dependencies. Tab sis koj tuaj yeem mus ntxiv thiab tig nws mus rau hauv cov ntaub ntawv ua tiav ib txwm muaj.

Txhim kho GraalVM
Ua ntej tshaj plaws, rau qhov no koj yuav tsum tau nruab cov cuab yeej tsim nyog:

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

2. Nthuav cov downloaded archive:

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

3. Mus rau lub untar nplaub tshev.

4. Khiav cov lus txib hauv qab no mus download tau thiab ntxiv cov duab ib txwm:

$ ./bin/gu install native-image

5. Sau npe rau daim nplaub tshev tsim nyob rau hauv kauj ruam 2 rau GRAALVM_HOME ib puag ncig hloov pauv:

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

Yog xav paub ntxiv thiab cov lus qhia kev teeb tsa ntawm lwm OSes, saib phau ntawv Tsim ib haiv neeg executable-yuav tsum tau ua ua ntej.

Tsim helloworld rau hauv cov ntaub ntawv ua tiav ib txwm
Nyeem phau ntawv Tsim Native Executable - Ua ib haiv neeg executable: "Tam sim no cia peb tsim cov ntaub ntawv ua tiav ib txwm ua rau peb daim ntawv thov kom txo nws lub sijhawm tso tawm thiab qhov loj me. Cov ntaub ntawv ua tiav yuav muaj txhua yam tsim nyog los khiav daim ntawv thov, suav nrog JVM (lossis theej, ib daim ntawv luv luv ntawm nws, muaj tsuas yog qhov yuav tsum tau khiav daim ntawv thov) thiab peb daim ntawv thov nws tus kheej. "

Txhawm rau tsim cov ntaub ntawv ua tiav ib txwm muaj, koj yuav tsum ua kom cov haiv neeg Maven profile:

$ ./mvnw package -Pnative

Peb qhov tsim tau siv sijhawm ib feeb thiab 10 vib nas this, thiab qhov kawg helloworld-khiav f cov ntaub ntawv tau tsim nyob rau hauv / lub hom phiaj folder.

Khiav lub haiv neeg helloworld executable

Nyob rau hauv cov kauj ruam dhau los, peb tau txais cov ntaub ntawv executable /target/helloworld-runner. Tam sim no cia peb khiav nws:

$ ./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]

Qhib nws hauv browser dua 0.0.0.0:8080 thiab xyuas tias txhua yam ua haujlwm raws li nws yuav tsum tau ua.

Π ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ слСдуСт!

Peb ntseeg hais tias cov txheej txheem ntawm kev kho tshiab Java daim ntawv thov siv Quarkus muaj peev xwm sib tham nyob rau hauv no ncej (txawm hais tias siv ib tug yooj yim piv txwv) yuav tsum nquag siv nyob rau hauv lub neej tiag tiag. Ua li no, koj yuav ntsib ntau yam teeb meem, uas peb yuav hais txog ib nrab ntawm cov ntawv tom ntej, uas peb yuav tham txog yuav ua li cas ntsuas kev nco qab los ntsuas kev ua tau zoo, yog ib feem tseem ceeb ntawm tag nrho cov txheej txheem kev ua haujlwm tshiab.

Tau qhov twg los: www.hab.com

Ntxiv ib saib