I-Quarkus: Ukwenziwa kwangoku kweSicelo usebenzisa i-Helloworld njengoMzekelo ovela kwi-JBoss EAP Quickstart

Molweni nonke kule bhlog, nantsi isithuba sesine kuthotho lweQuarkus!

I-Quarkus: Ukwenziwa kwangoku kweSicelo usebenzisa i-Helloworld njengoMzekelo ovela kwi-JBoss EAP Quickstart

Isithuba sangaphambili yayimalunga nendlela iQuarkus edibanisa ngayo iMicroProfile kunye neNtwasahlobo. Masikhumbule oko IQuarkus ibekwe "njenge-Subatomic Java ekhawulezayo kakhulu", aka "Kubernetes-oriented Java stack, eyenzelwe iGraalVM kunye ne-OpenJDK HotSpot kwaye idityaniswe ukusuka kumathala eencwadi abalaseleyo kunye nemigangatho." Namhlanje siza kubonisa indlela yokwenza usetyenziso lweJava esele lukhona kusetyenziswa ubunakho beQuarkus, sisebenzisa umzekelo helloworld izicelo ezivela kwiRed Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstart repository, esebenzisa iCDI kunye neServlet 3 itekhnoloji exhaswa yiQuarkus.

Kubalulekile ukuqaphela apha ukuba zombini iQuarkus kunye ne-JBoss EAP zigxininisa ukusebenzisa izixhobo ezisekelwe kwimigangatho kangangoko kunokwenzeka. Awunaso isicelo esisebenza kwi-JBoss EAP? Akukho ngxaki, inokufuduswa ngokulula ukusuka kwiseva yesicelo sakho yangoku ukuya kwi-JBoss EAP usebenzisa I-Red Hat Application Migration Toolkit. Emva koko inguqulelo yokugqibela kunye nokusebenza yekhowudi yanamhlanje iya kufumaneka kwindawo yokugcina github.com/mrizzi/jboss-eap-quickstarts/tree/quarkus, kwimodyuli Molo Lizwe.

Xa sibhala le post sasisebenzisa Iincwadi zeQuarkus, ubukhulu becala Ukwenza isicelo sakho sokuqala kunye noKwakha a Native Ephunyeziweyo.

Masifumane ikhowudi

Okokuqala, makhe senze iklone yendawo yokugcina I-JBoss EAP iqalisa ngokukhawuleza:

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

Makhe sibone ukuba i-helloworld yokuqala isebenza njani

Ngokwenyani, undoqo wesi sicelo ucacile kwigama, kodwa siya kuyiphucula ikhowudi yayo ngokungqongqo ngokwesayensi. Ngoko ke, okokuqala, makhe sijonge esi sicelo kwimo yaso yokuqala.

Ukusasaza helloworld

1. Vula i-terminal kwaye uye kwingcambu ye-JBoss EAP ifolda (ungayikhuphela apha), oko kukuthi, kwi EAP_HOME incwadi.

2. Qalisa iseva ye-JBoss EAP ngeprofayile engagqibekanga:

$ EAP_HOME/bin/standalone.sh

Qaphela: phezu Windows Iskripthi se-EAP_HOMEbinstandalone.bat sisetyenziselwa ukuqaliswa.

Emva kwemizuzwana embalwa, into enje kufuneka ivele kwilog:

