Quarkus: Zamantakewar Aikace-aikace Amfani da Helloworld azaman Misali daga JBoss EAP Quickstart

Sannu kowa da kowa a wannan shafi, ga rubutu na huɗu a cikin jerin Quarkus!

Quarkus: Zamantakewar Aikace-aikace Amfani da Helloworld azaman Misali daga JBoss EAP Quickstart

Rubutun da ya gabata ya kasance game da yadda Quarkus ke haɗa MicroProfile da Spring. Mu tuna da haka kwarkus an sanya shi azaman "Subatomic Java mai saurin-sauri", aka "Kubernetes-daidaitacce Java tari, wanda aka keɓance don GraalVM da OpenJDK HotSpot kuma an haɗa shi daga mafi kyawun ɗakunan karatu da ƙa'idodi." A yau za mu nuna yadda ake sabunta aikace-aikacen Java na yanzu ta amfani da damar Quarkus, ta amfani da misali helloworld aikace-aikace daga Red Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstart ma'ajiyar, wanda ke amfani da fasahar CDI da Servlet 3 da Quarkus ke goyan bayan.

Yana da mahimmanci a lura a nan cewa duka Quarkus da JBoss EAP sun jaddada yin amfani da kayan aikin waɗanda suka dogara da ƙa'idodi gwargwadon yiwuwa. Ba ku da aikace-aikacen da ke gudana akan JBoss EAP? Babu matsala, ana iya yin ƙaura cikin sauƙi daga uwar garken aikace-aikacenku na yanzu zuwa JBoss EAP ta amfani da Kayan aikin ƙaura na Red Hat. Bayan haka sigar ƙarshe da aiki na lambar zamani za ta kasance a cikin ma'ajiyar github.com/mrizzi/jboss-eap-quickstarts/tree/quarkus, a cikin module Sannu Duniya.

Lokacin rubuta wannan post mun yi amfani da shi Quarkus manuals, m Ƙirƙirar Aikace-aikacenku na Farko da Gina a Asalin aiwatarwa.

Bari mu sami lambar

Da farko, bari mu ƙirƙiri na gida clone na ma'aji JBoss EAP yana farawa da sauri:

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

Bari mu ga yadda ainihin helloworld ke aiki

A haƙiƙa, asalin wannan aikace-aikacen a bayyane yake daga sunan, amma za mu sabunta lambar sa ta hanyar kimiyya. Don haka, da farko, bari mu kalli wannan aikace-aikacen a cikin asali.

Ana tura helloworld

1. Buɗe tasha kuma je zuwa tushen babban fayil ɗin JBoss EAP (zaka iya sauke shi. a nan), wato, zuwa babban fayil na EAP_HOME.

2. Kaddamar da JBoss EAP uwar garken tare da tsoho profile:

$ EAP_HOME/bin/standalone.sh

Note: A kan Windows, ana amfani da rubutun EAP_HOMEbinstandalone.bat don ƙaddamar da shi.

Bayan daƙiƙa biyu, wani abu kamar wannan yakamata ya bayyana a cikin log ɗin:

