Quarkus: JBoss EAP Quickstart-аас жишээ болгон Hellouorld-ийг ашиглан програмыг шинэчлэх

Энэ блог дээр байгаа бүх хүмүүст энэ өдрийн мэндийг хүргэе, Quarkus цувралын дөрөв дэх бичлэгийг энд оруулав!

Quarkus: JBoss EAP Quickstart-аас жишээ болгон Hellouorld-ийг ашиглан програмыг шинэчлэх

Өмнөх бичлэг Quarkus MicroProfile болон Spring-ийг хэрхэн хослуулсан тухай байсан. Үүнийг эргэн санацгаая Кваркус Энэ нь "хэт хурдан субатомын Java" буюу "GraalVM болон OpenJDK HotSpot-д тохирсон, шилдэг номын сан, стандартуудаас угсарсан Кубернетес рүү чиглэсэн Java стек" хэлбэрээр байрладаг. Өнөөдөр бид жишээн дээр Quarkus-ийн чадавхийг ашиглан одоо байгаа Java програмуудыг хэрхэн шинэчлэхийг харуулах болно Red Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstart репозитороос helloworld програмууд, энэ нь Quarkus-ийн дэмждэг CDI болон Servlet 3 технологийг ашигладаг.

Quarkus болон JBoss EAP хоёулаа аль болох стандартад суурилсан хэрэгслүүдийг ашиглахыг онцолдог гэдгийг энд тэмдэглэх нь чухал юм. JBoss EAP дээр ажилладаг програм байхгүй юу? Ямар ч асуудалгүй, үүнийг ашиглан таны одоогийн програмын серверээс JBoss EAP руу хялбархан шилжүүлж болно Red Hat програмын шилжилтийн хэрэгсэл. Үүний дараа шинэчилсэн кодын эцсийн болон ажлын хувилбарыг хадгалах газарт ашиглах боломжтой болно github.com/mrizzi/jboss-eap-quickstarts/tree/quarkus, модульд helloworld.

Энэ нийтлэлийг бичихдээ бид ашигласан Quarkus гарын авлага, ихэвчлэн Анхны програмаа үүсгэж байна болон Барилга а Төрөлхийн гүйцэтгэх боломжтой.

Кодоо авцгаая

Юуны өмнө репозиторын локал клоныг үүсгэцгээе 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/

Анхны сайхан ертөнц хэрхэн ажилладагийг харцгаая

Үнэн хэрэгтээ энэ програмын мөн чанар нь нэрнээс нь ойлгомжтой боловч бид түүний кодыг шинжлэх ухааны үүднээс шинэчлэх болно. Тиймээс эхлээд энэ програмыг анхны хэлбэрээр нь авч үзье.

Сайхан ертөнцийг байрлуулж байна

1. Терминал нээж, JBoss EAP хавтасны үндэс рүү очно уу (та үүнийг татаж авах боломжтой энд), өөрөөр хэлбэл EAP_HOME хавтсанд.

2. JBoss EAP серверийг өгөгдмөл профайлтай ажиллуулна уу:

$ EAP_HOME/bin/standalone.sh

Тайлбар: тухай Windows EAP_HOMEbinstandalone.bat скриптийг ажиллуулахад ашигладаг.

Хэдэн секундын дараа лог дээр иймэрхүү зүйл гарч ирнэ:

