Quarkus: модСрнизация Π½Π° прилоТСния Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° helloworld ΠΎΡ‚ JBoss EAP Quickstart

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅ Π½Π° всички Π² Ρ‚ΠΎΠ·ΠΈ Π±Π»ΠΎΠ³, ΠΈ с вас Ρ‡Π΅Ρ‚Π²ΡŠΡ€Ρ‚ΠΈΡΡ‚ пост ΠΎΡ‚ сСрията Π·Π° Quarkus!

Quarkus: модСрнизация Π½Π° прилоТСния Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° helloworld ΠΎΡ‚ JBoss EAP Quickstart

ΠŸΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡΡ‚ пост бСшС Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Quarkus обСдинява MicroProfile ΠΈ Spring. НапомнямС, Ρ‡Π΅ Quarkus сС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€Π° ΠΊΠ°Ρ‚ΠΎ Β«ΡΡƒΠΏΠ΅Ρ€Π±ΡŠΡ€Π·Π° субатомна JavaΒ», ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Β«Kubernetes-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ Java стСк, Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° GraalVM ΠΈ OpenJDK HotSpot ΠΈ ΡΡŠΠ±Ρ€Π°Π½ ΠΎΡ‚ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ стандарти». ДнСс Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ Π²Π΅Ρ‡Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ Java прилоТСния, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Quarkus, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ helloworld ΠΎΡ‚ рСпозитория Red Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstart, Π² ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈΡ‚Π΅ Π² Quarkus Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ CDI ΠΈ Servlet 3.

Π’ΡƒΠΊ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ ΠΈ Quarkus, ΠΈ JBoss EAP Π°ΠΊΡ†Π΅Π½Ρ‚ΠΈΡ€Π°Ρ‚ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° инструмСнти, изцяло ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ΠΈ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° стандарти. НяматС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΎ Π½Π° JBoss EAP? НС Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ лСсно Π΄Π° бъдС ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Π΅Π½ΠΎ ΠΎΡ‚ тСкущия ΡΡŠΡ€Π²ΡŠΡ€ Π½Π° прилоТСния Π½Π° JBoss EAP с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Red Hat Application Migration Toolkit. Π‘Π»Π΅Π΄ ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ„ΠΈΠ½Π°Π»Π½Π°Ρ‚Π° ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰Π° вСрсия Π½Π° ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€Π°Π½ ΠΊΠΎΠ΄ Ρ‰Π΅ бъдС Π΄ΠΎΡΡ‚ΡŠΠΏΠ½Π° Π² рСпозитория github.com/mrizzi/jboss-eap-quickstarts/tree/quarkus, Π² ΠΌΠΎΠ΄ΡƒΠ»Π° helloworld.

ΠŸΡ€ΠΈ написванСто Π½Π° Ρ‚ΠΎΠ·ΠΈ пост бяха ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²Π° Π·Π° Quarkus, основно БъздаванС Π½Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ БъздаванС Π½Π° Ρ€ΠΎΠ΄Π΅Π½ изпълним Ρ„Π°ΠΉΠ».

БнабдявамС сС с кода

ΠŸΡŠΡ€Π²ΠΎ Ρ‰Π΅ създадСм Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΊΠ»ΠΎΠ½ Π½Π° Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΠΎ JBoss EAP quickstarts:

$ git clone https://github.com/jboss-developer/jboss-eap-quickstarts.git
ΠšΠ»ΠΎΠ½ΠΈΡ€Π°Π½Π΅ Π² 'jboss-eap-quickstarts'...
remote: Π˜Π·Ρ‡ΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ: 148133, Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΎ.
remote: ΠžΠ±Ρ‰ΠΎ 148133 (delta 0), ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ 0 (delta 0), pack-reused 148133
ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ: 100% (148133/148133), 59.90 MiB | 7.62 MiB/s, Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΎ.
Π Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Π΄Π΅Π»Ρ‚ΠΈΡ‚Π΅: 100% (66476/66476), Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΎ.
$ cd jboss-eap-quickstarts/helloworld/

Π“Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ изходният helloworld