[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. Bude a cikin mai bincike 127.0.0.1: 8080 kuma mun ga wannan:

Quarkus: Zamantakewar Aikace-aikace Amfani da Helloworld azaman Misali daga JBoss EAP Quickstart

Shinkafa 1. JBoss EAP Home Page.

4. Bi umarnin da ke cikin littafin Gina kuma Sanya Quickstart: fadada helloworld kuma gudu (daga tushen tushen aikin) umarni mai zuwa:

$ mvn clean install wildfly:deploy

Bayan yin nasarar aiwatar da wannan umarni, za mu ga wani abu kamar haka a cikin log ɗin:

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

Don haka, ƙaddamar da aikace-aikacen helloworld na farko akan JBoss EAP ya ɗauki fiye da daƙiƙa 8 kawai.

Gwajin helloworld

Yin aiki sosai bisa ga umarnin Shiga Application, bude a cikin browser 127.0.0.1:8080/helloworld kuma mun ga wannan:

Quarkus: Zamantakewar Aikace-aikace Amfani da Helloworld azaman Misali daga JBoss EAP Quickstart

Shinkafa 2. Asalin Sannu Duniya daga JBoss EAP.

Yin canje-canje

Canja sigar shigar da ƙirƙiraHelloMessage(sunan kirtani) daga Duniya zuwa Marco:

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

sake gudanar da umarni mai zuwa:

$ mvn clean install wildfly:deploy

Sa'an nan kuma mu sake sabunta shafin a cikin mai bincike kuma mu ga cewa rubutun ya canza:

Quarkus: Zamantakewar Aikace-aikace Amfani da Helloworld azaman Misali daga JBoss EAP Quickstart

Shinkafa 3. Sannu Marco a JBoss EAP.

Maida jigilar helloworld kuma rufe JBoss EAP

Wannan na zaɓi ne, amma idan kuna son soke aikin, kuna iya yin hakan tare da umarni mai zuwa:

$ mvn clean install wildfly:undeploy

Don rufe misalin EAP ɗin ku na JBoss, kawai danna Ctrl+C a cikin taga tasha.

Haɓaka helloworld

Yanzu bari mu sabunta ainihin aikace-aikacen helloworld.

Ƙirƙiri sabon reshe

Mun ƙirƙiri sabon reshe mai aiki bayan an kammala aikin gaggawa:

$ git checkout -b quarkus 7.2.0.GA

Canza fayil ɗin pom.xml

Za mu fara canza aikace-aikacen daga fayil ɗin pom.xml. Don ƙyale Quarkus ya saka tubalan XML a ciki, gudanar da umarni mai zuwa a cikin babban fayil na helloworld:

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

Lokacin rubuta wannan labarin, an yi amfani da sigar 0.23.2. Quarkus sau da yawa yana fitar da sabbin nau'ikan, zaku iya gano wane nau'in ne sabo a gidan yanar gizon github.com/quarkusio/quarkus/releases/latest.

Umurnin da ke sama zai saka abubuwa masu zuwa cikin pom.xml:

  • Dukiya , wanda ke ƙayyade sigar Quarkus don amfani.
  • Toshe don shigo da Quarkus BOM (lissafin kayan aiki), don kar a ƙara sigar kowane dogaro na Quarkus.
  • Quarkus-maven-plugin yana da alhakin shirya aikace-aikacen da samar da yanayin ci gaba.
  • Bayanan martaba na asali don ƙirƙirar aikace-aikacen aiwatarwa.

Bugu da kari, da hannu muna yin canje-canje masu zuwa zuwa pom.xml:

  1. Fitar da alamar daga block kuma sanya shi sama da alamar . Domin a mataki na gaba za mu cire block , to kuna buƙatar ajiyewa .
  2. Cire shinge saboda lokacin aiki tare da Quarkus, wannan aikace-aikacen ba zai ƙara buƙatar pom na iyaye daga JBoss ba.
  3. Ƙara alama kuma sanya shi a ƙarƙashin tag . Kuna iya saka lambar sigar da kuke so.
  4. Cire alamar , tunda wannan aikace-aikacen ba YAKI bane, amma JAR na yau da kullun.
  5. Muna canza abubuwan dogaro masu zuwa:
    1. Canja abin dogaro javax.enterprise:cdi-api zuwa io.quarkus:quarkus-arc, cirewa bayar da , tun da (bisa ga docs) wannan tsawo na Quarkus yana ba da allurar dogaro da CDI.
    2. Canza dogara org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec zuwa io.quarkus:quarkus-undertow, cirewa bayar da , saboda (bisa ga docs) wannan tsawo na Quarkus yana ba da tallafi ga servlets.
    3. Muna cire org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec dogara tunda ya zo tare da abubuwan dogaro da muka canza yanzu.

Sigar fayil ɗin pom.xml tare da duk canje-canje yana nan a github.com/mrizzi/jboss-eap-quickstarts/blob/quarkus/helloworld/pom.xml.

Lura cewa mvn io.quarkus:quarkus-maven-plugin:0.23.2: ƙirƙira umarni a sama ba kawai canza fayil ɗin pom.xml ba, har ma yana ƙara abubuwa da yawa a cikin aikin, wato fayiloli da manyan fayiloli masu zuwa:

  • Fayil na mvnw da mvnw.cmd da babban fayil na .mvn: Maven Wrapper yana ba ku damar gudanar da ayyukan Maven na nau'in Maven da aka bayar ba tare da shigar da wannan sigar ba.
  • Docker babban fayil (a cikin src/main/ directory): Wannan ya ƙunshi misalin Dockerfiles don yanayin ƙasa da jvm (tare da fayil ɗin .dockerignore).
  • Babban fayil ɗin albarkatu (a cikin src/main/ directory): Wannan ya ƙunshi fanko aikace-aikace.Fayil na dukiya da samfurin Quarkus index.html shafin farawa (duba Run the modernized helloworld don ƙarin cikakkun bayanai).

Kaddamar da helloworld
Don gwada aikace-aikacen, muna amfani da quarkus: dev, wanda ke ƙaddamar da Quarkus a yanayin haɓakawa (don ƙarin cikakkun bayanai, duba wannan sashe a cikin jagorar. Yanayin ci gaba).

Note: Ana tsammanin wannan matakin zai haifar da kuskure, tunda har yanzu ba mu yi duk canje-canjen da suka dace ba.

Yanzu bari mu gudanar da umarni don ganin yadda yake aiki:

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

Don haka, ba ya aiki ... Me ya sa?

UnsatisfiedResolutionException yana nuni ga ajin HelloService, wanda memba ne na ajin HelloWorldServlet (memba java: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService). Matsalar ita ce HelloWorldServlet yana buƙatar misalin allura na HelloService, kuma ba za a iya samun shi ba (duk da cewa duka waɗannan azuzuwan suna cikin fakiti ɗaya).

Lokaci ya yi da za a koma takardun kuma karanta yadda yake aiki a Quarkus Magana, don haka Matsaloli da Allurar Dogara (CDI). Don haka, buɗe jagorar allurar Dogaro da Mahimmanci da a cikin sashe Ganewar wake we read: “A bean class that does not have a bean-defining annotation is not searched.”

Bari mu kalli ajin HelloService - hakika ba shi da irin wannan bayanin. Don haka, dole ne a ƙara ta yadda Quarkus zai iya nema ya nemo wake. Kuma tun da wannan abu ne marar ƙasa, za mu iya ƙara bayanin @ApplicationScoped cikin sauƙi kamar haka:

@ApplicationScoped
public class HelloService {

Note: Anan yanayin ci gaba na iya tambayarka ka ƙara kunshin da ake buƙata (duba layin da ke ƙasa), kuma dole ne ka yi wannan da hannu, kamar haka:

import javax.enterprise.context.ApplicationScoped;

Idan kuna shakka game da wace iyaka ya kamata a yi amfani da ita a cikin yanayin lokacin da ba a ƙayyade shi ga tushen wake kwata-kwata ba, karanta takaddun. JSR 365: Matsaloli da Dogaro Injection don Java 2.0-Tsoffin iyaka.

Yanzu mun sake gwada ƙaddamar da aikace-aikacen tare da umarnin ./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]

Yanzu komai yana tafiya ba tare da kurakurai ba.

Ƙaddamar da zamani duniya hello
Kamar yadda aka rubuta a cikin log ɗin, buɗe shi a cikin burauzar 0.0.0.0: 8080 (tsohuwar shafin farko na Quarkus) kuma muna ganin wannan:

Quarkus: Zamantakewar Aikace-aikace Amfani da Helloworld azaman Misali daga JBoss EAP Quickstart

Shinkafa 4. Shafin farko na Quarkus dev.

Bayanin WebServlet na wannan aikace-aikacen ya ƙunshi ma'anar mahallin mai zuwa:

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

Don haka bari mu je zuwa browser 0.0.0.0: 8080/HelloWorld kuma muna ganin masu zuwa:

Quarkus: Zamantakewar Aikace-aikace Amfani da Helloworld azaman Misali daga JBoss EAP Quickstart

Shinkafa 5: Shafin dev Quarkus don aikace-aikacen Hello Duniya.

To, komai yana aiki.

Yanzu bari mu yi canje-canje ga lambar. Lura cewa ./mvnw compile quarkus:dev umurnin yana gudana kuma ba mu da niyyar dakatar da shi. Yanzu bari mu yi ƙoƙari mu yi amfani da iri ɗaya - mafi ƙarancin - canje-canje ga lambar kanta kuma mu ga yadda Quarkus ke sauƙaƙe rayuwa ga mai haɓakawa:

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

Ajiye fayil ɗin sannan a sabunta shafin yanar gizon don ganin Hello Marco, kamar yadda aka nuna a hoton da ke ƙasa:

Quarkus: Zamantakewar Aikace-aikace Amfani da Helloworld azaman Misali daga JBoss EAP Quickstart

Shinkafa 6. Sannu Marco shafi a cikin Quarkus dev.

Yanzu bari mu duba fitarwa a cikin tashar:

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

Sake sabunta shafin ya haifar da gano canje-canje a lambar tushe, kuma Quarkus ya aiwatar da hanyar farawa ta atomatik. Kuma duk wannan an kammala shi a cikin daƙiƙa 0.371 kawai (a nan shi ne, "subatomic Java" mai sauri).

Gina helloworld cikin kunshin JAR
Yanzu da lambar tana aiki kamar yadda ya kamata, bari mu haɗa shi da umarni mai zuwa:

$ ./mvnw clean package

Wannan umarnin yana ƙirƙirar fayilolin JAR guda biyu a cikin babban fayil / manufa: fayil helloworld-.jar, wanda shine daidaitaccen kayan tarihi da ƙungiyar Maven ta tattara tare da azuzuwan da albarkatun aikin. Da helloworld-runner.jar fayil, wanda JAR ne mai aiwatarwa.

Da fatan za a lura cewa wannan ba uber-jar ba ne, tunda duk abin dogara kawai ana kwafin su cikin babban fayil / manufa/lib (ba a kunshe cikin fayil ɗin JAR ba). Don haka, don gudanar da wannan JAR daga wani babban fayil ko kuma a kan wani mai masaukin baki, kuna buƙatar kwafi duka fayil ɗin JAR da kansa da babban fayil ɗin /lib da ke wurin, ganin cewa rukunin Class-Path a cikin fayil ɗin MANIFEST.MF a cikin kunshin JAR ya ƙunshi. bayyanannen jeri na JARs daga manyan fayilolin lib
Don koyon yadda ake ƙirƙirar aikace-aikacen uber-jar, da fatan za a duba koyawa Ƙirƙirar Uber-Jar.

Kaddamar da helloworld kunshe a cikin JAR

Yanzu za mu iya gudanar da JAR ɗin mu ta amfani da daidaitaccen umarnin 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]

