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

Π±Π΅ΡΠ΅ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Quarkus ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π° MicroProfile ΠΈ Spring. ΠΠ°ΠΏΠΎΠΌΠ½ΡΠΌΠ΅, ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ° ΠΊΠ°ΡΠΎ Β«ΡΡΠΏΠ΅ΡΠ±ΡΡΠ·Π° ΡΡΠ±Π°ΡΠΎΠΌΠ½Π° JavaΒ», ΡΡΡΠΎ ΡΠ°ΠΊΠ° Β«Kubernetes-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ Java ΡΡΠ΅ΠΊ, Π½Π°ΡΠ΅Π»Π΅Π½ Π½Π° GraalVM ΠΈ OpenJDK HotSpot ΠΈ ΡΡΠ±ΡΠ°Π½ ΠΎΡ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΒ». ΠΠ½Π΅Ρ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Quarkus, Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π° , Π² ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ Π² Quarkus ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ CDI ΠΈ Servlet 3.
Π’ΡΠΊ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ ΠΈ Quarkus, ΠΈ JBoss EAP Π°ΠΊΡΠ΅Π½ΡΠΈΡΠ°Ρ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, ΠΈΠ·ΡΡΠ»ΠΎ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈ. ΠΡΠΌΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ Π½Π° JBoss EAP? ΠΠ΅ Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠΎ ΠΌΠΎΠΆΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Ρ
Π²ΡΡΠ»Π΅Π½ΠΎ ΠΎΡ ΡΠ΅ΠΊΡΡΠΈΡ ΡΡΡΠ²ΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° JBoss EAP Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° . Π‘Π»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΡΠΈΠ½Π°Π»Π½Π°ΡΠ° ΠΈ ΡΠ°Π±ΠΎΡΠ΅ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΠ°Π½ ΠΊΠΎΠ΄ ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ , Π² ΠΌΠΎΠ΄ΡΠ»Π° .
ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΠΎΡΡ Π±ΡΡ Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ , ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΠΈ Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° .
Π‘Π½Π°Π±Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅ Ρ ΠΊΠΎΠ΄Π°
ΠΡΡΠ²ΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΊΠ»ΠΎΠ½ Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΎ :
$ 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. ΠΡΠ²Π°ΡΡΠΌΠ΅ Π² Π±ΡΠ°ΡΠ·ΡΡΠ° :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:
ΠΏΠΈΡΠ°ΡΠ΅Π»ΡΡ.println("<h1>" + helloService.createHelloMessage("ΠΠ°ΡΠΊΠΎ") + "</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 (ΡΠΌΠ΅ΡΠΊΠ° Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΡΠ΅), Π·Π° Π΄Π° Π½Π΅ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π²Π΅ΡΡΠΈΡ Π·Π° Π²ΡΡΠΊΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Quarkus.
- ΠΠ»ΡΠ³ΠΈΠ½ΡΡ quarkus-maven-plugin, ΠΊΠΎΠΉΡΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π·Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅.
- ΠΡΠΎΡΠΈΠ» 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 (ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²ΠΈΠΆΡΠ΅ Π² Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Π·Π° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΠ°Π½ Ρ Π΅Π»Π»ΠΎΡΠΎΡΠ»Π΄).
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Ρ
Π΅Π»Π»ΠΎΡΠΎΡΠ»Π΄
ΠΠ° Π΄Π° ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ 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 ΡΠ°Π±ΠΎΡΠΈ , ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΈ (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) ΠΠ°ΠΏΠΎΡΠ²Π° 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
ΠΠ°ΠΊΡΠΎ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅, ΠΎΡΠ²Π°ΡΡΠΌΠ΅ Π² Π±ΡΠ°ΡΠ·ΡΡΠ° :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 ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΠΆΠΈΠ²ΠΎΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°:
ΠΏΠΈΡΠ°ΡΠ΅Π»ΡΡ.println("<h1>" + helloService.createHelloMessage("ΠΠ°ΡΠΊΠΎ") + "</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) ΠΠ°ΠΏΠΎΡΠ²Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° 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, Π²ΠΈΠΆΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ .
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ 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]
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΏΡΠΈΠΊΠ»ΡΡΠΈ, ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π² Π±ΡΠ°ΡΠ·ΡΡΠ° Π½Π° :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) ΠΡΠΎΡΠΈΠ» prod Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½.
INFO [io.quarkus] (main) ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ: [cdi]
ΠΡΠ½ΠΎΠ²ΠΎ ΠΎΡΠ²Π°ΡΡΠΌΠ΅ Π² Π±ΡΠ°ΡΠ·ΡΡΠ° :8080 ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ Π΄Π°Π»ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΡΠΎ ΡΡΡΠ±Π²Π°.
ΠΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ»Π΅Π΄Π²Π°!
Π‘ΠΌΡΡΠ°ΠΌΠ΅, ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΡΡ Π·Π° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π° Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Quarkus, ΡΠ°Π·Π³Π»Π΅Π΄Π°Π½ Π² ΡΠΎΠ·ΠΈ ΠΏΠΎΡΡ (Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Ρ ΠΏΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Ρ), Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌ ΠΈ Π² ΡΠ΅Π°Π»Π½ΠΈΡ ΠΆΠΈΠ²ΠΎΡ. ΠΠ΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΅ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°ΡΠ΅ Ρ ΡΠ΅Π΄ΠΈΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΏΠΎΡΡ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΡΡΠ°Π½Π΅ Π΄ΡΠΌΠ° Π·Π° ΠΈΠ·ΠΌΠ΅ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, ΠΊΠΎΡΡΠΎ Π΅ Π²Π°ΠΆΠ½Π° ΡΠ°ΡΡ ΠΎΡ ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
