ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π² ΡΠΎΠ·ΠΈ Π±Π»ΠΎΠ³, ΠΈ Ρ Π²Π°Ρ ΡΠ΅ΡΠ²ΡΡΡΠΈΡΡ ΠΏΠΎΡΡ ΠΎΡ ΡΠ΅ΡΠΈΡΡΠ° Π·Π° Quarkus!

Π±Π΅ΡΠ΅ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Quarkus ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π° MicroProfile ΠΈ Spring. ΠΠ° Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ° ΠΊΠ°ΡΠΎ βΡΡΠΏΠ΅Ρ Π±ΡΡΠ·Π° ΡΡΠ±Π°ΡΠΎΠΌΠ½Π° Javaβ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ βKubernetes-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ Java ΡΡΠ΅ΠΊ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ Π·Π° GraalVM ΠΈ OpenJDK HotSpot, ΡΡΠ±ΡΠ°Π½ ΠΎΡ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈβ. ΠΠ½Π΅Ρ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Quarkus, Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π° , Π² ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ Π² Quarkus ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ CDI ΠΈ Servlet 3.
ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ ΠΊΠ°ΠΊΡΠΎ Quarkus, ΡΠ°ΠΊΠ° ΠΈ JBoss EAP Π°ΠΊΡΠ΅Π½ΡΠΈΡΠ°Ρ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π½Π° Π±Π°Π·Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈ. ΠΡΠΌΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ Π½Π° JBoss EAP? ΠΡΠΌΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π»Π΅ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Ρ
Π²ΡΡΠ»ΠΈ ΠΎΡ ΡΠ΅ΠΊΡΡΠΈΡ ΡΡΡΠ²ΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° JBoss EAP Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° . Π‘Π»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΡΠΈΠ½Π°Π»Π½Π°ΡΠ° ΠΈ ΡΠ°Π±ΠΎΡΠ΅ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄ ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ , Π² ΠΌΠΎΠ΄ΡΠ»Π° .
ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΠΎΡΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π° , ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΠΈ Building a .
ΠΠ±Π·Π°Π²Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΡΠ΅ Ρ ΠΊΠΎΠ΄
ΠΡΡΠ²ΠΎ, Π½Π΅ΠΊΠ° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΊΠ»ΠΎΠ½ Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ :
$ git clone https://github.com/jboss-developer/jboss-eap-quickstarts.git
ΠΠ»ΠΎΠ½ΠΈΡΠ°ΠΌΠ΅ Π² 'jboss-eap-quickstarts'...
remote: ΠΠ·Π±ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ: 148133, ΠΏΡΠΈΠΊΠ»ΡΡΠ΅Π½ΠΎ.
remote: ΠΠ±ΡΠΎ 148133 (Π΄Π΅Π»ΡΠ° 0), ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ 0 (Π΄Π΅Π»ΡΠ° 0), ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ 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] (ΠΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΠΏΠΎΡΠΎΠΊ Π½Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅) WFLYSRV0025: JBoss EAP 7.2.0.GA (WildFly Core 6.0.11.Final-redhat-00001) ΡΡΠ°ΡΡΠΈΡΠ°Π½ Π·Π° 3315ΠΌΡ - Π‘ΡΠ°ΡΡΠΈΡΠ°Π½ΠΈ 306 ΠΎΡ 527 ΡΡΠ»ΡΠ³ΠΈ (321 ΡΡΠ»ΡΠ³ΠΈ ΡΠ° ΠΌΡΡΡΠ²ΠΈ, ΠΏΠ°ΡΠΈΠ²Π½ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎ Π·Π°ΡΠ²ΠΊΠ°)
3. ΠΡΠ²Π°ΡΡΠΌΠ΅ Π² Π±ΡΠ°ΡΠ·ΡΡ :8080 ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠΎΠ²Π°:

