Quarkus: Fanavaozana fampiharana mampiasa Helloworld ho ohatra avy amin'ny JBoss EAP Quickstart

Miarahaba antsika rehetra ato amin'ity bilaogy ity, ity ny lahatsoratra fahefatra amin'ny andiany Quarkus!

Quarkus: Fanavaozana fampiharana mampiasa Helloworld ho ohatra avy amin'ny JBoss EAP Quickstart

Lahatsoratra teo aloha momba ny fomba nampifangaroan'i Quarkus ny MicroProfile sy ny Lohataona. Aoka hotsaroantsika izany quarkus dia napetraka ho "Java subatomika faran'izay haingana", antsoina hoe "stack Java miompana amin'ny Kubernetes, namboarina ho an'ny GraalVM sy OpenJDK HotSpot ary natambatra avy amin'ny tranomboky sy fenitra tsara indrindra." Androany dia hasehontsika ny fomba fanavaozana ny fampiharana Java efa misy amin'ny fampiasana ny fahaizan'ny Quarkus, amin'ny fampiasana ny ohatra fampiharana helloworld avy amin'ny Red Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstart repository, izay mampiasa ny teknolojia CDI sy Servlet 3 tohanan'ny Quarkus.

Zava-dehibe ny manamarika eto fa ny Quarkus sy ny JBoss EAP dia manantitrantitra ny fampiasana fitaovana mifototra amin'ny fenitra araka izay azo atao. Tsy manana fampiharana mandeha amin'ny JBoss EAP? Tsy misy olana, azo mifindra mora foana avy amin'ny mpizara fampiharana anao amin'izao fotoana izao mankany amin'ny JBoss EAP mampiasa Fitaovana fifindra-monina fampiharana Red Hat. Aorian'izay dia ho hita ao amin'ny tahiry ny dikan-teny farany sy miasa amin'ny kaody maoderina github.com/mrizzi/jboss-eap-quickstarts/tree/quarkus, ao amin'ny module Hello World.

Rehefa nanoratra ity lahatsoratra ity izahay dia nampiasa Quarkus tutorials, amin'ny ankapobeny Mamorona ny fampiharana voalohany anao ary Building a Native Executable.

Andao haka ny kaody

Voalohany indrindra, andao hamorona clone eo an-toerana amin'ny tahiry Manomboka haingana ny JBoss EAP:

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

Andeha hojerentsika ny fomba fiasan'ny helloworld tany am-boalohany

Raha ny marina, mazava tsara ny votoatin'ity fampiharana ity amin'ny anarana, fa havaozinay amin'ny fomba siantifika ny fehezan-dalàna. Noho izany, andeha aloha hojerentsika ity fampiharana ity amin'ny endriny voalohany.

Mampiasa helloworld

1. Sokafy ny terminal ary mankanesa any amin'ny fototry ny lahatahiry JBoss EAP (azonao alaina izany eto), izany hoe mankany amin'ny lahatahiry EAP_HOME.

2. Alefaso ny mpizara JBoss EAP miaraka amin'ny mombamomba azy:

$ EAP_HOME/bin/standalone.sh

Fanamarihana: Amin'ny Windows, ny script EAP_HOMEbinstandalone.bat no ampiasaina hanombohana azy.

Rehefa afaka segondra vitsy, dia tokony hiseho ao amin'ny log ny zavatra toy izao:

[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. Sokafy amin'ny navigateur 127.0.0.1:8080 ary hitantsika izao:

Quarkus: Fanavaozana fampiharana mampiasa Helloworld ho ohatra avy amin'ny JBoss EAP Quickstart

vary. 1. Pejy fandraisana JBoss EAP.

4. Araho ny torolalana ao amin'ny boky torolalana Amboary ary apetraho ny Quickstart: manitatra helloworld ary mihazakazaka (avy amin'ny lahatahiry fakana tetikasa) ity baiko manaraka ity:

$ mvn clean install wildfly:deploy