Bayan an gama duk wannan, je zuwa burauzar ku a 0.0.0.0: 8080 kuma duba cewa komai yana aiki yadda ya kamata.

Haɗa helloworld cikin fayil ɗin aiwatarwa na asali

Don haka helloworld ɗin mu yana gudana azaman aikace-aikacen Java mai zaman kansa ta amfani da dogaron Quarkus. Amma kuna iya ci gaba da juya shi zuwa fayil ɗin aiwatarwa na asali.

Ana shigar da GraalVM
Da farko, don wannan kuna buƙatar shigar da kayan aikin da ake buƙata:

1. Zazzage GraalVM 19.2.0.1 daga github.com/oracle/graal/releases/tag/vm-19.2.0.1.

2. Fadada rumbun adana bayanai:

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

3. Je zuwa babban fayil ɗin untar.

4. Guda umarnin da ke ƙasa don saukewa kuma ƙara hoton ɗan ƙasa:

$ ./bin/gu install native-image

5. Yi rijistar babban fayil ɗin da aka ƙirƙira a mataki na 2 zuwa canjin yanayi na GRAALVM_HOME:

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

Don ƙarin bayani da umarnin shigarwa akan wasu OSes, duba jagorar Gina Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙaƙwalwa.

Gina helloworld cikin fayil mai aiwatarwa na asali
Karatun littafin Gina Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙashin Ƙarƙwara: "Yanzu bari mu ƙirƙiri fayil ɗin aiwatarwa na asali don aikace-aikacen mu don rage lokacin ƙaddamarwa da girman diski. Fayil ɗin da za a iya aiwatarwa zai sami duk abin da ake buƙata don gudanar da aikace-aikacen, gami da JVM (ko kuma a maimakon haka, juzu'in sa, wanda ya ƙunshi kawai abin da ake buƙata don gudanar da aikace-aikacen) da kuma aikace-aikacen mu kanta. "