[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. Vula kwibhrawuza 127.0.0.1:8080 kwaye sibona oku:

I-Quarkus: Ukwenziwa kwangoku kweSicelo usebenzisa i-Helloworld njengoMzekelo ovela kwi-JBoss EAP Quickstart

Irayisi. 1. Iphepha laseKhaya le-JBoss EAP.

4. Landela imiyalelo ekwincwadana yemigaqo Yakha kwaye usasaze i-Quickstart: yandisa i-helloworld kwaye uqhube (ukusuka kwifolda yeprojekthi) lo myalelo ulandelayo:

$ mvn clean install wildfly:deploy

Emva kokuphumeza lo myalelo ngempumelelo, siza kubona into enje ngale kwilogi:

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

Ke, ukuthunyelwa kokuqala kwesicelo se-helloworld kwi-JBoss EAP kuthathe ngaphezulu kwemizuzwana eyi-8.

Uvavanyo helloworld

Ukwenza ngokungqongqo ngokwemiyalelo Fikelela kwiSicelo, vula kwibhrawuza 127.0.0.1:8080/helloworld kwaye sibona oku:

I-Quarkus: Ukwenziwa kwangoku kweSicelo usebenzisa i-Helloworld njengoMzekelo ovela kwi-JBoss EAP Quickstart

Irayisi. 2. I-Original Molo World evela kwi-JBoss EAP.

Ukwenza utshintsho

Guqula ipharamitha yegalelo yenzaHelloMessage(Igama lomtya) ukusuka kwiLizwe ukuya kuMarco:

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

Yenza lo myalelo ulandelayo kwakhona:

$ mvn clean install wildfly:deploy

Emva koko sihlaziya iphepha kwisikhangeli kwaye sibone ukuba isicatshulwa sitshintshile:

I-Quarkus: Ukwenziwa kwangoku kweSicelo usebenzisa i-Helloworld njengoMzekelo ovela kwi-JBoss EAP Quickstart

Irayisi. 3. Molo Marco e JBoss EAP.

Phinda ubuyisele ukuthunyelwa kwe-helloworld kwaye uvale i-JBoss EAP

Oku kukhetho, kodwa ukuba ufuna ukurhoxisa ukuthunyelwa, ungenza njalo ngalo myalelo ulandelayo:

$ mvn clean install wildfly:undeploy

Ukuvala umzekelo wakho we-JBoss EAP, cinezela ngokulula u-Ctrl+C kwifestile ye-terminal.

Ukuphucula i-helloworld

Ngoku masenze usetyenziso lwe-helloworld lwangoku.

Yenza isebe elitsha

Senza isebe elitsha elisebenzayo emva kokuba iprojekthi yokuqalisa ngokukhawuleza igqityiwe:

$ git checkout -b quarkus 7.2.0.GA

Ukutshintsha ifayile ye-pom.xml

Siza kuqalisa ukutshintsha usetyenziso kwifayile ye-pom.xml. Ukuvumela iQuarkus ukuba ifake iibhloko zeXML kuyo, sebenzisa lo myalelo ulandelayo kwifolda ye-helloworld:

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

Xa ubhala eli nqaku, kwasetyenziswa uguqulelo 0.23.2. I-Quarkus ihlala ikhupha iinguqulelo ezintsha, unokufumanisa ukuba yeyiphi inguqulelo yamva nje kwiwebhusayithi github.com/quarkusio/quarkus/releases/latest.

Lo myalelo ungasentla uzakufaka ezi zinto zilandelayo kwi-pom.xml:

  • Ipropati , echaza uguqulelo lweQuarkus oluza kusetyenziswa.
  • Vimba ukungenisa i-Quarkus BOM (i-bill of materials), ukuze ungongezi inguqulelo yokuxhomekeka kweQuarkus nganye.
  • I-quarkus-maven-plugin inoxanduva lokupakisha isicelo kunye nokubonelela ngemodi yophuhliso.
  • Inkangeleko yemveli yokwenza izicelo eziphunyeziweyo.

Ukongeza, senza ngesandla olu tshintsho lulandelayo kwi-pom.xml:

  1. Ukukhupha ithegi ukusuka kwibhloko kwaye uyibeke ngaphezulu kwethegi . Kuba kwisinyathelo esilandelayo siya kususa ibhloko , emva koko kufuneka ugcine .
  2. Ukususa ibhloko , kuba xa usebenza neQuarkus, esi sicelo asisayi kufuna ipom yomzali evela kwi-JBoss.
  3. Yongeza ithegi kwaye uyibeke phantsi kwethegi . Ungakhankanya inombolo yoguqulelo oyifunayo.
  4. Ukususa ithegi , ekubeni esi sicelo ayiseyo-WAR, kodwa i-JAR eqhelekileyo.
  5. Silungisa ezi xhomekeko zilandelayo:
    1. Guqula uxhomekeko javax.enterprise:cdi-api ukuya io.quarkus:quarkus-arc, ukususa kubonelelwe , kuba (ngokwamaxwebhu) olu lwandiso lweQuarkus lubonelela ngesitofu sokuxhomekeka kweCDI.
    2. Guqula ukuxhomekeka ku-org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec ukuya ku-io.quarkus:quarkus-undertow, ukususa kubonelelwe , kuba (ngokwamaxwebhu) olu lwandiso lweQuarkus lubonelela ngenkxaso yeeservlets.
    3. Sisusa i-org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec ukuxhomekeka ekubeni iza nokuxhomekeka esisandula ukuyitshintsha.

Uguqulelo lwefayile ye pom.xml nalo lonke utshintsho lubekwe apha github.com/mrizzi/jboss-eap-quickstarts/blob/quarkus/helloworld/pom.xml.

Qaphela ukuba i-mvn io.quarkus:quarkus-maven-plugin:0.23.2:dala umyalelo ongasentla ayitshintshi kuphela ifayile ye-pom.xml, kodwa yongeza inani lamacandelo kwiprojekthi, ezizezi fayile zilandelayo kunye neefolda:

  • Ifayile ye mvnw kunye ne mvnw.cmd kunye ne .mvn incwadi eneenkcukacha: I Maven Wrapper ikuvumela ukuba usebenzise iiprojekthi ze Maven zoguqulelo olunikiweyo lwe Maven ngaphandle kokufaka olo guqulelo.
  • Ulawulo lweDocker (kwi-src/engundoqo/ ulawulo): Oku kuqulathe umzekelo weeDockerfiles zeendlela zomthonyama kunye nejvm (kunye nefayile ye.dockerignore).
  • Isiqulathi seefayili zemithombo (kwi-src/engundoqo/ ulawulo): Oku kuqulathe ifayile engenanto.

Qalisa helloworld
Ukuvavanya isicelo, sisebenzisa i-quarkus:dev, eqalisa iQuarkus kwindlela yophuhliso (ukufumana iinkcukacha ezithe vetshe, bona eli candelo kwincwadana yemigaqo. Imo yoPhuhliso).

Qaphela: Eli nyathelo liza kubangela impazamo kulindelekile, kuba singekalwenzi lonke utshintsho oluyimfuneko.

Ngoku makhe siqhube umyalelo ukuze sibone ukuba isebenza njani:

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

Ngoko, ayisebenzi ... Kutheni?

I-UnsatisfiedResolutionException ikhomba kwiklasi ye-HelloService, elilungu leklasi ye-HelloWorldServlet (ilungu le-java: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService). Ingxaki kukuba i-HelloWorldServlet idinga umzekelo otofweyo we-HelloService, kwaye ayifumaneki (nangona zombini ezi ndidi zikwiphakheji enye).

Lixesha lokubuyela ku amaxwebhu kwaye ufunde indlela esebenza ngayo kwiQuarkus Faka, kwaye ke Imixholo kunye nesitofu sokuxhomekeka (CDI). Ke ngoko, vula iSikhokelo seMixholo kunye neSitofu sokuxhomekeka nakwicandelo Ukufunyanwa kweembotyi sifunda oku: “Udidi lwembotyi olungenawo amagama achaza iimbotyi alukhangelwa.”

Makhe sijonge iklasi ye-HelloService - ayinaso isichasiselo esinjalo. Ke ngoko, kufuneka yongezwe ukuze iQuarkus ikhangele kwaye ifumane imbotyi. Kwaye kuba le iyinto engenammiselo, singongeza ngokulula i-@ApplicationScoped isichasiselo ngolu hlobo:

@ApplicationScoped
public class HelloService {

Qaphela: apha imeko-bume yophuhliso inokukucela ukuba wongeze umqulu ofunekayo (bona umgca ongezantsi), kwaye kuya kufuneka wenze oku ngesandla, ngolu hlobo:

import javax.enterprise.context.ApplicationScoped;

Ukuba uyathandabuza malunga nokuba ngowuphi umda ekufuneka usetyenziswe kwimeko xa ingachazwanga kwimbotyi yemvelaphi kwaphela, funda uxwebhu. I-JSR 365: Imixholo kunye nesitofu sokuxhomekeka kwiJava 2.0-Umda omiselweyo.

Ngoku siphinda sizama ukusungula isicelo ngomyalelo ./mvnw qokelela 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]

Ngoku yonke into ihamba ngaphandle kweempazamo.

Ukwazisa i-helloworld yale mihla
Njengoko kubhaliwe kwilog, yivule kwibhrawuza 0.0.0.0:8080 (iphepha lokuqala leQuarkus elingagqibekanga) kwaye sibona oku:

I-Quarkus: Ukwenziwa kwangoku kweSicelo usebenzisa i-Helloworld njengoMzekelo ovela kwi-JBoss EAP Quickstart

Irayisi. 4. Iphepha lokuqala leQuarkus dev.

Inkcazo yeWebServlet yesi sicelo iqulathe le nkcazelo yomxholo ilandelayo:

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

Ke ngoko, siya kwibhrawuza ukuya 0.0.0.0:8080/HelloWorld kwaye sibona oku kulandelayo:

I-Quarkus: Ukwenziwa kwangoku kweSicelo usebenzisa i-Helloworld njengoMzekelo ovela kwi-JBoss EAP Quickstart

Irayisi. I-5: Iphepha le-Quarkus dev le-Molo World application.

Ewe, yonke into iyasebenza.

Ngoku masenze utshintsho kwikhowudi. Qaphela ukuba i ./mvnw qokelela quarkus:dev umyalelo usasebenza kwaye asinanjongo yokuyimisa. Ngoku makhe sizame ukusebenzisa okufanayo - kuncinci kakhulu - utshintsho kwikhowudi ngokwayo kwaye sibone indlela iQuarkus eyenza ngayo ubomi bube lula kumphuhlisi:

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

Gcina ifayile kwaye emva koko uhlaziye iphepha lewebhu ukuze ubone Hello Marco, njengoko kubonisiwe kumfanekiso wekhusi ongezantsi:

I-Quarkus: Ukwenziwa kwangoku kweSicelo usebenzisa i-Helloworld njengoMzekelo ovela kwi-JBoss EAP Quickstart

Irayisi. 6. Molo Marco iphepha e Quarkus dev.

Ngoku makhe sijonge imveliso kwi-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

Ukuhlaziywa kwephepha kubangele ukufunyanwa kweenguqu kwikhowudi yomthombo, kwaye i-Quarkus yenza ngokuzenzekelayo inkqubo yokuyeka ukuqala. Kwaye konke oku kugqitywe ngemizuzwana eyi-0.371 (nantsi ke, ukuba "iJava ye-subatomic ekhawulezayo kakhulu").

Ukwakha i-helloworld kwiphakheji ye-JAR
Ngoku ukuba ikhowudi isebenza njengoko kufanelekile, masiyipakishe ngalo myalelo ulandelayo:

$ ./mvnw clean package

Lo myalelo udala iifayile ezimbini zeJAR kwi/ifolda ekujoliswe kuyo: i-helloworld-.jar ifayile, eyi-artifact eqhelekileyo ehlanganiswe liqela leMaven kunye neeklasi zeprojekthi kunye nezixhobo. Kwaye ifayile ye-helloworld-runner.jar, eyi-JAR ephunyeziweyo.

Nceda qaphela ukuba oku ayisiyiyo i-uber-jar, kuba zonke izixhomekeke zikhutshelwa ngokulula kwi/target/lib ifolda (engapakishwanga kwifayile yeJAR). Ngoko ke, ukuze usebenzise le JAR ukusuka kwenye ifolda okanye kwenye inginginya, kufuneka ukhuphele zombini ifayile yeJAR ngokwayo kunye ne/lib ifolda apho, unikwe ukuba iNdlela yeNdlela yeKlasi kwifayile ye MANIFEST.MF kwiphakheji yeJAR iqulethe. Uluhlu olucacileyo lwee-JAR ukusuka kwiifolda ze-lib
Ukufunda ukwenza usetyenziso lwe-uber-jar, nceda ujonge kwisifundo Ukudalwa kweUber-Jar.

Yazisa i-helloworld epakishwe kwi-JAR

Ngoku sinokuqhuba i-JAR yethu sisebenzisa umyalelo oqhelekileyo we-java:

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

Emva kokuba konke oku kwenziwe, yiya kwisikhangeli sakho ku 0.0.0.0: 8080 kwaye khangela ukuba yonke into isebenza njengoko kufanele.

Ukuqulunqa i-helloworld kwifayile yemveli ephunyeziweyo

Ke i-helloworld yethu isebenza njengesicelo esizimeleyo seJava sisebenzisa ukuxhomekeka kweQuarkus. Kodwa ungaya phambili kwaye uyijike ibe yifayile yemveli ephunyeziweyo.

Ukufakela iGraalVM
Okokuqala, kule nto kufuneka ufake izixhobo eziyimfuneko:

1. Khuphela iGraalVM 19.2.0.1 ukusuka github.com/oracle/graal/releases/tag/vm-19.2.0.1.

2. Yandisa indawo yokugcina ekhutshelweyo:

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

3. Yiya kwifolda ye-untar.

4. Sebenzisa lo myalelo ungezantsi ukukhuphela kwaye wongeze umfanekiso wemveli:

$ ./bin/gu install native-image

5. Bhalisa isiqulathi seefayili esenziwe kwinyathelo lesi-2 ukuya kuguqulo lwemeko-bume ye-GRALVM_HOME:

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

Ngolwazi oluthe kratya kunye nemiyalelo yokufakela kwezinye ii-OS, bona incwadana yemigaqo Ukwakha umthonyama ophunyezwayo—Izinto ezifunekayo.

Ukwakha i-helloworld kwifayile yemveli ephunyeziweyo
Ukufunda le ncwadana Ukwakha iNative Executable-Ukuvelisa umthonyama executable: “Ngoku makhe senze ifayile yemveli ephunyezwayo kwisicelo sethu ukunciphisa ixesha lokuqaliswa kwayo kunye nobungakanani bediski. Ifayile ephunyezwayo iya kuba nayo yonke into eyimfuneko ukuqhuba isicelo, kubandakanya i-JVM (okanye endaweni yoko, inguqulelo yayo ecuthiweyo, equlathe kuphela into efunekayo ukuqhuba isicelo) kunye nesicelo sethu ngokwaso.

Ukwenza ifayile yemveli ephunyezwayo, kufuneka wenze iprofayile yaseMaven:

$ ./mvnw package -Pnative

Ukwakhiwa kwethu kuthathe umzuzu omnye kunye nemizuzwana ye-10, kwaye ifayile yokugqibela ye-helloworld-runner f yenziwa kwifolda / ekujoliswe kuyo.

Qhuba ihelloworld yendalo ephunyeziweyo

Kwinqanaba elidlulileyo, sifumene ifayile ephunyeziweyo /target/helloworld-runner. Ngoku masiyiqhube:

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

Yivule kwibhrawuza kwakhona 0.0.0.0: 8080 kwaye khangela ukuba yonke into isebenza njengoko kufanele.

Iza kuqhubeka!

Sikholelwa ukuba indlela yokuphucula usetyenziso lweJava usebenzisa izakhono zeQuarkus ezixoxwe kwesi sithuba (nangona kusetyenziswa umzekelo olula) kufuneka isetyenziswe ngenkuthalo kubomi bokwenyani. Ngokwenza njalo, uya kudibana nenani leengxaki, esiza kujongana nazo ngokuyinxenye kwisithuba esilandelayo, apho siza kuthetha malunga nendlela yokulinganisa ukusetyenziswa kwememori ukuvavanya ukuphuculwa komsebenzi, inxalenye ebalulekileyo yenkqubo yonke yenkqubo yokuphucula isicelo.

umthombo: www.habr.com

Thenga ukusingathwa okuthembekileyo kwiindawo ezinokhuseleko lweDDoS, iiseva zeVPS VDS 🔥 Thenga ukusingathwa kwewebhusayithi okuthembekileyo ngokhuseleko lwe-DDoS, iiseva zeVPS VDS | ProHoster