[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. Хөтөч дээр нээнэ үү 127.0.0.1:8080 бид үүнийг харж байна:

Quarkus: JBoss EAP Quickstart-аас жишээ болгон Hellouorld-ийг ашиглан програмыг шинэчлэх

Цагаан будаа. 1. JBoss EAP Нүүр хуудас.

4. Гарын авлагын зааврыг дагана уу Хурдан эхлэлийг бүтээж, байрлуул: helloworld-г өргөтгөж (төслийн үндсэн хавтаснаас) дараах тушаалыг ажиллуулна уу:

$ mvn clean install wildfly:deploy

Энэ тушаалыг амжилттай гүйцэтгэсний дараа бид бүртгэлд дараах зүйлийг харах болно.

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

Тиймээс JBoss EAP дээр helloworld програмыг анх байршуулахад ердөө 8 секунд зарцуулсан.

Сайхан ертөнцийг туршиж байна

Зааврын дагуу хатуу ажиллах Аппликейшнд нэвтрэх, хөтөч дээр нээнэ үү 127.0.0.1:8080/helloworld, бид үүнийг харж байна:

Quarkus: JBoss EAP Quickstart-аас жишээ болгон Hellouorld-ийг ашиглан програмыг шинэчлэх

Цагаан будаа. 2. JBoss EAP-ийн анхны Hello World.

Өөрчлөлт хийж байна

CreateHelloMessage(String name) оролтын параметрийг World-аас Marco болгон өөрчил:

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

Дараах тушаалыг дахин ажиллуулна уу:

$ mvn clean install wildfly:deploy

Дараа нь бид хөтөч дээрх хуудсыг сэргээж, текст өөрчлөгдсөнийг харна:

Quarkus: JBoss EAP Quickstart-аас жишээ болгон Hellouorld-ийг ашиглан програмыг шинэчлэх

Цагаан будаа. 3. JBoss EAP дахь Марко сайн уу.

Heloworld байршуулалтыг буцааж, JBoss EAP-г хаа

Энэ нь сонголттой боловч хэрэв та байршуулалтыг цуцлахыг хүсвэл дараах тушаалаар үүнийг хийж болно.

$ mvn clean install wildfly:undeploy

JBoss EAP instance-ээ унтраахын тулд терминалын цонхонд Ctrl+C товчийг дарна уу.

Сайхан ертөнцийг сайжруулж байна

Одоо анхны helloworld програмыг шинэчилье.

Шинэ салбар үүсгэх

Хурдан эхлүүлэх төсөл дууссаны дараа бид шинэ ажлын салбарыг үүсгэнэ.

$ git checkout -b quarkus 7.2.0.GA

pom.xml файлыг өөрчлөх

Бид pom.xml файлаас програмыг өөрчилж эхэлнэ. Quarkus-д XML блок оруулахыг зөвшөөрөхийн тулд helloworld хавтсанд дараах тушаалыг ажиллуулна уу:

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

Энэ нийтлэлийг бичихдээ 0.23.2 хувилбарыг ашигласан. Quarkus ихэвчлэн шинэ хувилбаруудыг гаргадаг бөгөөд та вэбсайтаас аль хувилбар нь хамгийн сүүлийн үеийн болохыг олж мэдэх боломжтой github.com/quarkusio/quarkus/releases/latest.

Дээрх тушаал нь pom.xml-д дараах элементүүдийг оруулах болно:

  • Өмч , энэ нь ашиглах Quarkus хувилбарыг зааж өгдөг.
  • Блоклох Quarkus BOM (материалын тооцоо) импортлох, ингэснээр Quarkus-ийн хамаарал бүрт хувилбар нэмэхгүй байх.
  • Quarkus-maven-plugin нь програмыг савлах, хөгжүүлэх горимоор хангах үүрэгтэй.
  • Програмын гүйцэтгэх файлуудыг үүсгэх үндсэн профайл.

Нэмж дурдахад бид pom.xml-д дараах өөрчлөлтүүдийг гараар хийдэг:

  1. Шошгийг гаргаж байна блокоос шошгоны дээр байрлуулна уу . Учир нь дараагийн алхамд бид блокыг арилгах болно , дараа нь та хадгалах хэрэгтэй .
  2. Блокыг устгаж байна , учир нь Quarkus-тай ажиллах үед энэ аппликейшн нь JBoss-ын эх пом хэрэггүй болно.
  3. Шошго нэмнэ үү мөн шошгоны доор байрлуулна уу . Та хүссэн хувилбарын дугаараа зааж өгч болно.
  4. Шошгийг устгаж байна , учир нь энэ програм нь WAR байхаа больсон, харин ердийн JAR юм.
  5. Бид дараах хамаарлыг өөрчилдөг.
    1. javax.enterprise:cdi-api хамаарлыг io.quarkus:quarkus-arc болгож өөрчлөх, устгах өгсөн , учир нь (баримт бичгийн дагуу) энэхүү Quarkus өргөтгөл нь CDI хамаарлыг нэвтрүүлэх боломжийг олгодог.
    2. org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec хамаарлыг io.quarkus:quarkus-undertow болгож өөрчлөх, устгах өгсөн , учир нь (баримт бичгийн дагуу) энэхүү Quarkus өргөтгөл нь сервлетүүдэд дэмжлэг үзүүлдэг.
    3. Бид org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec хамаарлыг арилгадаг, учир нь энэ нь бидний саяхан өөрчилсөн хамаарлуудын хамт ирдэг.

Бүх өөрчлөлтүүдтэй pom.xml файлын хувилбар энд байна github.com/mrizzi/jboss-eap-quickstarts/blob/quarkus/helloworld/pom.xml.

Дээрх mvn io.quarkus:quarkus-maven-plugin:0.23.2:create команд нь зөвхөн pom.xml файлыг өөрчлөхөөс гадна төсөлд хэд хэдэн бүрэлдэхүүн хэсэг, тухайлбал дараах файл, фолдеруудыг нэмдэг болохыг анхаарна уу.

  • mvnw болон mvnw.cmd файл болон .mvn хавтас: Maven Wrapper нь тухайн хувилбарыг суулгахгүйгээр тухайн Maven хувилбарын Maven төслүүдийг ажиллуулах боломжийг олгодог.
  • Docker хавтас (src/main/ директорт): Энэ нь эх болон jvm горимд зориулсан Docker файлуудын жишээг агуулдаг (.dockerignore файлын хамт).
  • Resources хавтас (src/main/ директорт): Энэ нь хоосон application.properties файл болон Quarkus index.html эхлэл хуудасны жишээг агуулж байна (дэлгэрэнгүй мэдээллийг орчин үеийн helloworld-г ажиллуулах хэсгээс үзнэ үү).

helloworld-г ажиллуул
Програмыг туршихын тулд бид Quarkus-ийг хөгжүүлэлтийн горимд ажиллуулдаг 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] 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

