Quarkus: Pag-moderno sa Aplikasyon Gamit ang Helloworld isip Ehemplo gikan sa JBoss EAP Quickstart

Kumusta sa tanan niining blog, ania ang ikaupat nga post sa serye sa Quarkus!

Quarkus: Pag-moderno sa Aplikasyon Gamit ang Helloworld isip Ehemplo gikan sa JBoss EAP Quickstart

Miaging post mahitungod kung giunsa paghiusa ni Quarkus ang MicroProfile ug Spring. Pahinumdoman ka namo niana quarkus giposisyon nga "ultra-fast subatomic Java", aka "Kubernetes-oriented Java stack, gipahaum alang sa GraalVM ug OpenJDK HotSpot ug gitigum gikan sa labing maayo nga mga librarya ug mga sumbanan." Karon ipakita namon kung giunsa ang pag-modernize sa mga aplikasyon sa Java gamit ang mga kapabilidad sa Quarkus, gamit ang pananglitan helloworld nga mga aplikasyon gikan sa Red Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstart repository, nga naggamit sa CDI ug Servlet 3 nga mga teknolohiya nga gisuportahan sa Quarkus.

Mahinungdanon nga timan-an dinhi nga ang Quarkus ug JBoss EAP nagpasiugda sa paggamit sa mga himan nga gibase sa mga sumbanan kutob sa mahimo. Wala kay aplikasyon nga nagdagan sa JBoss EAP? Walay problema, kini daling mabalhin gikan sa imong kasamtangan nga server sa aplikasyon ngadto sa JBoss EAP gamit Red Hat Application Migration Toolkit. Pagkahuman niini ang katapusan ug nagtrabaho nga bersyon sa gi-moderno nga code magamit sa repository github.com/mrizzi/jboss-eap-quickstarts/tree/quarkus, sa module helloworld.

Sa pagsulat niini nga post among gigamit Mga panudlo sa Quarkus, kasagaran Paghimo sa Imong Unang Aplikasyon ug Building a Lumad nga Executable.

Atong kuhaon ang code

Una sa tanan, maghimo kita ug lokal nga clone sa repositoryo Ang JBoss EAP dali nga pagsugod:

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

Atong tan-awon kung giunsa ang orihinal nga helloworld molihok

Sa tinuud, ang esensya sa kini nga aplikasyon klaro gikan sa ngalan, apan among i-modernize ang code niini nga hugot nga siyentipiko. Busa, una, atong tan-awon kini nga aplikasyon sa orihinal nga porma niini.

Pag-deploy sa helloworld

1. Ablihi ang usa ka terminal ug adto sa gamut sa JBoss EAP folder (mahimo nimo kini i-download dinhi), nga mao, ngadto sa EAP_HOME folder.

2. Ilunsad ang JBoss EAP server nga adunay default nga profile:

$ EAP_HOME/bin/standalone.sh

Mubo nga sulat: Sa Windows, ang EAP_HOMEbinstandalone.bat nga script gigamit sa paglansad niini.

Human sa pipila ka mga segundo, usa ka butang nga sama niini kinahanglan nga makita sa log:

[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. Ablihi sa usa ka browser 127.0.0.1:8080 ug atong makita kini:

Quarkus: Pag-moderno sa Aplikasyon Gamit ang Helloworld isip Ehemplo gikan sa JBoss EAP Quickstart

bugas. 1. JBoss EAP Home Page.

4. Sunda ang mga instruksyon sa manwal Paghimo ug I-deploy ang Quickstart: pagpalapad sa helloworld ug pagdagan (gikan sa project root folder) ang mosunod nga sugo:

$ mvn clean install wildfly:deploy

Human sa malampuson nga pagpatuman niini nga sugo, atong makita ang usa ka butang sama sa mosunod sa log:

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

Mao nga, ang una nga pag-deploy sa aplikasyon sa helloworld sa JBoss EAP mikabat lang sa 8 segundos.

Pagsulay sa helloworld

Paglihok nga hugot sumala sa mga instruksyon Pag-access sa Aplikasyon, abli sa browser 127.0.0.1:8080/helloworld ug atong makita kini:

Quarkus: Pag-moderno sa Aplikasyon Gamit ang Helloworld isip Ehemplo gikan sa JBoss EAP Quickstart

bugas. 2. Orihinal nga Hello World gikan sa JBoss EAP.

Paghimo og mga kausaban

Usba ang input parameter createHelloMessage(String name) gikan sa Kalibutan ngadto sa Marco:

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

Pagdalagan pag-usab ang mosunod nga sugo:

$ mvn clean install wildfly:deploy

Dayon among i-refresh ang panid sa browser ug tan-awa nga ang teksto nausab:

Quarkus: Pag-moderno sa Aplikasyon Gamit ang Helloworld isip Ehemplo gikan sa JBoss EAP Quickstart

bugas. 3. Hello Marco sa JBoss EAP.

Ibalik ang pag-deploy sa helloworld ug isira ang JBoss EAP

Opsyonal kini, apan kung gusto nimo nga kanselahon ang pag-deploy, mahimo nimo kini gamit ang mosunud nga mando:

$ mvn clean install wildfly:undeploy

Aron masira ang imong JBoss EAP nga pananglitan, pindota lang ang Ctrl+C sa terminal window.

Pag-upgrade sa helloworld

Karon atong i-modernize ang orihinal nga aplikasyon sa helloworld.

Paghimo og bag-ong branch

Naghimo kami usa ka bag-ong sanga nga nagtrabaho pagkahuman nahuman ang proyekto sa dali nga pagsugod:

$ git checkout -b quarkus 7.2.0.GA

Pag-ilis sa pom.xml file

Magsugod kami sa pagbag-o sa aplikasyon gikan sa pom.xml file. Aron tugotan ang Quarkus sa pagsal-ot sa XML blocks niini, padagana ang mosunod nga command sa helloworld folder:

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

Sa pagsulat niini nga artikulo, ang bersyon 0.23.2 gigamit. Kanunay nga gipagawas sa Quarkus ang mga bag-ong bersyon, mahimo nimong mahibal-an kung unsang bersyon ang labing bag-o sa website github.com/quarkusio/quarkus/releases/latest.

Ang sugo sa ibabaw magsal-ot sa mosunod nga mga elemento ngadto sa pom.xml:

  • Property , nga nagtino sa bersyon sa Quarkus nga gamiton.
  • Block sa pag-import sa Quarkus BOM (bill of materials), aron dili makadugang ug bersyon sa matag pagsalig sa Quarkus.
  • Ang quarkus-maven-plugin maoy responsable sa pagputos sa aplikasyon ug paghatag ug development mode.
  • Ang lumad nga profile alang sa paghimo sa mga executable sa aplikasyon.

Dugang pa, manu-mano namong gihimo ang mosunod nga mga kausaban sa pom.xml:

  1. Gikuha ang tag gikan sa block ug ibutang kini sa ibabaw sa tag . Tungod kay sa sunod nga lakang atong tangtangon ang block , unya kinahanglan nimo nga i-save .
  2. Pagtangtang sa usa ka block tungod kay kung nagdagan kauban ang Quarkus, kini nga aplikasyon dili na magkinahanglan usa ka ginikanan nga pom gikan sa JBoss.
  3. Pagdugang og tag ug ibutang kini ilalom sa tag . Mahimo nimong itakda ang numero sa bersyon nga gusto nimo.
  4. Pagtangtang sa tag , tungod kay kini nga aplikasyon dili na usa ka WAR, apan usa ka regular nga JAR.
  5. Atong usbon ang mosunod nga mga dependency:
    1. Usba ang dependency javax.enterprise:cdi-api ngadto sa io.quarkus:quarkus-arc, pagtangtang gihatag , tungod kay (sumala sa mga docs) kini nga extension sa Quarkus naghatag og indeyksiyon sa mga dependency sa CDI.
    2. Usba ang dependency org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec ngadto sa io.quarkus:quarkus-undertow, pagtangtang gihatag , tungod kay (sumala sa mga docs) kini nga Quarkus extension naghatag suporta alang sa mga servlet.
    3. Among tangtangon ang org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec dependency tungod kay kini nag-uban sa mga dependency nga bag-o lang namo giusab.

Ang bersyon sa pom.xml file nga adunay tanan nga mga pagbag-o nahimutang sa github.com/mrizzi/jboss-eap-quickstarts/blob/quarkus/helloworld/pom.xml.

Timan-i nga ang mvn io.quarkus:quarkus-maven-plugin:0.23.2:create command sa ibabaw dili lamang mag-usab sa pom.xml file, apan nagdugang usab og ubay-ubay nga mga component sa proyekto, nga mao ang mosunod nga mga file ug folder:

  • Ang mvnw ug mvnw.cmd file ug ang .mvn folder: Ang Maven Wrapper nagtugot kanimo sa pagpadagan sa mga proyekto sa Maven sa usa ka gihatag nga bersyon sa Maven nga walay pag-instalar sa maong bersyon.
  • Docker folder (sa src/main/ directory): Kini naglangkob sa panig-ingnan Dockerfiles alang sa lumad ug jvm modes (uban sa .dockerignore file).
  • Resource folder (sa src/main/ directory): Naglangkob kini og walay sulod nga application.properties file ug sample nga Quarkus index.html nga pagsugod nga panid (tan-awa ang Run the modernized helloworld para sa dugang mga detalye).

Ilunsad ang helloworld
Aron masulayan ang aplikasyon, gigamit namon ang quarkus:dev, nga naglansad sa Quarkus sa mode sa pag-uswag (alang sa dugang nga mga detalye, tan-awa kini nga seksyon sa manwal Mode sa Pag-uswag).

Mubo nga sulat: Kini nga lakang gilauman nga moresulta sa usa ka sayup, tungod kay wala pa namon mahimo ang tanan nga kinahanglan nga mga pagbag-o.

Karon atong padaganon ang sugo aron makita kung giunsa kini paglihok:

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

Busa, dili kini molihok ... Ngano?

Ang UnsatisfiedResolutionException nagpunting sa HelloService nga klase, nga sakop sa HelloWorldServlet nga klase (java member: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService). Ang problema mao nga ang HelloWorldServlet nanginahanglan usa ka injected nga pananglitan sa HelloService, ug dili kini makit-an (bisan kung ang duha niini nga mga klase naa sa parehas nga pakete).

Panahon na nga mobalik sa dokumentasyon ug basaha kung giunsa kini paglihok sa Quarkus Pagdugtong, ug busa Konteksto ug Dependency Injection (CDI). Busa, ablihi ang giya sa Konteksto ug Dependency Injection ug sa seksyon Pagdiskobre sa Bean atong mabasa: “Ang klase sa bean nga walay anotasyon nga nagtino sa bean wala pangitaa.”

Atong tan-awon ang klase sa HelloService - wala gyud kini usa ka anotasyon. Busa, kini kinahanglan nga idugang aron ang Quarkus makapangita ug makapangita sa liso. Ug tungod kay kini usa ka butang nga walay estado, dali namong idugang ang @ApplicationScoped annotation nga sama niini:

@ApplicationScoped
public class HelloService {

Mubo nga sulat: dinhi ang development environment mahimong mangutana kanimo nga idugang ang gikinahanglan nga pakete (tan-awa ang linya sa ubos), ug kinahanglan nimo nga buhaton kini nga mano-mano, sama niini:

import javax.enterprise.context.ApplicationScoped;

Kung nagduhaduha ka kung unsang sakup ang kinahanglan gamiton sa kaso kung wala kini gitino alang sa gigikanan nga liso, basaha ang dokumentasyon JSR 365: Konteksto ug Dependency Injection para sa Java 2.0—Default nga sakup.

Karon gisulayan na usab namo nga ilunsad ang aplikasyon gamit ang command ./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]

Karon ang tanan nagdagan nga wala’y mga sayup.

Paglunsad sa moderno nga helloworld
Ingon sa gisulat sa log, ablihi kini sa browser 0.0.0.0:8080 (ang default nga panid sa pagsugod sa Quarkus) ug atong makita kini:

Quarkus: Pag-moderno sa Aplikasyon Gamit ang Helloworld isip Ehemplo gikan sa JBoss EAP Quickstart

bugas. 4. Panid sa pagsugod sa Quarkus dev.

Ang WebServlet annotation alang niini nga aplikasyon naglangkob sa mosunod nga kahulugan sa konteksto:

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

Busa, kita moadto sa browser sa 0.0.0.0:8080/HelloWorld ug atong makita ang mosunod:

Quarkus: Pag-moderno sa Aplikasyon Gamit ang Helloworld isip Ehemplo gikan sa JBoss EAP Quickstart

bugas. 5: Ang panid sa Quarkus dev para sa aplikasyon sa Hello World.

Aw, ang tanan nagtrabaho.

Karon maghimo kita mga pagbag-o sa code. Timan-i nga ang ./mvnw compile quarkus:dev command nagpadayon gihapon ug wala kami'y intensyon sa pagpahunong niini. Karon atong sulayan nga i-apply ang parehas - gamay ra kaayo - mga pagbag-o sa code mismo ug tan-awon kung giunsa gipadali ni Quarkus ang kinabuhi alang sa developer:

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

I-save ang file ug dayon i-refresh ang web page aron makita ang Hello Marco, ingon sa gipakita sa screenshot sa ubos:

Quarkus: Pag-moderno sa Aplikasyon Gamit ang Helloworld isip Ehemplo gikan sa JBoss EAP Quickstart

bugas. 6. Hello Marco panid sa Quarkus dev.

Karon atong susihon ang output sa terminal:

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

Ang pag-refresh sa panid nag-aghat sa pag-ila sa mga pagbag-o sa source code, ug ang Quarkus awtomatik nga naghimo sa usa ka pamaagi sa paghunong sa pagsugod. Ug kining tanan nahuman sulod lang sa 0.371 ka segundos (ania na, kanang “ultra-fast subatomic Java”).

Paghimo helloworld ngadto sa usa ka JAR package
Karon nga ang code nagtrabaho ingon nga kini kinahanglan, atong i-package kini sa mosunod nga sugo:

$ ./mvnw clean package

Kini nga command nagmugna og duha ka JAR files sa /target folder: ang helloworld-.jar file, nga usa ka standard artifact nga gitigom sa Maven team uban sa mga klase ug resources sa proyekto. Ug ang helloworld-runner.jar file, nga usa ka executable JAR.

Palihug timan-i nga kini dili usa ka uber-jar, tungod kay ang tanan nga mga dependency gikopya lang sa / target / lib folder (dili giputos sa usa ka JAR file). Busa, aron mapadagan kini nga JAR gikan sa laing folder o sa laing host, kinahanglan nimo nga kopyahon ang JAR file mismo ug ang /lib folder didto, tungod kay ang Class-Path nga elemento sa MANIFEST.MF file sa JAR package adunay sulod. usa ka tin-aw nga listahan sa mga JAR gikan sa lib folder
Aron mahibal-an kung giunsa paghimo ang mga aplikasyon sa uber-jar, palihug tan-awa ang tutorial Paglalang sa Uber-Jar.

Ilunsad ang helloworld nga giputos sa JAR

Karon mahimo na natong daganon ang atong JAR gamit ang standard java command:

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

Pagkahuman sa tanan niini, adto sa imong browser sa 0.0.0.0:8080 ug susiha nga ang tanan molihok sumala sa angay.

Pag-compile sa helloworld ngadto sa usa ka lumad nga executable file

Mao nga ang among helloworld nagdagan ingon usa ka standalone nga aplikasyon sa Java gamit ang mga pagsalig sa Quarkus. Apan mahimo ka nga mopadayon ug mahimo kini nga usa ka lumad nga executable file.

Pag-instalar sa GraalVM
Una sa tanan, alang niini kinahanglan nimo nga i-install ang gikinahanglan nga mga himan:

1. I-download ang GraalVM 19.2.0.1 gikan sa github.com/oracle/graal/releases/tag/vm-19.2.0.1.

2. Palapad ang na-download nga archive:

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

3. Adto sa untar folder.

4. Pagdalagan ang sugo sa ubos aron i-download ug idugang ang lumad nga hulagway:

$ ./bin/gu install native-image

5. Irehistro ang folder nga gihimo sa lakang 2 sa GRAALVM_HOME environment variable:

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

Para sa dugang nga impormasyon ug mga instruksiyon sa pag-instalar sa ubang mga OS, tan-awa ang manwal Pagtukod og Native Executable—Mga Kinahanglanon.

Paghimo helloworld ngadto sa usa ka lumad nga executable file
Pagbasa sa manwal Pagtukod og Native Executable—Paghimo og native executable: "Karon maghimo kita usa ka lumad nga executable file para sa atong aplikasyon aron makunhuran ang oras sa paglansad ug gidak-on sa disk. Ang executable file adunay tanan nga gikinahanglan sa pagpadagan sa aplikasyon, lakip ang JVM (o hinoon, usa ka truncated nga bersyon niini, nga adunay sulod lamang sa gikinahanglan aron sa pagpadagan sa aplikasyon) ug sa atong aplikasyon mismo.

Aron makahimo usa ka lumad nga executable file, kinahanglan nimo nga palihokon ang lumad nga profile sa Maven:

$ ./mvnw package -Pnative

Ang among pagtukod mikabat ug usa ka minuto ug 10 ka segundo, ug ang katapusan nga helloworld—runner f file gihimo sa /target folder.

Pagdalagan ang lumad nga helloworld executable

Sa miaging lakang, nadawat namo ang executable file /target/helloworld—runner. Karon atong padaganon kini:

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

Ablihi kini pag-usab sa browser 0.0.0.0:8080 ug susiha nga ang tanan molihok sumala sa angay.

Ang pagpadayon!

Nagtuo kami nga ang pamaagi sa pag-modernize sa mga aplikasyon sa Java gamit ang mga kapabilidad sa Quarkus nga gihisgutan sa kini nga post (bisan kung gigamit ang usa ka yano nga pananglitan) kinahanglan nga aktibo nga gigamit sa tinuud nga kinabuhi. Sa pagbuhat sa ingon, lagmit makasugat ka og daghang mga problema, nga atong hisgotan sa bahin sa sunod nga post, diin atong hisgotan kon unsaon pagsukod sa konsumo sa panumduman aron masusi ang mga pag-uswag sa pasundayag, usa ka importante nga bahin sa tibuok proseso sa modernisasyon sa aplikasyon.

Source: www.habr.com

Idugang sa usa ka comment