Rehefa vita soa aman-tsara io baiko io, dia hahita zavatra toy izao manaraka izao ao amin'ny log:

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

Noho izany, naharitra 8 segondra mahery ny fametrahana voalohany ny fampiharana helloworld amin'ny JBoss EAP.

Fitsapana helloworld

Manao fihetsika hentitra araka ny toromarika Midira amin'ny Application, misokatra amin'ny navigateur 127.0.0.1:8080/helloworld ary hitantsika izao:

Quarkus: Fanavaozana fampiharana mampiasa Helloworld ho ohatra avy amin'ny JBoss EAP Quickstart

vary. 2. Original Hello World avy amin'ny JBoss EAP.

Manao fiovana

Ovay ny mari-pamantarana fampidirana createHelloMessage(anaran'ny tady) avy amin'ny World ho Marco:

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

Avereno indray ity baiko manaraka ity:

$ mvn clean install wildfly:deploy

Avy eo dia manavao ny pejy ao amin'ny navigateur isika ary mahita fa niova ny lahatsoratra:

Quarkus: Fanavaozana fampiharana mampiasa Helloworld ho ohatra avy amin'ny JBoss EAP Quickstart

vary. 3. Salama Marco ao amin'ny JBoss EAP.

Avereno ny fametrahana helloworld ary akatony ny JBoss EAP

Tsy voatery izany, fa raha te hanafoana ny fametrahana ianao dia azonao atao izany amin'ny baiko manaraka:

$ mvn clean install wildfly:undeploy

Mba hanakatona ny ohatra JBoss EAP anao, tsindrio fotsiny Ctrl+C eo amin'ny varavarankely terminal.

Fanavaozana helloworld

Andeha isika hanavao ny fampiharana helloworld tany am-boalohany.

Mamorona sampana vaovao

Mamorona sampana miasa vaovao izahay rehefa vita ny tetikasa fanombohana haingana:

$ git checkout -b quarkus 7.2.0.GA

Fanovana ny rakitra pom.xml

Hanomboka hanova ny fampiharana avy amin'ny rakitra pom.xml isika. Raha te hamela an'i Quarkus hampiditra sakana XML ao anatiny dia araho ity baiko manaraka ity ao amin'ny lahatahiry helloworld:

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

Rehefa nanoratra ity lahatsoratra ity dia nampiasaina ny version 0.23.2. Matetika ny Quarkus dia mamoaka dikan-teny vaovao, azonao fantarina hoe iza no dikan-teny farany indrindra amin'ny tranokala github.com/quarkusio/quarkus/releases/latest.

Ny baiko etsy ambony dia hampiditra ireto singa manaraka ireto ao amin'ny pom.xml:

  • NY FANANANA , izay mamaritra ny dikan'ny Quarkus hampiasaina.
  • andian-tsoratra manafatra Quarkus BOM (bill of materials), mba tsy hampidirana dikan-teny ho an'ny fiankinan'ny Quarkus tsirairay.
  • Ny quarkus-maven-plugin dia tompon'andraikitra amin'ny famenoana ny fampiharana sy ny fanomezana ny fomba fampandrosoana.
  • Ny mombamomba ny teratany amin'ny famoronana fampiharana azo tanterahina.

Ho fanampin'izay, manao an'ireto fanovana manaraka ireto amin'ny pom.xml izahay:

  1. Misintona ny tag avy amin'ny sakana ary apetraho eo ambonin'ny marika . Satria amin'ny dingana manaraka dia hanala ny sakana isika , dia mila mitahiry ianao .
  2. Manala sakana , satria rehefa mihazakazaka miaraka amin'ny Quarkus, ity fampiharana ity dia tsy mila ray aman-dreny pom avy amin'ny JBoss intsony.
  3. Manampia marika ary apetraho eo ambanin'ny marika . Azonao atao ny mamaritra ny laharan'ny dikan-teny tianao.
  4. Esory ny marika , satria tsy ADY intsony ity fampiharana ity fa JAR mahazatra.
  5. Ovainay ireto fiankinana manaraka ireto:
    1. Hanova ny fiankinan-doha javax.enterprise:cdi-api ho io.quarkus:quarkus-arc, manala NANOMEZAN'I , satria (araka ny docs) ity fanitarana Quarkus ity dia manome tsindrona CDI miankina.
    2. Ovay ny fiankinan-doha org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec ho io.quarkus:quarkus-undertow, manala NANOMEZAN'I , satria (araka ny docs) ity fanitarana Quarkus ity dia manome fanohanana ny servlets.
    3. Esorinay ny fiankinan-doha org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec satria miaraka amin'ireo fiankinan-doha izay vao novanay.

Ny dikan-ny rakitra pom.xml miaraka amin'ny fanovana rehetra dia hita ao amin'ny github.com/mrizzi/jboss-eap-quickstarts/blob/quarkus/helloworld/pom.xml.

Mariho fa ny mvn io.quarkus:quarkus-maven-plugin:0.23.2:mamorona baiko etsy ambony dia tsy manova fotsiny ny rakitra pom.xml, fa manampy singa maromaro amin'ny tetikasa, izany hoe ireto rakitra sy lahatahiry manaraka ireto:

  • Ny rakitra mvnw sy mvnw.cmd ary ny lahatahiry .mvn: Maven Wrapper dia ahafahanao mampandeha tetikasa Maven amin'ny dikan-teny Maven nomena nefa tsy mametraka an'io dikan-teny io.
  • Docker folder (ao amin'ny lahatahiry src/main/): Ity misy ohatra Dockerfiles ho an'ny maodely native sy jvm (miaraka amin'ny rakitra .dockerignore).
  • Lahatahiry loharanon-karena (ao amin'ny lahatahiry src/main/): Ity dia misy rakitra application.properties tsy misy na inona na inona ary santionany Quarkus index.html pejy fanombohana (jereo ny Run the modernized helloworld raha mila fanazavana fanampiny).

Alefaso helloworld
Mba hitsapana ny fampiharana dia mampiasa quarkus:dev izahay, izay manomboka Quarkus amin'ny fomba fampandrosoana (raha mila fanazavana fanampiny, jereo ity fizarana ity ao amin'ny boky Fomba fampandrosoana).

Fanamarihana: Ity dingana ity dia azo inoana fa hiteraka hadisoana, satria tsy mbola nanao ny fanovana ilaina rehetra izahay.

Andeha hojerentsika ny fomba fiasa:

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

Noho izany, tsy mandeha izany ... Nahoana?

Ny UnsatisfiedResolutionException dia manondro ny kilasy HelloService, izay mpikambana ao amin'ny kilasy HelloWorldServlet (mpikambana java: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService). Ny olana dia ny HelloWorldServlet dia mila ohatra voatsindrona amin'ny HelloService, ary tsy hita izany (na dia ao anaty fonosana iray aza ireo kilasy roa ireo).

Fotoana hiverenana izao tahirin-kevitra ary vakio ny fomba fiasa ao Quarkus mampiditra, ary noho izany Toe-javatra sy tsindrona miankina (CDI). Noho izany, sokafy ny torolàlana momba ny Contexts and Dependency Injections ary ao amin'ny fizarana Bean Discovery Izao no vakintsika: “Tsy karohina ny kilasin’ny tsaramaso iray izay tsy misy fanamarihana mamaritra tsaramaso.”

Andeha hojerentsika ny kilasy HelloService - tena tsy misy fanamarihana toy izany. Noho izany dia tsy maintsy ampiana izany mba hahafahan'i Quarkus mikaroka sy mahita ny tsaramaso. Ary satria zavatra tsy misy fanjakana ity, dia afaka manampy mora foana ny fanamarihana @ApplicationScoped toy izao:

@ApplicationScoped
public class HelloService {

Fanamarihana: eto ny tontolo fampandrosoana dia mety hangataka anao hampiditra ny fonosana ilaina (jereo ny andalana etsy ambany), ary tsy maintsy manao izany amin'ny tanana ianao, toy izao:

import javax.enterprise.context.ApplicationScoped;

Raha toa ianao ka misalasala momba ny sehatra tokony hampiasaina amin'ny tranga izay tsy voafaritra ho an'ny tsaramaso loharano, vakio ny antontan-taratasy JSR 365: Toe-javatra sy tsindrona fiankinan-doha ho an'ny Java 2.0—Sakatra Default.

Ankehitriny dia manandrana manomboka ny fampiharana amin'ny baiko ./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]

Ankehitriny dia mandeha tsy misy hadisoana ny zava-drehetra.

Famoahana ny helloworld nohavaozina
Araka ny voasoratra ao amin'ny log, sokafy ao amin'ny navigateur 0.0.0.0:8080 (pejy fanombohana Quarkus default) ary hitantsika izao:

Quarkus: Fanavaozana fampiharana mampiasa Helloworld ho ohatra avy amin'ny JBoss EAP Quickstart

vary. 4. Pejy fanombohana Quarkus dev.

Ny fanamarihan'ny WebServlet ho an'ity fampiharana ity dia ahitana ny famaritana ny teny manodidina:

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

Noho izany, mandeha any amin'ny navigateur izahay 0.0.0.0:8080/HelloWorld ary hitantsika ireto manaraka ireto:

Quarkus: Fanavaozana fampiharana mampiasa Helloworld ho ohatra avy amin'ny JBoss EAP Quickstart

vary. 5: Ny pejy Quarkus dev ho an'ny fampiharana Hello World.

Eny, mandeha ny zava-drehetra.

Andeha isika hanova ny code. Mariho fa ny baiko ./mvnw compile quarkus:dev dia mbola mandeha ary tsy manana fikasana hampiato azy izahay. Andeha isika hiezaka hampihatra izany - tena tsinontsinona - fiovana amin'ny kaody ary hijery ny fomba nanamora ny fiainan'i Quarkus ho an'ny mpamorona:

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

Tehirizo ilay rakitra ary havaozy ny pejy web hahitanao Hello Marco, araka ny aseho amin'ny pikantsary etsy ambany:

Quarkus: Fanavaozana fampiharana mampiasa Helloworld ho ohatra avy amin'ny JBoss EAP Quickstart

vary. 6. Salama Marco pejy ao amin'ny Quarkus dev.

Andeha hojerentsika ny vokatra ao amin'ny 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

Ny famelomana ny pejy dia nahatonga ny fitadiavana ny fiovana ao amin'ny kaody loharano, ary i Quarkus dia nanao fomba fiatoana ho azy. Ary izany rehetra izany dia vita tao anatin'ny 0.371 segondra monja (eto ilay "Java subatomika faran'izay haingana").

Manangana helloworld ho fonosana JAR
Amin'izao fotoana izao dia miasa araka ny tokony ho izy ny kaody, andao hamboarina miaraka amin'ity baiko manaraka ity:

$ ./mvnw clean package

Ity baiko ity dia mamorona rakitra JAR roa ao amin'ny lahatahiry /target: ny rakitra helloworld-.jar, izay artifact mahazatra novorin'ny ekipan'ny Maven miaraka amin'ireo kilasy sy loharanon'ny tetikasa. Ary ny rakitra helloworld-runner.jar, izay JAR azo tanterahina.

Mariho fa tsy uber-jar ity, satria ny fiankinan-doha rehetra dia adika fotsiny ao amin'ny lahatahiry /target/lib (tsy voarakitra anaty rakitra JAR). Noho izany, mba hampandehanana ity JAR ity amin'ny lahatahiry hafa na amin'ny mpampiantrano hafa, dia mila mandika ny rakitra JAR ianao sy ny fampirimana / lib ao, raha toa ka misy ny singa Class-Path ao amin'ny rakitra MANIFEST.MF ao amin'ny fonosana JAR. lisitra mazava momba ny JAR avy amin'ny lahatahiry lib
Raha te hianatra ny fomba hamoronana rindranasa uber-jar dia jereo ny lesona Famoronana Uber-Jar.

Alefaso ny helloworld ao anaty JAR

Ankehitriny dia afaka mihazakazaka ny JAR isika amin'ny alàlan'ny baiko java mahazatra:

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

Rehefa vita izany rehetra izany dia mandehana any amin'ny navigateur anao amin'ny 0.0.0.0:8080 ary jereo fa mandeha araka ny tokony ho izy ny zava-drehetra.

Manangona helloworld ho rakitra azo tanterahana teratany

Noho izany, ny helloworld dia mandeha ho toy ny fampiharana Java tokana mampiasa ny fiankinan'ny Quarkus. Saingy afaka mandroso bebe kokoa ianao ary mamadika azy ho rakitra azo ampiasaina.

Fametrahana GraalVM
Voalohany indrindra, mila mametraka ny fitaovana ilaina ianao mba hanaovana izany:

1. Ampidino ny GraalVM 19.2.0.1 avy amin'ny github.com/oracle/graal/releases/tag/vm-19.2.0.1.

2. Ampitomboy ny rakitra alaina:

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

3. Mandehana any amin'ny fampirimana untar.

4. Alefaso ny baiko etsy ambany mba hisintonana sy hampidirana ny sary teratany:

$ ./bin/gu install native-image

5. Soraty ny lahatahiry noforonina tamin'ny dingana 2 mankany amin'ny fari-piainana GRAALVM_HOME:

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

Raha mila fanazavana fanampiny sy torolalana fametrahana amin'ny OS hafa dia jereo ny boky Fanorenana Native Executable—Fepetra takina.

Manangana helloworld ho rakitra azo tanterahina
Mamaky ny boky fampianarana Manangana Native Executable—Mamokatra teratany azo tanterahina: “Andao izao hamorona rakitra azo tanterahina ho an'ny fampiharana ataontsika mba hampihenana ny fotoana fandefasana azy sy ny haben'ny kapila. Ny rakitra azo tanterahana dia hanana ny zava-drehetra ilaina amin'ny fampandehanana ny rindranasa, ao anatin'izany ny JVM (na ny marimarina kokoa, dikan-teny voatapaka, izay tsy misy afa-tsy izay takiana amin'ny fampandehanana ny rindranasa) sy ny rindranasantsika mihitsy.

Mba hamoronana rakitra azo tanterahana teratany dia mila avelanao ny mombamomba ny Maven teratany:

$ ./mvnw package -Pnative

Naharitra iray minitra sy 10 segondra ny fanangananay, ary ny rakitra helloworld-runner f farany dia noforonina tao amin'ny lahatahiry / target.

Ampandehano ny helloworld teratany azo tanterahina

Tamin'ny dingana teo aloha dia nahazo ny rakitra /target/helloworld—runner. Andeha hataontsika izao:

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

Sokafy amin'ny navigateur indray 0.0.0.0:8080 ary jereo fa mandeha araka ny tokony ho izy ny zava-drehetra.

Mbola hitohy!

Mino izahay fa ny fomba fanavaozana ny rindranasa Java amin'ny fampiasana ny fahaiza-manaon'i Quarkus resahina ato amin'ity lahatsoratra ity (na dia mampiasa ohatra tsotra aza) dia tokony hampiasaina mavitrika amin'ny tena fiainana. Amin'ny fanaovana izany dia mety ho tojo olana maromaro ianao, izay horesahinay amin'ny ampahany amin'ny lahatsoratra manaraka, izay hiresahantsika ny fomba fandrefesana ny fanjifana fahatsiarovana mba hanombanana ny fanatsarana ny fampisehoana, ampahany manan-danja amin'ny fizotran'ny fanavaozana fampiharana manontolo.

Source: www.habr.com

Add a comment