Тэгэхээр, энэ нь ажиллахгүй байна ... Яагаад?

UnsatisfiedResolutionException нь HelloWorldServlet ангийн (java гишүүн: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService) гишүүн болох HelloService классыг заадаг. Асуудал нь HelloWorldServlet-д HelloService-ийн тарьсан жишээ хэрэгтэй байгаа бөгөөд энэ нь олдохгүй байна (эдгээр ангиуд хоёулаа нэг багцад байгаа ч).

Буцах цаг боллоо баримт бичиг мөн Quarkus-д хэрхэн ажилладаг талаар уншина уу Тарина, Тиймээс Нөхцөл байдал ба хараат байдлын тарилга (CDI). Тиймээс, контекст ба хамаарлыг оруулах гарын авлага болон хэсгийг нээнэ үү Буурцагны нээлт Бид: "Буурцагны аннотаци байхгүй шошны анги хайдаггүй."

HelloService классыг харцгаая - энэ нь үнэхээр ийм тайлбар байхгүй байна. Тиймээс Кваркус шошыг хайж олохын тулд үүнийг нэмэх ёстой. Энэ нь харьяалалгүй объект тул бид @ApplicationScoped тайлбарыг дараах байдлаар хялбархан нэмж болно:

@ApplicationScoped
public class HelloService {

Тайлбар: Энд хөгжүүлэлтийн орчин танаас шаардлагатай багцыг нэмэхийг хүсэх болно (доорх мөрийг харна уу), та үүнийг дараах байдлаар гараар хийх хэрэгтэй болно:

import javax.enterprise.context.ApplicationScoped;

Хэрэв та эх шошны хувьд огт заагаагүй тохиолдолд аль хамрах хүрээг ашиглах ёстой талаар эргэлзэж байвал баримт бичгийг уншина уу. JSR 365: Java 2.0-д зориулсан контекст ба хараат байдлын тарилга - Өгөгдмөл хамрах хүрээ.

Одоо бид ./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]