Π‘ΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° Ρ‚ΠΎΠ²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ ясна ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ, Π½ΠΎ Π½ΠΈΠ΅ Ρ‰Π΅ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΊΠΎΠ΄Π° ΠΌΡƒ строго Π½Π°ΡƒΡ‡Π½ΠΎ. Π—Π°Ρ‚ΠΎΠ²Π° ΠΏΡŠΡ€Π²ΠΎ Ρ‰Π΅ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π½Π° Ρ‚ΠΎΠ²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² оригиналния ΠΌΡƒ Π²ΠΈΠ΄.

Π Π°Π·Π²ΠΈΠ²Π°ΠΌΠ΅ helloworld

1. ΠžΡ‚Π²Π°Ρ€ΡΠΌΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ Π² ΠΊΠΎΡ€Π΅Π½Π° Π½Π° ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° JBoss EAP (ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·Ρ‚Π΅Π³Π»Π΅Π½ Ρ‚ΡƒΠΊ), Ρ‚.Π΅. Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° EAP_HOME.

2. Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ ΡΡŠΡ€Π²ΡŠΡ€Π° JBoss EAP с подразбирания ΠΏΡ€ΠΎΡ„ΠΈΠ»:

$ EAP_HOME/bin/standalone.sh

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Π½Π° Windows Π·Π° стартиранС сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° скрипт EAP_HOMEbinstandalone.bat.

Π‘Π»Π΅Π΄ няколко сСкунди Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ трябва Π΄Π° сС появи Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ:

[org.jboss.as] (ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ Boot Thread) WFLYSRV0025: JBoss EAP 7.2.0.GA (WildFly Core 6.0.11.Final-redhat-00001) стартиран Π·Π° 3315ms - Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Π½ΠΈ 306 ΠΎΡ‚ 527 услуги (321 услуги са Π»Π΅Π½ΠΈΠ²ΠΈ, пасивни ΠΈΠ»ΠΈ ΠΏΠΎ ΠΏΠΎΡ€ΡŠΡ‡ΠΊΠ°)

3. ΠžΡ‚Π²Π°Ρ€ΡΠΌΠ΅ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° 127.0.0.1:8080 ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Ρ‚ΠΎΠ²Π°:

Quarkus: модСрнизация Π½Π° прилоТСния Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° helloworld ΠΎΡ‚ JBoss EAP Quickstart

Рис. 1. Началната страница Π½Π° JBoss EAP.

4. Π‘Π»Π΅Π΄Π²Π°ΠΌΠ΅ указанията Π² Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΈ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Ρ‚Π΅ Quickstart: Ρ€Π°Π·Π²ΠΈΠ²Π°ΠΌΠ΅ helloworld ΠΈ изпълнявамС (ΠΎΡ‚ основната ΠΏΠ°ΠΏΠΊΠ° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°) слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ mvn clean install wildfly:deploy

Π‘Π»Π΅Π΄ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ изпълнСниС Π½Π° Ρ‚Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ:

[INFO] ------------------------------------------------------------------------ 
[INFO] Π£Π‘ΠŸΠ•Π¨ΠΠž Π‘Π’Π ΠžΠ˜Π’Π• 
[INFO] ------------------------------------------------------------------------ 
[INFO] ΠžΠ±Ρ‰ΠΎ Π²Ρ€Π΅ΠΌΠ΅: 8.224 с

И Ρ‚Π°ΠΊΠ°, ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ helloworld Π½Π° JBoss EAP ΠΎΡ‚Π½Π΅ ΠΌΠ°Π»ΠΊΠΎ Π½Π°Π΄ 8 сСкунди.

ВСстувамС helloworld

ДСйствайки стриктно ΠΏΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Π”ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, отварямС Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° 127.0.0.1:8080/helloworld ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ слСдното:

Quarkus: модСрнизация Π½Π° прилоТСния Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° helloworld ΠΎΡ‚ JBoss EAP Quickstart

Рис. 2. Π˜Π·Ρ…ΠΎΠ΄Π½ΠΈΡΡ‚ Hello World ΠΎΡ‚ JBoss EAP.

ВнасямС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ

ΠŸΡ€ΠΎΠΌΠ΅Π½ΡΠΌΠ΅ входния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ createHelloMessage(String name) ΠΎΡ‚ World Π½Π° Marco:

писатСлят.println("<h1>" + helloService.createHelloMessage("ΠœΠ°Ρ€ΠΊΠΎ") + "</h1>");

ΠžΡ‚Π½ΠΎΠ²ΠΎ изпълнявамС слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ mvn clean install wildfly:deploy

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° обновявамС страницата Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ Ρ‚Π΅ΠΊΡΡ‚ΡŠΡ‚ сС Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ»:

Quarkus: модСрнизация Π½Π° прилоТСния Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° helloworld ΠΎΡ‚ JBoss EAP Quickstart

Рис. 3. Hello Marco в JBoss EAP.

ΠžΡ‚ΠΌΠ΅Π½ΡΠΌΠ΅ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° helloworld ΠΈ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°ΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° JBoss EAP.

Π’ΠΎΠ²Π° Π½Π΅ Π΅ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ, Π½ΠΎ Π°ΠΊΠΎ искатС Π΄Π° ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅Ρ‚ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ mvn clean install wildfly:undeploy

Π—Π° Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° инстанцията Π½Π° JBoss EAP, просто натиснСтС Ctrl+C Π² ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°.

ΠœΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ helloworld

Π‘Π΅Π³Π° Ρ‰Π΅ сС Π·Π°Π΅ΠΌΠ΅ΠΌ с модСрнизацията Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ helloworld.

БъздавамС нов клон

БъздавамС Π½ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΊΠ»ΠΎΠ½ слСд ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ quickstart Π·Π°Π²ΡŠΡ€ΡˆΠΈ:

$ 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, ΠΊΠΎΠΉΡ‚ΠΎ отговаря Π·Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ прСдоставящ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅.
  • ΠŸΡ€ΠΎΡ„ΠΈΠ» native Π·Π° създаванС Π½Π° изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

ОсвСн Ρ‚ΠΎΠ²Π° Π² pom.xml Ρ‰Π΅ внСсСм Ρ€ΡŠΡ‡Π½ΠΎ слСднитС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ:

  1. ИзваТдамС Ρ‚Π°Π³ ΠΎΡ‚ Π±Π»ΠΎΠΊΠ° ΠΈ Π³ΠΎ поставямС Π½Π°Π΄ Ρ‚Π°Π³Π° . Въй ΠΊΠ°Ρ‚ΠΎ Π½Π° слСдващата ΡΡ‚ΡŠΠΏΠΊΠ° Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ΠΌ Π±Π»ΠΎΠΊΠ° , трябва Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΠΌ .
  2. ΠŸΡ€Π΅ΠΌΠ°Ρ…Π²Π°ΠΌΠ΅ Π±Π»ΠΎΠΊΠ° , Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ няма Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ родитСлския pom ΠΎΡ‚ JBoss ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Quarkus.
  3. ДобавямС Ρ‚Π°Π³ ΠΈ Π³ΠΎ Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°ΠΌΠ΅ ΠΏΠΎΠ΄ Ρ‚Π°Π³Π° . ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ вСрсията, ΠΊΠ°ΠΊΠ²Π°Ρ‚ΠΎ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅.
  4. ΠŸΡ€Π΅ΠΌΠ°Ρ…Π²Π°ΠΌΠ΅ Ρ‚Π°Π³Π° , Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ WAR, Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ JAR.
  5. ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°ΠΌΠ΅ слСднитС зависимости:
    1. БмСнямС зависимостта javax.enterprise:cdi-api Π½Π° io.quarkus:quarkus-arc, ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°ΠΉΠΊΠΈ provided, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ (спорСд докумСнтацията) Ρ‚ΠΎΠ²Π° Quarkus Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ осигурява ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° CDI зависимости.
    2. БмСнямС зависимостта org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec Π½Π° io.quarkus:quarkus-undertow, ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°ΠΉΠΊΠΈ provided, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ (спорСд докумСнтацията) Ρ‚ΠΎΠ²Π° 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/): Ρ‚ΡƒΠΊ сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Dockerfile Π·Π° Ρ€Π΅ΠΆΠΈΠΌΠΈΡ‚Π΅ native ΠΈ jvm (Π·Π°Π΅Π΄Π½ΠΎ с Ρ„Π°ΠΉΠ»Π° .dockerignore).
  • Папка resources (Π² дирСкторията src/main/): Ρ‚ΡƒΠΊ сС Π½Π°ΠΌΠΈΡ€Π° ΠΏΡ€Π°Π·Π΅Π½ Ρ„Π°ΠΉΠ» application.properties ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½Π° стартова страница Quarkus index.html (ΠΏΠΎΠ²Π΅Ρ‡Π΅ информация Π²ΠΈΠΆΡ‚Π΅ Π² Π ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Π·Π° ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€Π°Π½ Ρ…Π΅Π»Π»ΠΎΡƒΠΎΡ€Π»Π΄).

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Ρ…Π΅Π»Π»ΠΎΡƒΠΎΡ€Π»Π΄
Π—Π° Π΄Π° тСствамС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ quarkus:dev, ΠΊΠΎΠΉΡ‚ΠΎ стартира Quarkus Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° (ΠΏΠΎΠ²Π΅Ρ‡Π΅ информация Π²ΠΈΠΆΡ‚Π΅ Π² Ρ‚ΠΎΠ·ΠΈ Ρ€Π°Π·Π΄Π΅Π» Π½Π° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Π·Π° Π Π΅ΠΆΠΈΠΌ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°).

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Ρ‚ΠΎΠ²Π° ΡΡ‚ΡŠΠΏΠΊΠ° ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΎ Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π³Ρ€Π΅ΡˆΠΊΠ°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π½Π΅ смС Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ всС ΠΎΡ‰Π΅ всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ.