Π ΠΈΡ. 1. ΠΠ°ΡΠ°Π»Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ° Π½Π° JBoss EAP.
4. Π‘Π»Π΅Π΄Π²Π°ΠΌΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ Π² ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ : ΡΠ°Π·Π³ΡΡΡΠ°ΠΌΠ΅ helloworld ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ (ΠΎΡ ΠΊΠΎΡΠ΅Π½Π½Π°ΡΠ° ΠΏΠ°ΠΏΠΊΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°) ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
$ mvn clean install wildfly:deploy
Π‘Π»Π΅Π΄ ΡΡΠΏΠ΅ΡΠ½ΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ Π½Π΅ΡΠΎ ΠΊΠ°ΡΠΎ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:
[INFO] ------------------------------------------------------------------------
[INFO] Π£Π‘ΠΠΠ¨ΠΠ Π‘Π’Π ΠΠΠ
[INFO] ------------------------------------------------------------------------
[INFO] ΠΠ±ΡΠΎ Π²ΡΠ΅ΠΌΠ΅: 8.224 Ρ
Π ΡΠ°ΠΊΠ°, ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎΡΠΎ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ helloworld Π½Π° JBoss EAP ΠΎΡΠ½Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 8 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
Π’Π΅ΡΡΠ²Π°ΠΌΠ΅ helloworld
ΠΠ΅ΠΉΡΡΠ²Π°ΠΉΠΊΠΈ ΡΡΡΠΈΠΊΡΠ½ΠΎ ΡΠΏΠΎΡΠ΅Π΄ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ , ΠΎΡΠ²Π°ΡΡΠΌΠ΅ Π² Π±ΡΠ°ΡΠ·ΡΡΠ° :8080/helloworld ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:

Π€ΠΈΠ³. 2. ΠΠ·Ρ ΠΎΠ΄Π΅Π½ Hello World ΠΎΡ JBoss EAP.
ΠΠ½Π°ΡΡΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ
ΠΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ createHelloMessage(String name) ΠΎΡ World Π½Π° Marco:
writer.println("<h1>" + helloService.createHelloMessage("Marco") + "</h1>");
ΠΡΠ½ΠΎΠ²ΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
$ mvn clean install wildfly:deploy
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°ΠΌΠ΅ ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π² Π±ΡΠ°ΡΠ·ΡΡΠ° ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ ΡΠ΅ΠΊΡΡΡΡ ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»:

Π€ΠΈΠ³. 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 ΡΠ΅ΡΡΠΎ ΠΈΠ·Π»ΠΈΠ·Π° Ρ Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠΎΡ Π²Π΅ΡΡΠΈΡ Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° Π½Π° ΡΠ°ΠΉΡΠ° .
ΠΠΎ-Π³ΠΎΡΠ½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ Π²ΠΌΡΠΊΠ½Π΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π² pom.xml:
- Π‘Π²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ , Π·Π°Π΄Π°Π²Π°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Quarkus.
- ΠΠ»ΠΎΠΊΡΡ Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° Quarkus BOM (bill of materials), ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° Π½Π΅ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π²Π΅ΡΡΠΈΡ Π·Π° Π²ΡΡΠΊΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ Π½Π° Quarkus.
- ΠΠ»ΡΠ³ΠΈΠ½ΡΡ quarkus-maven-plugin, ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΡΠ΅ΠΆΠΈΠΌ development mode.
- ΠΡΠΎΡΠΈΠ» native Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π² pom.xml ΡΡΡΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- ΠΠ·Π²Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΡΠ°Π³ ΠΎΡ Π±Π»ΠΎΠΊΠ° ΠΈ Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠΌΠ΅ Π½Π°Π΄ ΡΠ°Π³ . Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π½Π° ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ Π΅ΡΠ°ΠΏ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΠΌ Π±Π»ΠΎΠΊΠ° , Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΠΌ .
- ΠΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΌΠ΅ Π±Π»ΠΎΠΊΠ° , ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΊΠΈ pom ΠΎΡ JBoss ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Quarkus.
- ΠΠΎΠ±Π°Π²ΡΠΌΠ΅ ΡΠ°Π³ ΠΈ Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠΌΠ΅ ΠΏΠΎΠ΄ ΡΠ°Π³Π° . ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Π½ΠΎΠΌΠ΅Ρ Π½Π° Π²Π΅ΡΡΠΈΡΡΠ°, ΠΊΠ°ΠΊΡΠ²ΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅.
- ΠΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΌΠ΅ ΡΠ°Π³Π° , ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΠ΅ Π½Π΅ Π΅ WAR, Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ JAR.
- ΠΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
- Π‘ΠΌΠ΅Π½ΡΠΌΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠ° javax.enterprise:cdi-api Π½Π° io.quarkus:quarkus-arc, ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΉΠΊΠΈ provided, ΡΡΠΉ ΠΊΠ°ΡΠΎ (ΡΠΏΠΎΡΠ΅Π΄ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°) ΡΠΎΠ²Π° Quarkus ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ CDI.
- Π‘ΠΌΠ΅Π½ΡΠΌΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠ° org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec Π½Π° io.quarkus:quarkus-undertow, ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΉΠΊΠΈ provided, ΡΡΠΉ ΠΊΠ°ΡΠΎ (ΡΠΏΠΎΡΠ΅Π΄ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°) ΡΠΎΠ²Π° Quarkus ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅ΡΠ²Π»Π΅ΡΠΈ.
- ΠΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΌΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠ° org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΡ ΠΈΠ΄Π²Π° Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠΎΠΊΡ-ΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡ ΠΌΠ΅.
ΠΠ΅ΡΡΠΈΡΡΠ° Π½Π° ΡΠ°ΠΉΠ»Π° 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 (ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ Π² ΡΠ΅ΠΊΡΠΈΡΡΠ° Run the modernized helloworld).
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ helloworld
ΠΠ° Π΄Π° ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ quarkus:dev, ΠΊΠΎΠΉΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ° Quarkus Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ (ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π² ΡΠΎΠ·ΠΈ ΡΠ°Π·Π΄Π΅Π» Π½Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Π·Π° ).
ΠΠ΅Π»Π΅ΠΆΠΊΠ°: ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½Π΅ ΡΠΌΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ.
Π‘Π΅Π³Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°, Π·Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΠΊΠ°ΠΊ ΡΠ΅ ΡΡΠ°Π±ΠΎΡΠΈ:
$ ./mvnw compile quarkus:dev
[INFO] Π’ΡΡΡΠ΅Π½Π΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ...
[INFO]
[INFO] ----------------< org.jboss.eap.quickstarts:helloworld >----------------
[INFO] ΠΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ: 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
- Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½ Π² ΠΊΠ»Π°ΡΠΎΠ²ΠΈΡ Π±ΠΈΠΉΠ½ [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(Native Method)
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
- Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½ Π² ΠΊΠ»Π°ΡΠΎΠ²ΠΈΡ Π±ΠΈΠΉΠ½ [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 ΡΠΊΠ°Π·Π²Π° Π½Π° ΠΊΠ»Π°ΡΠ° HelloService, ΠΊΠΎΠΉΡΠΎ Π΅ ΡΠ»Π΅Π½ Π½Π° ΠΊΠ»Π°ΡΠ° HelloWorldServlet (java member: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService). ΠΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠ° Π΅, ΡΠ΅ HelloWorldServlet ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ ΠΎΡ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡΠ°Π½ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ HelloService, Π° ΡΠ°ΠΊΡΠ² Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ (Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΈ Π΄Π²Π°ΡΠ° ΠΊΠ»Π°ΡΠ° ΡΠ° Π² Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡΠΈ ΠΏΠ°ΠΊΠ΅Ρ).
ΠΠ°ΠΉ-ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΠΊΡΠΌ ΠΈ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Π² Quarkus , ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΈ (CDI). ΠΠ°ΡΠΎΠ²Π° ΠΎΡΠ²Π°ΡΡΠΌΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Contexts and Dependency Injection ΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π° ΡΠ΅ΡΠ΅ΠΌ: Β«Bean-ΠΊΠ»Π°Ρ, ΠΊΠΎΠΉΡΠΎ Π½ΡΠΌΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΠ° bean Π°Π½ΠΎΡΠ°ΡΠΈΡ, Π½Π΅ ΡΠ΅ ΡΡΡΡΠΈΒ».
ΠΠΎΠ³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠ»Π°ΡΠ° HelloService β Π² Π½Π΅Π³ΠΎ Π½Π°ΠΈΡΡΠΈΠ½Π° Π½ΡΠΌΠ° ΡΠ°ΠΊΠ°Π²Π° Π°Π½ΠΎΡΠ°ΡΠΈΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ°ΠΊΠ°Π²Π°, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Quarkus Π΄Π° ΡΡΡΡΠΈ ΠΈ Π½Π°ΠΌΠΈΡΠ° bean. Π ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π° Π΅ stateless-ΠΎΠ±Π΅ΠΊΡ, ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π°Π½ΠΎΡΠ°ΡΠΈΡΡΠ° @ApplicationScoped ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
@ApplicationScoped
public class HelloService {
ΠΠ΅Π»Π΅ΠΆΠΊΠ°: ΡΡΠΊ ΡΡΠ΅Π΄Π°ΡΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ»ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ (Π²ΠΈΠΆΡΠ΅ ΡΠ΅Π΄Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρ), ΠΈ ΡΠΎΠ²Π° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΡΡΠ½ΠΎ, ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
import javax.enterprise.context.ApplicationScoped;
ΠΠΊΠΎ ΡΠ΅ ΡΡΠΌΠ½ΡΠ²Π°ΡΠ΅ ΠΊΠ°ΠΊΠ²Π° ΠΎΠ±Π»Π°ΡΡ scope Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ Π·Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ bean Π½Π΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π° Π²ΠΎΠΎΠ±ΡΠ΅, ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° .
Π‘Π΅Π³Π° ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΏΡΠΎΠ±Π²Π°ΠΌΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° .\/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) ΠΠ°ΠΏΠΎΡΠ²Π°Π½Π΅ Π½Π° quarkusaugmentation
INFO [io.qua.dep.QuarkusAugmentor] (main) Quarkus augmentation Π·Π°Π²ΡΡΡΠ΅Π½ΠΎ Π·Π° 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
ΠΠ°ΠΊΡΠΎ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅, ΠΎΡΠ²Π°ΡΡΠΌΠ΅ Π² Π±ΡΠ°ΡΠ·ΡΡΠ° :8080 (Π½Π°ΡΠ°Π»Π½Π°ΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° Π½Π° Quarkus ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅) ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:

Π ΠΈΡ. 4. ΠΠ°ΡΠ°Π»Π½Π°ΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° Π½Π° Quarkus dev.
Π Π°Π½ΠΎΡΠ°ΡΠΈΡΡΠ° WebServlet Π½Π° ΡΠΎΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°:
@WebServlet("\/HelloWorld")
public class HelloWorldServlet extends HttpServlet {
Π’Π°ΠΊΠ° ΡΠ΅, ΠΎΡΠΈΠ²Π°ΠΌΠ΅ Π² Π±ΡΠ°ΡΠ·ΡΡΠ° Π½Π° :8080/HelloWorld ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:

Π ΠΈΡ. 5: Π‘ΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° The Quarkus dev Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Hello World.
ΠΡΠΎ, Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ.
Π‘Π΅Π³Π° ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°. ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ./mvnw compile quarkus:dev Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΈ Π½ΡΠΌΠ°ΠΌΠ΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π° Ρ ΡΠΏΠΈΡΠ°ΠΌΠ΅. Π‘Π΅Π³Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌ ΡΡΡΠΈΡΠ΅ β ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ²ΠΈΠ°Π»Π½ΠΈ β ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΠ°ΠΌΠΈΡ ΠΊΠΎΠ΄ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Quarkus ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΠΆΠΈΠ²ΠΎΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°:
writer.println("<h1>" + helloService.createHelloMessage("Marco") + "</h1>");
ΠΠ°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ ΡΠ°ΠΉΠ»Π° ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°ΠΌΠ΅ ΡΠ΅Π± ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ°, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π½Π°Π΄ΠΏΠΈΡΠ° Hello Marco, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Π΅ΠΊΡΠ°Π½Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρ:

Π ΠΈΡ. 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) ΠΠ°ΠΏΠΎΡΠ²Π° augmentaΡΠΈΡ Π½Π° Quarkus
INFO [io.qua.dep.QuarkusAugmentor] (vert.x-worker-thread-3) AugmentΠ°ΡΠΈΡΡΠ° Π½Π° 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, ΠΌΠΎΠ»Ρ, ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ ΡΠ΅ ΠΊΡΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ .
Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° 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) ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½ ΠΏΡΠΎΡΠΈΠ» ΠΏΡΠΎΠ΄.
INFO [io.quarkus] (main) ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ: [cdi]
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½ΠΎ, ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π² Π±ΡΠ°ΡΠ·ΡΡΠ° Π½Π° :8080 ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅, ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΡΠΎ ΡΡΡΠ±Π²Π°.
Π‘ΡΠ±ΠΈΡΠ°ΠΌΠ΅ helloworld Π² Π½Π°ΡΠΈΠ²Π΅Π½ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ°ΠΉΠ»
Π ΡΠ°ΠΊΠ°, Π½Π°ΡΠΈΡΡ helloworld ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΡΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΎ Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° Quarkus. ΠΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠΈΠ΄Π΅ΠΌ ΠΏΠΎ-Π΄Π°Π»Π΅ΡΠ΅ ΠΈ Π΄Π° Π³ΠΎ ΠΏΡΠ΅Π²ΡΡΠ½Π΅ΠΌ Π² Π½Π°ΡΠΈΠ²Π΅Π½ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ°ΠΉΠ».
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ GraalVM
ΠΡΡΠ²ΠΎ, Π·Π° ΡΠ΅Π»ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ:
1. ΠΠ·ΡΠ΅Π³Π»Π΅ΡΠ΅ GraalVM 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) ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½ ΠΏΡΠΎΡΠΈΠ» ΠΏΡΠΎΠ΄.
INFO [io.quarkus] (main) ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ: [cdi]
ΠΡΠ½ΠΎΠ²ΠΎ ΠΎΡΠ²Π°ΡΡΠΌΠ΅ Π² Π±ΡΠ°ΡΠ·ΡΡΠ° :8080 ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅, ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΡΠΎ ΡΡΡΠ±Π²Π°.
ΠΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°!
Π‘ΠΌΡΡΠ°ΠΌΠ΅, ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΈΡΡ Π² ΡΠΎΠ·ΠΈ ΠΏΠΎΡΡ (Π΄ΠΎΡΠΈ ΠΈ Π½Π° ΠΏΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Ρ) ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π° Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Quarkus ΡΠΈ Π·Π°ΡΠ»ΡΠΆΠ°Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½ Π² ΡΠ΅Π°Π»Π½ΠΈΡ ΠΆΠΈΠ²ΠΎΡ. ΠΡΠΈ ΡΠΎΠ²Π°, Π²ΠΈΠ΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΅ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°ΡΠ΅ Ρ ΡΠ΅Π΄ΠΈΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΏΠΎΡΡ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΌΠ΅ΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, Π·Π° Π΄Π° ΠΎΡΠ΅Π½ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, Π²Π°ΠΆΠ½Π° ΡΠ°ΡΡ ΠΎΡ ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