Одоо бүх зүйл алдаагүй явж байна.

Орчин үеийн сайхан ертөнцийг эхлүүлж байна
Бүртгэлд бичсэнчлэн хөтөч дээр нээнэ үү 0.0.0.0:8080 (Quarkus-ийн анхдагч хуудас) бөгөөд бид үүнийг харж байна:

Quarkus: JBoss EAP Quickstart-аас жишээ болгон Hellouorld-ийг ашиглан програмыг шинэчлэх

Цагаан будаа. 4. Quarkus dev-ийн эхлэл хуудас.

Энэ програмын WebServlet тэмдэглэгээ нь дараах контекст тодорхойлолтыг агуулна.

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

Тиймээс бид хөтөч рүү очно 0.0.0.0:8080/HelloWorld, бид дараахыг харж байна:

Quarkus: JBoss EAP Quickstart-аас жишээ болгон Hellouorld-ийг ашиглан програмыг шинэчлэх

Цагаан будаа. 5: Hello World програмын Quarkus dev хуудас.

За, бүх зүйл ажилладаг.

Одоо коддоо өөрчлөлт оруулъя. ./mvnw compile quarkus:dev тушаал ажиллаж байгаа бөгөөд бид үүнийг зогсоох бодолгүй байгааг анхаарна уу. Одоо коддоо ижилхэн, маш өчүүхэн өөрчлөлтүүдийг хийж, Quarkus хөгжүүлэгчийн амьдралыг хэрхэн хөнгөвчлөхийг харцгаая.

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

Доорх дэлгэцийн агшинд үзүүлсэн шиг "Сайн уу Марко"-г үзэхийн тулд файлаа хадгалаад вэб хуудсыг сэргээнэ үү.

Quarkus: JBoss EAP Quickstart-аас жишээ болгон Hellouorld-ийг ашиглан програмыг шинэчлэх

Цагаан будаа. 6. Quarkus dev дэх Марко хуудасны мэнд.

Одоо терминал дахь гаралтыг шалгая:

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

Хуудсыг шинэчлэх нь эх кодын өөрчлөлтийг илрүүлэхэд түлхэц өгсөн бөгөөд Quarkus автоматаар зогсоох-эхлэх процедурыг гүйцэтгэсэн. Энэ бүгдийг ердөө 0.371 секундэд дуусгасан (энэ бол "хэт хурдан субатомын Java" юм).

JAR багц болгон сайхан ертөнцийг бүтээх
Одоо код нь байх ёстой зүйлээрээ ажиллаж байгаа тул дараах тушаалаар багцлаад үзье.

$ ./mvnw clean package

Энэ тушаал нь /target хавтсанд хоёр JAR файл үүсгэдэг: helloworld-.jar файл нь Maven багийн төслийн анги, нөөцийн хамт угсарсан стандарт олдвор юм. Мөн helloworld-runner.jar файлыг ажиллуулж болох JAR.

Бүх хамаарлыг /target/lib хавтсанд (JAR файлд багцлаагүй) хуулж авдаг тул энэ нь uber-jar биш гэдгийг анхаарна уу. Тиймээс, JAR багц дахь MANIFEST.MF файлын Class-Path элементийг агуулж байгаа тул JAR файлыг өөр хавтас эсвэл өөр хост дээр ажиллуулахын тулд JAR файлыг өөрөө болон тэнд байгаа /lib хавтас хоёуланг нь хуулах хэрэгтэй. lib фолдеруудаас JAR-уудын тодорхой жагсаалт
Uber-jar програмуудыг хэрхэн үүсгэх талаар сурахын тулд зааварчилгааг үзнэ үү Uber-Var үүсгэх.

JAR-д багцалсан helloworld-г ажиллуул

Одоо бид стандарт java командыг ашиглан JAR-аа ажиллуулж болно:

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

Энэ бүгдийг хийсний дараа хөтөч рүүгээ орно уу 0.0.0.0:8080, бүх зүйл зохих ёсоор ажиллаж байгаа эсэхийг шалгана уу.

helloworld-ийг үндсэн гүйцэтгэгдэх файл болгон хөрвүүлж байна

Тиймээс манай helloworld нь Quarkus хамаарлыг ашиглан бие даасан Java програм хэлбэрээр ажилладаг. Гэхдээ та цаашаа явж, үүнийг үндсэн гүйцэтгэгдэх файл болгон хувиргаж болно.

GraalVM суулгаж байна
Юуны өмнө та шаардлагатай багаж хэрэгслийг суулгах хэрэгтэй.

1. GraalVM 19.2.0.1-г татаж авна уу github.com/oracle/graal/releases/tag/vm-19.2.0.1.

2. Татаж авсан архивыг өргөжүүлэх:

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

3. Untar хавтас руу очно уу.

4. Эх зургийг татаж аваад нэмэхийн тулд доорх командыг ажиллуулна уу:

$ ./bin/gu install native-image

5. 2-р алхамд үүсгэсэн хавтсыг GRAALVM_HOME орчны хувьсагч руу бүртгүүлнэ үү:

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

Бусад үйлдлийн системүүдийн талаарх дэлгэрэнгүй мэдээлэл болон суулгах зааврыг гарын авлагаас авна уу. Төрөлхийн гүйцэтгэгдэх файлыг бий болгох - Урьдчилсан нөхцөл.

helloworld-ийг үндсэн гүйцэтгэгдэх файл болгон бүтээх
Гарын авлагыг уншиж байна Төрөлх гүйцэтгэгдэх боломжтой файлыг бий болгох—Уугуул executable програмыг бүтээх: "Одоо програмынхаа ажиллах хугацаа болон дискний хэмжээг багасгахын тулд программынхаа үндсэн гүйцэтгэгдэх файлыг үүсгэцгээе. Гүйцэтгэгдэх файл нь JVM (эсвэл зөвхөн програмыг ажиллуулахад шаардлагатай зүйлийг агуулсан тайрсан хувилбар) болон манай програмыг багтаасан програмыг ажиллуулахад шаардлагатай бүх зүйлтэй байх болно."

Уугуул ажиллах боломжтой файл үүсгэхийн тулд та уугуул Maven профайлыг идэвхжүүлэх хэрэгтэй:

$ ./mvnw package -Pnative

Бидний бүтээхэд нэг минут 10 секунд зарцуулагдсан бөгөөд эцсийн helloworld—runner f файлыг /target хавтсанд үүсгэсэн.

Төрөлхийн helloworld гүйцэтгэгчийг ажиллуул

Өмнөх алхамд бид /target/helloworld-runner гүйцэтгэх боломжтой файлыг хүлээн авсан. Одоо үүнийг ажиллуулцгаая:

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

Үүнийг хөтөч дээр дахин нээнэ үү 0.0.0.0:8080, бүх зүйл зохих ёсоор ажиллаж байгаа эсэхийг шалгана уу.

Үргэлжлэл бий!

Энэ нийтлэлд авч үзсэн Quarkus-ийн чадавхийг ашиглан Java програмуудыг шинэчлэх аргыг (энгийн жишээ ашигласан ч) бодит амьдрал дээр идэвхтэй ашиглах ёстой гэж бид үзэж байна. Ингэхдээ та хэд хэдэн асуудалтай тулгарах магадлалтай бөгөөд бид дараагийн нийтлэлдээ хэсэгчлэн авч үзэх бөгөөд программыг шинэчлэх үйл явцын чухал хэсэг болох гүйцэтгэлийн сайжруулалтыг үнэлэхийн тулд санах ойн зарцуулалтыг хэрхэн хэмжих талаар ярилцах болно.

Эх сурвалж: www.habr.com

DDoS хамгаалалт, VPS VDS сервер бүхий сайтуудад найдвартай хостинг худалдаж аваарай 🔥 DDoS хамгаалалттай, VPS VDS сервертэй найдвартай вэбсайт хостинг худалдаж аваарай | ProHoster