Π‘Π΅Π³Π° стартирамС ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°, Π·Π° Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΊΠ°ΠΊ Ρ‰Π΅ сработи:

$ .\/mvnw compile quarkus:dev
[INFO] Π‘ΠΊΠ°Π½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ...
[INFO]
[INFO] ----------------< org.jboss.eap.quickstarts:helloworld >----------------
[INFO] БъздаванС на Quickstart: helloworld quarkus
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---
[INFO] ИзползванС Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ 'UTF-8' Π·Π° ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½ΠΈ рСсурси.
[INFO] ΠšΠΎΠΏΠΈΡ€Π°Π½Π΅ Π½Π° 2 рСсурса
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---
[INFO] Няма ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° - всички класовС са Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΈ
[INFO]
[INFO] --- quarkus-maven-plugin:0.23.2:dev (default-cli) @ helloworld ---
Π‘Π»ΡƒΡˆΠ°Π½Π΅ Π·Π° транспорт dt_socket Π½Π° адрСс: 5005
INFO  [io.qua.dep.QuarkusAugmentor] Π—Π°ΠΏΠΎΡ‡Π²Π°Π½Π΅ Π½Π° quarkus ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅
INFO  [org.jbo.threads] JBoss Threads вСрсия 3.0.0.Final
ERROR [io.qua.dev.DevModeMain] ΠΠ΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ стартиранС Π½Π° quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: НСуспСх ΠΏΡ€ΠΈ компилация: ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡΡ‚Π° Π΅ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½Π° ΠΏΠΎΡ€Π°Π΄ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ
	[error]: Π‘Ρ‚ΡŠΠΏΠΊΠ° Π·Π° строитСлство io.quarkus.arc.deployment.ArcProcessor#validate ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: НСудовлСтворСна зависимост Π·Π° Ρ‚ΠΈΠΏ org.jboss.as.quickstarts.helloworld.HelloService ΠΈ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ [@Default]
	- java Ρ‡Π»Π΅Π½: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService
	- Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π½ Π½Π° 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)
ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ΠΎ ΠΎΡ‚: javax.enterprise.inject.UnsatisfiedResolutionException: НСудовлСтворСна зависимост Π·Π° Ρ‚ΠΈΠΏ org.jboss.as.quickstarts.helloworld.HelloService ΠΈ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ [@Default]
	- java Ρ‡Π»Π΅Π½: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService
	- Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π½ Π½Π° 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 ΠΏΠΎΠ²Π΅Ρ‡Π΅