Don ƙirƙirar fayil ɗin aiwatarwa na asali, kuna buƙatar kunna bayanin martabar Maven na asali:

$ ./mvnw package -Pnative

Ginin namu ya ɗauki minti ɗaya da daƙiƙa 10, kuma an ƙirƙiri babban fayil ɗin helloworld — mai gudu f a cikin babban fayil / manufa.

Gudu na asali helloworld executable

A mataki na baya, mun karɓi fayil ɗin aiwatarwa /target/helloworld—mai gudu. Yanzu bari mu gudanar da shi:

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

Bude shi a cikin mai bincike kuma 0.0.0.0: 8080 kuma duba cewa komai yana aiki yadda ya kamata.

Продолжение следует!

Mun yi imanin cewa hanyar sabunta aikace-aikacen Java ta amfani da damar Quarkus da aka tattauna a cikin wannan post (duk da cewa ana amfani da misali mai sauƙi) yakamata a yi amfani da shi sosai a rayuwa ta gaske. A yin haka, ƙila za ku fuskanci matsaloli da dama, waɗanda za mu yi magana a wani ɓangare a rubutu na gaba, inda za mu yi magana game da yadda ake auna yawan ƙwaƙwalwar ajiya don tantance ingantaccen aiki, muhimmin sashi na gabaɗayan tsarin sabunta aikace-aikacen.

source: www.habr.com

Add a comment