Π”Π°, Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ... А Π·Π°Ρ‰ΠΎ?

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ UnsatisfiedResolutionException ΡƒΠΊΠ°Π·Π²Π° Π½Π° класа HelloService, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Ρ‡Π»Π΅Π½ Π½Π° класа HelloWorldServlet (java member: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅, Ρ‡Π΅ HelloWorldServlet сС Π½ΡƒΠΆΠ΄Π°Π΅ ΠΎΡ‚ ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ СкзСмпляр Π½Π° HelloService, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ (Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΈ Π΄Π²Π°Ρ‚Π° класа сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π² ΡΡŠΡ‰ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚).

Π’Ρ€Π΅ΠΌΠ΅ Π΅ Π΄Π° сС Π²ΡŠΡ€Π½Π΅ΠΌ към докумСнтацията ΠΈ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π² Quarkus Ρ€Π°Π±ΠΎΡ‚ΠΈ Inject, слСдоватСлно, ΠΈ Contexts and Dependency Injection (CDI). Π—Π°Ρ‚ΠΎΠ²Π° отварямС Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Contexts and Dependency Injection ΠΈ Π² Ρ€Π°Π·Π΄Π΅Π»Π° Bean Discovery Ρ‡Π΅Ρ‚Π΅ΠΌ: β€žBean-клас, ΠΊΠΎΠΉΡ‚ΠΎ няма опрСдСляща bean анотация, Π½Π΅ сС Ρ‚ΡŠΡ€ΡΠΈ.β€œ

Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ класа HelloService – Π² Π½Π΅Π³ΠΎ наистина няма Ρ‚Π°ΠΊΠ°Π²Π° анотация. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, трябва Π΄Π° я Π΄ΠΎΠ±Π°Π²ΠΈΠΌ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Quarkus Π΄Π° Ρ‚ΡŠΡ€ΡΠΈ ΠΈ Π½Π°ΠΌΠΈΡ€Π° bean. И Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° Π΅ stateless ΠΎΠ±Π΅ΠΊΡ‚, напълно ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ анотацията @ApplicationScoped ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½:

@ApplicationScoped
public class HelloService {

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Ρ‚ΡƒΠΊ срСдата Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ»ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ нСобходимия ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΈΠΆΡ‚Π΅ долния Ρ€Π΅Π΄), ΠΈ Ρ‚ΠΎΠ²Π° трябва Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Ρ€ΡŠΡ‡Π½ΠΎ, Ρ‚Π°ΠΊΠ°:

import javax.enterprise.context.ApplicationScoped;

Ако сС ΡΡŠΠΌΠ½ΡΠ²Π°Ρ‚Π΅ коя област scope Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π·Π° оригиналния bean тя ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π°, ΠΏΡ€Π΅Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ докумСнтацията JSR 365: Contexts and Dependency Injection for Java 2.0β€”Default scope.

Π‘Π΅Π³Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΎΠΏΠΈΡ‚Π²Π°ΠΌΠ΅ Π΄Π° стартирамС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° .\/mvnw compile quarkus:dev:

$ .\/mvnw compile quarkus:dev
[INFO] Π‘ΠΊΠ°Π½ΠΈΡ€Π°ΠΌΠ΅ Π·Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ...
[INFO]
[INFO] ----------------< org.jboss.eap.quickstarts:helloworld >----------------
[INFO] Π˜Π·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Quickstart: helloworld quarkus
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---
[INFO] Използва сС ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ 'UTF-8' Π·Π° ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½ΠΈ рСсурси.
[INFO] ΠšΠΎΠΏΠΈΡ€Π°Π½Π΅ Π½Π° 2 рСсурси
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---
[INFO] ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ - ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π°!
[INFO] ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° 2 ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Π² \/home\/mrizzi\/git\/forked\/jboss-eap-quickstarts\/helloworld\/target\/classes
[INFO]
[INFO] --- quarkus-maven-plugin:0.23.2:dev (default-cli) @ helloworld ---
Π‘Π»ΡƒΡˆΠ°Π½Π΅ Π·Π° транспорт dt_socket Π½Π° адрСс: 5005
INFO  [io.qua.dep.QuarkusAugmentor] (main) Π—Π°ΠΏΠΎΡ‡Π²Π° quarkus ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅
INFO  [io.qua.dep.QuarkusAugmentor] (main) Quarkus ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π΅ Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΎ Π·Π° 576ms
INFO  [io.quarkus] (main) Quarkus 0.23.2 стартирано Π·Π° 1.083s. Π‘Π»ΡƒΡˆΠ° Π½Π°: http:\/\/0.0.0.0:8080
INFO  [io.quarkus] (main) ΠŸΡ€ΠΎΡ„ΠΈΠ» dev Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½. Активирано Π΅ ΠΆΠΈΠ²ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅.
INFO  [io.quarkus] (main) Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: [cdi]

Π‘Π΅Π³Π° всичко ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° Π±Π΅Π· Π³Ρ€Π΅ΡˆΠΊΠΈ.

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ модСрнизирания helloworld
ΠšΠ°ΠΊΡ‚ΠΎ Π΅ написано Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅, отварямС Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° 0.0.0.0:8080 (Π½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° страница Quarkus ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅) ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ слСдното:

Quarkus: модСрнизация Π½Π° прилоТСния Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° helloworld ΠΎΡ‚ JBoss EAP Quickstart

Рис. 4. Начална страница Π½Π° Quarkus dev.

Π’ анотацията WebServlet Π½Π° Ρ‚ΠΎΠ²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ записано слСдното ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° контСкста:

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

Π—Π°Ρ‚ΠΎΠ²Π° ΠΎΡ‚ΠΈΠ²Π°ΠΌΠ΅ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° Π½Π° 0.0.0.0:8080/HelloWorld ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ слСдното:

Quarkus: модСрнизация Π½Π° прилоТСния Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° helloworld ΠΎΡ‚ JBoss EAP Quickstart

Рис. 5: Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π° Π½Π° The Quarkus dev Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Hello World.

Π•Ρ‚ΠΎ, всичко Ρ€Π°Π±ΠΎΡ‚ΠΈ.

Π‘Π΅Π³Π° Ρ‰Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°. Π—Π°Π±Π΅Π»Π΅ΠΆΠ΅Ρ‚Π΅, Ρ‡Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° ./mvnw compile quarkus:dev всС ΠΎΡ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅ Π΄Π° я спирамС. НСка ΠΏΡ€ΠΎΠ±Π²Π°ΠΌΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ ΡΡŠΡ‰ΠΈΡ‚Π΅ – съвсСм Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½ΠΈ – ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ към самия ΠΊΠΎΠ΄ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Quarkus улСснява ΠΆΠΈΠ²ΠΎΡ‚Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°:

писатСлят.println("<h1>" + helloService.createHelloMessage("ΠœΠ°Ρ€ΠΊΠΎ") + "</h1>");

Π—Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΈ слСд Ρ‚ΠΎΠ²Π° обновявамС ΡƒΠ΅Π± страницата, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ надписа Hello Marco, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Π΅ΠΊΡ€Π°Π½Π½Π°Ρ‚Π° снимка ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ:

Quarkus: модСрнизация Π½Π° прилоТСния Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° helloworld ΠΎΡ‚ JBoss EAP Quickstart

Рис. 6. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π° Hello Marco Π² Quarkus dev.

Π‘Π΅Π³Π° Ρ‰Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΈΠ·Ρ…ΠΎΠ΄Π° Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°:

INFO  [io.qua.dev] (vert.x-worker-thread-3) ΠžΡ‚ΠΊΡ€ΠΈΡ‚ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ [ /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 спря Π·Π° 0.003s
INFO  [io.qua.dep.QuarkusAugmentor] (vert.x-worker-thread-3) Π—Π°ΠΏΠΎΡ‡Π²Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Quarkus
INFO  [io.qua.dep.QuarkusAugmentor] (vert.x-worker-thread-3) Π£Π²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Quarkus Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΎ Π·Π° 232ms
INFO  [io.quarkus] (vert.x-worker-thread-3) Quarkus 0.23.2 Π·Π°ΠΏΠΎΡ‡Π½Π° Π·Π° 0.257s. Π‘Π»ΡƒΡˆΠ° Π½Π°: http://0.0.0.0:8080
INFO  [io.quarkus] (vert.x-worker-thread-3) ΠŸΡ€ΠΎΡ„ΠΈΠ» dev Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½. Π–ΠΈΠ²ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΎ.
INFO  [io.quarkus] (vert.x-worker-thread-3) Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: [cdi]
INFO  [io.qua.dev] (vert.x-worker-thread-3) ΠžΠ±Ρ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Π³ΠΎΡ€Π΅Ρ‰ΠΎ замСстванС: 0.371s

Актуализацията Π½Π° страницата задСйства ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² изходния ΠΊΠΎΠ΄ ΠΈ Quarkus Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ изпълни ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ‚Π° "стоп-старт". И всичко Ρ‚ΠΎΠ²Π° сС случи само Π·Π° 0.371 сСкунди (Π΅Ρ‚ΠΎ я, ΠΎΠ½Π·ΠΈ ΡΡƒΠΏΠ΅Ρ€Π±ΡŠΡ€Π· субатомСн Java).

ИзпълнявамС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° helloworld Π² ΠΏΠ°ΠΊΠ΅Ρ‚ JAR
Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠΎΠ΄ΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ, Ρ‰Π΅ Π³ΠΎ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°ΠΌΠ΅ с слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ ./mvnw clean package

Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° създава Π΄Π²Π° JAR-Ρ„Π°ΠΉΠ»Π° Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° /target: Ρ„Π°ΠΉΠ»ΡŠΡ‚ helloworld-.jar, ΠΊΠΎΠΉΡ‚ΠΎ прСдставлява стандартСн Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚, създадСн ΠΎΡ‚ Maven с класовСтС ΠΈ рСсурситС Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. И Ρ„Π°ΠΉΠ»ΡŠΡ‚ helloworldβ€”runner.jar, прСдставляващ изпълняСм JAR.

ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ ΡƒΠ±Π΅Ρ€-jar, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ всички зависимости просто са ΠΊΠΎΠΏΠΈΡ€Π°Π½ΠΈ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° /target/lib (Π° Π½Π΅ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΈ Π² JAR Ρ„Π°ΠΉΠ»). Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Π·Π° Π΄Π° стартиратС Ρ‚ΠΎΠ·ΠΈ JAR ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΏΠ°ΠΏΠΊΠ° ΠΈΠ»ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ хост, трябва Π΄Π° ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚Π΅ ΠΊΠ°ΠΊΡ‚ΠΎ самия JAR Ρ„Π°ΠΉΠ», Ρ‚Π°ΠΊΠ° ΠΈ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° /lib, ΠΊΠ°Ρ‚ΠΎ сС ΠΈΠΌΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΡŠΡ‚ Class-Path Π² Ρ„Π°ΠΉΠ»Π° MANIFEST.MF Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π° JAR ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° явно изброяванС Π½Π° JAR-ΠΎΠ²Π΅Ρ‚Π΅ ΠΎΡ‚ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° lib.
Π—Π° Π΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ прилоТСния ΡƒΠ±Π΅Ρ€-jar, Π²ΠΈΠΆΡ‚Π΅ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Uber-Jar Creation.

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ helloworld, ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ Π² JAR

Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° стартирамС нашия JAR с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° стандартната ΠΊΠΎΠΌΠ°Π½Π΄Π° java:

$ java -jar ./target/helloworld--runner.jar
INFO  [io.quarkus] (main) Quarkus 0.23.2 стартирано Π·Π° 0.673s. Π‘Π»ΡƒΡˆΠ° Π½Π°: http://0.0.0.0:8080
INFO  [io.quarkus] (main) ΠŸΡ€ΠΎΡ„ΠΈΠ» prod Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½.
INFO  [io.quarkus] (main) Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: [cdi]

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ всичко Ρ‚ΠΎΠ²Π° ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ, ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° Π½Π° 0.0.0.0:8080 ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ всичко Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ трябва.

Π‘ΡŠΠ±ΠΈΡ€Π°ΠΌΠ΅ helloworld Π² Π½Π°Ρ‚ΠΈΠ²Π΅Π½ испълним Ρ„Π°ΠΉΠ»

Π’Π°ΠΊΠ°, Π½Π°ΡˆΠ΅Ρ‚ΠΎ helloworld Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ самостоятСлно Java ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ зависимоститС Π½Π° Quarkus. Но ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅ΠΌ ΠΏΠΎ-Π΄Π°Π»Π΅Ρ‡ ΠΈ Π΄Π° Π³ΠΎ ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π΅ΠΌ Π² Π½Π°Ρ‚ΠΈΠ²Π΅Π½ испълним Ρ„Π°ΠΉΠ».

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΌΠ΅ 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 Π² Π½Π°Ρ‚ΠΈΠ²Π΅Π½ изпълним Ρ„Π°ΠΉΠ»
ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΌΠ΅ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ БъздаванС Π½Π° Π½Π°Ρ‚ΠΈΠ²Π΅Π½ изпълним Ρ„Π°ΠΉΠ»β€”ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²ΠΎ Π½Π° Π½Π°Ρ‚ΠΈΠ²Π΅Π½ изпълним Ρ„Π°ΠΉΠ»: «А сСга Π΄Π° създадСм Π½Π°Ρ‚ΠΈΠ²Π΅Π½ изпълним Ρ„Π°ΠΉΠ» Π·Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π·Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° стартиранС ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° диска. Π˜ΡΠΏΡŠΠ»Π½ΠΈΠΌΠΈΡΡ‚ Ρ„Π°ΠΉΠ» Ρ‰Π΅ ΠΈΠΌΠ° всичко Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° стартиранС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ JVM машина (ΠΏΠΎ-скоро, Π½Π΅ΠΉΠ½Π°Ρ‚Π° ΡΡŠΠΊΡ€Π°Ρ‚Π΅Π½Π° вСрсия, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰Π° само Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ) ΠΈ самото Π½ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β».

Π—Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Π½Π°Ρ‚ΠΈΠ²Π΅Π½ изпълним Ρ„Π°ΠΉΠ», трябва Π΄Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ native ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° Π½Π° Maven:

$ ./mvnw package -Pnative

ΠΠ°ΡˆΠ΅Ρ‚ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ ΠΎΡ‚Π½Π΅ Π΅Π΄Π½Π° ΠΌΠΈΠ½ΡƒΡ‚Π° ΠΈ 10 сСкунди, Π° окончатСлният Ρ„Π°ΠΉΠ» helloworld-runner бСшС създадСн Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° /target.

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ нативния изпълним Ρ„Π°ΠΉΠ» helloworld

На ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ изпълняСм Ρ„Π°ΠΉΠ» /target/helloworld-runner. Π‘Π΅Π³Π° Ρ‰Π΅ Π³ΠΎ стартирамС:

$ ./target/helloworld--runner
INFO  [io.quarkus] (main) Quarkus 0.23.2 стартирано Π·Π° 0.006s. Π‘Π»ΡƒΡˆΠ° Π½Π°: http://0.0.0.0:8080
INFO  [io.quarkus] (main) ΠŸΡ€ΠΎΡ„ΠΈΠ» prod Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½.
INFO  [io.quarkus] (main) Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: [cdi]

ΠžΡ‚Π½ΠΎΠ²ΠΎ отварямС Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° 0.0.0.0:8080 ΠΈ провСрявамС Π΄Π°Π»ΠΈ всичко Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ трябва.

ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ слСдва!

БмятамС, Ρ‡Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ Π·Π° модСрнизация Π½Π° Java прилоТСния с Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Quarkus, Ρ€Π°Π·Π³Π»Π΅Π΄Π°Π½ Π² Ρ‚ΠΎΠ·ΠΈ пост (Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ с прост ΠΏΡ€ΠΈΠΌΠ΅Ρ€), Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ ΠΈ Π² рСалния ΠΆΠΈΠ²ΠΎΡ‚. ВСроятно Ρ‰Π΅ сС ΡΠ±Π»ΡŠΡΠΊΠ°Ρ‚Π΅ с Ρ€Π΅Π΄ΠΈΡ†Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ частично Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π² слСдващия пост, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‰Π΅ станС Π΄ΡƒΠΌΠ° Π·Π° ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² контСкста Π½Π° ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° подобрСнията Π² производитСлността, която Π΅ Π²Π°ΠΆΠ½Π° част ΠΎΡ‚ цСлия процСс Π½Π° модСрнизация Π½Π° прилоТСнията.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster