Quarkus: αž‘αŸ†αž“αžΎαž”αž€αž˜αŸ’αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αž™αž”αŸ’αžšαžΎ Helloworld αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž–αžΈ JBoss EAP Quickstart

αž‡αŸ†αžšαžΆαž”αžŸαž½αžšαž’αŸ’αž“αž€αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆαž“αŸ…αž›αžΎαž”αŸ’αž›αž€αŸ‹αž“αŸαŸ‡ αž“αŸαŸ‡αž‡αžΆαž”αŸ’αžšαž€αžΆαžŸαž‘αžΈαž”αž½αž“αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸŠαŸαžšαžΈ Quarkus!

Quarkus: αž‘αŸ†αž“αžΎαž”αž€αž˜αŸ’αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αž™αž”αŸ’αžšαžΎ Helloworld αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž–αžΈ JBoss EAP Quickstart

αž—αŸ’αž“αŸ†αž–αŸαž‰αž”αŸ‰αž»αžŸαŸ’αžαž·αŸαž˜αž»αž“ αž‚αžΊαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž› Quarkus αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αžΌαžœ MicroProfile αž“αž·αž„ Spring αŸ” αž…αžΌαžšαž™αžΎαž„αžšαŸ†αž›αžΉαž€αžšαžΏαž„αž“αŸ„αŸ‡αŸ” αžƒαžΊαž€ αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž‡αžΆ "sutra-fast-fast subatomic Java" αž αŸ…αž€αžΆαžαŸ‹αžαžΆ "αž‡αž„αŸ‹ Java αžαž˜αŸ’αžšαž„αŸ‹αž‘αž·αžŸ Kubernetes αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ GraalVM αž“αž·αž„ OpenJDK HotSpot αž αžΎαž™αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž–αžΈαž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αž“αž·αž„αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž›αŸ’αž’αž”αŸ†αž•αž»αžαŸ”" αžαŸ’αž„αŸƒαž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžšαž”αŸ€αž”αž’αŸ’αžœαžΎαž‘αŸ†αž“αžΎαž”αž€αž˜αŸ’αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Java αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαž˜αžαŸ’αžαž—αžΆαž–αžšαž”αžŸαŸ‹ Quarkus αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž‘αžΆαž αžšαžŽαŸ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ helloworld αž–αžΈ Red Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstart repositoryαžŠαŸ‚αž›αž”αŸ’αžšαžΎαž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆ CDI αž“αž·αž„ Servlet 3 αž‚αžΆαŸ†αž‘αŸ’αžšαžŠαŸ„αž™ Quarkus αŸ”

αžœαžΆαž‡αžΆαžšαžΏαž„αžŸαŸ†αžαžΆαž“αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžαžΆαž‘αžΆαŸ†αž„ Quarkus αž“αž·αž„ JBoss EAP αžŸαž„αŸ’αž€αžαŸ‹αž’αŸ’αž„αž“αŸ‹αž›αžΎαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž•αŸ’αž’αŸ‚αž€αž›αžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αŸ” αž˜αž·αž“αž˜αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎ JBoss EAP αž‘αŸ? αž‚αŸ’αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž‘αŸ αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αŸαžšαž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‘αŸ… JBoss EAP αžŠαŸ„αž™αž”αŸ’αžšαžΎ αž§αž”αž€αžšαžŽαŸαž’αŸ’αžœαžΎαž…αŸ†αžŽαžΆαž€αžŸαŸ’αžšαž»αž€αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Red Hat. αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΌαžŠαž‘αŸ†αž“αžΎαž”αž€αž˜αŸ’αž˜αž“αžΉαž„αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ github.com/mrizzi/jboss-eap-quickstarts/tree/quarkus, αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΌαžŒαž»αž› αžŸαž½αžŸαŸ’αžαžΈβ€‹αž–αž·αž—αž–αž›αŸ„αž€.

αž“αŸ…αž–αŸαž›αžŸαžšαžŸαŸαžšαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž™αžΎαž„αž”αŸ’αžšαžΎ αž€αžΆαžšαž”αž„αŸ’αžšαŸ€αž“ 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/

αžŸαžΌαž˜αž˜αžΎαž›αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ helloworld αžŠαžΎαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš

αžαžΆαž˜αž–αž·αžαž‘αŸ… αžαŸ’αž›αžΉαž˜αžŸαžΆαžšαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡αž‚αžΊαž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž–αžΈαžˆαŸ’αž˜αŸ„αŸ‡ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž“αžΉαž„αž’αŸ’αžœαžΎαž‘αŸ†αž“αžΎαž”αž€αž˜αŸ’αž˜αž€αžΌαžŠαžšαž”αžŸαŸ‹αžœαžΆαž™αŸ‰αžΆαž„αžαžΉαž„αžšαŸ‰αžΉαž„αžαžΆαž˜αž”αŸ‚αž”αžœαž·αž‘αŸ’αž™αžΆαžŸαžΆαžŸαŸ’αžαŸ’αžšαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž‡αžΆαžŠαŸ†αž”αžΌαž„ αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αžŠαžΎαž˜αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ helloworld

1. αž”αžΎαž€ terminal αž αžΎαž™αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹ root αž“αŸƒ JBoss EAP folder (αž’αŸ’αž“αž€αž’αžΆαž…αž‘αžΆαž‰αž™αž€αžœαžΆαž”αžΆαž“ αž“αŸ…αž‘αžΈαž“αŸαŸ‡) αž“αŸ„αŸ‡αž‚αžΊαž‘αŸ…αž€αžΆαž“αŸ‹αžαž 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: αž‘αŸ†αž“αžΎαž”αž€αž˜αŸ’αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αž™αž”αŸ’αžšαžΎ Helloworld αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž–αžΈ JBoss EAP Quickstart

αž’αž„αŸ’αž€αžšαŸ” 1. αž‘αŸ†αž–αŸαžšαžŠαžΎαž˜ JBoss EAP αŸ”

4. αž’αž“αž»αžœαžαŸ’αžαžαžΆαž˜αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ€αžœαž—αŸ…αžŽαŸ‚αž“αžΆαŸ† αž”αž„αŸ’αž€αžΎαž αž“αž·αž„αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ QuickstartαŸ– αž–αž„αŸ’αžšαžΈαž€ helloworld αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš (αž–αžΈαžαžαž―αž€αžŸαžΆαžšαžŠαžΎαž˜αž‚αž˜αŸ’αžšαŸ„αž„) αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

$ mvn clean install wildfly:deploy

αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž–αžΈβ€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·β€‹αž–αžΆαž€αŸ’αž™β€‹αž”αž‰αŸ’αž‡αžΆβ€‹αž“αŸαŸ‡β€‹αžŠαŸ„αž™β€‹αž‡αŸ„αž‚αž‡αŸαž™ αž™αžΎαž„β€‹αž“αžΉαž„β€‹αžƒαžΎαž‰β€‹αž’αŸ’αžœαžΈβ€‹αž˜αž½αž™β€‹αžŠαžΌαž…β€‹αžαžΆαž„β€‹αž€αŸ’αžšαŸ„αž˜β€‹αž€αŸ’αž“αž»αž„β€‹αž€αŸ†αžŽαžαŸ‹β€‹αž αŸαžαž»αŸ–

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

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž€αžΆαžšαžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ†αž”αžΌαž„αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ helloworld αž“αŸ…αž›αžΎ JBoss EAP αž…αŸ†αžŽαžΆαž™αž–αŸαž›αžαŸ’αžšαžΉαž˜αžαŸ‚αž‡αžΆαž„ 8 αžœαž·αž“αžΆαž‘αžΈαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αžŸαžΆαž€αž›αŸ’αž”αž„ helloworld

αž’αž“αž»αžœαžαŸ’αžαž™αŸ‰αžΆαž„αžαžΉαž„αžšαŸ‰αžΉαž„αžαžΆαž˜αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ† αž…αžΌαž›αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αžΎαž€αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€ 127.0.0.1:8080/helloworld αž αžΎαž™αž™αžΎαž„αžƒαžΎαž‰αž“αŸαŸ‡αŸ–

Quarkus: αž‘αŸ†αž“αžΎαž”αž€αž˜αŸ’αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αž™αž”αŸ’αžšαžΎ Helloworld αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž–αžΈ JBoss EAP Quickstart

αž’αž„αŸ’αž€αžšαŸ” 2. Original Hello World αž–αžΈ JBoss EAP αŸ”

αž’αŸ’αžœαžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš

αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž”αž‰αŸ’αž…αžΌαž› createHelloMessage(αžˆαŸ’αž˜αŸ„αŸ‡αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžš) αž–αžΈαž–αž·αž—αž–αž›αŸ„αž€αž‘αŸ…αž‡αžΆ MarcoαŸ–

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

αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž˜αŸ’αžαž„αž‘αŸ€αžαŸ–

$ mvn clean install wildfly:deploy

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž™αžΎαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž‘αŸ†αž–αŸαžšαž‘αžΎαž„αžœαž·αž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€ αž αžΎαž™αžƒαžΎαž‰αžαžΆαž’αžαŸ’αžαž”αž‘αž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ–

Quarkus: αž‘αŸ†αž“αžΎαž”αž€αž˜αŸ’αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αž™αž”αŸ’αžšαžΎ Helloworld αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž–αžΈ JBoss EAP Quickstart

αž’αž„αŸ’αž€αžšαŸ” 3. αž‡αŸ†αžšαžΆαž”αžŸαž½αžš Marco αž“αŸ…αž€αŸ’αž“αž»αž„ JBoss EAP αŸ”

αžαŸ’αžšαž›αž”αŸ‹αž˜αž€αžœαž·αž‰αž“αžΌαžœαž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ helloworld αž αžΎαž™αž”αž·αž‘ JBoss EAP

αž“αŸαŸ‡αž‚αžΊαžŸαŸ’αžšαŸαž…αž…αž·αžαŸ’αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αž›αž»αž”αž…αŸ„αž›αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αžΆαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

$ mvn clean install wildfly:undeploy

αžŠαžΎαž˜αŸ’αž”αžΈαž”αž·αž‘αž§αž‘αžΆαž αžšαžŽαŸ JBoss EAP αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž…αž»αž… Ctrl+C αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž„αŸ’αž’αž½αž…αžŸαŸ’αžαžΆαž“αžΈαž™αŸ”

αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„ helloworld

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αžŸαžΌαž˜αž’αŸ’αžœαžΎαž‘αŸ†αž“αžΎαž”αž€αž˜αŸ’αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ 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 αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡αž“αžΉαž„αž›αŸ‚αž„αžαŸ’αžšαžΌαžœαž€αžΆαžš parent pom αž–αžΈ JBoss αž‘αŸ€αžαž αžΎαž™αŸ”
  3. αž”αž“αŸ’αžαŸ‚αž˜αžŸαŸ’αž›αžΆαž€ αž αžΎαž™αžŠαžΆαž€αŸ‹αžœαžΆαž“αŸ…αž€αŸ’αžšαŸ„αž˜αžŸαŸ’αž›αžΆαž€ αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž›αŸαžαž€αŸ†αžŽαŸ‚αžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αž„αŸ‹αž”αžΆαž“αŸ”
  4. αž™αžΎαž„αžŠαž€αžŸαŸ’αž›αžΆαž€ αž…αŸαž‰ αž–αŸ’αžšαŸ„αŸ‡αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡αž›αŸ‚αž„αž‡αžΆ WAR αž‘αŸ€αžαž αžΎαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆ JAR αž’αž˜αŸ’αž˜αžαžΆαŸ”
  5. αž™αžΎαž„αž€αŸ‚αž”αŸ’αžšαŸ‚αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ
    1. αž™αžΎαž„αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš javax.enterprise:cdi-api dependency αž‘αŸ… io.quarkus:quarkus-arc αžŠαŸ„αž™αžŠαž€αž…αŸαž‰ provided αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈ (αž™αŸ„αž„αž‘αŸ…αžαžΆαž˜αž―αž€αžŸαžΆαžš) αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜ Quarkus αž“αŸαŸ‡αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž…αžΆαž€αŸ‹αž‘αŸ…αž›αžΎ CDI dependenciesαŸ”
    2. αž™αžΎαž„αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™ org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec αž‘αŸ…αž‡αžΆ io.quarkus:quarkus-undertow αžŠαŸ„αž™αžŠαž€αž…αŸαž‰ αž•αŸ’αžαž›αŸ‹ αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈ (αž™αŸ„αž„αžαžΆαž˜αž―αž€αžŸαžΆαžš) αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜ Quarkus αž“αŸαŸ‡ αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš servlet 'ov.
    3. αž™αžΎαž„αžŠαž€ org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec dependency αž…αŸαž‰ αžŠαŸ„αž™αžŸαžΆαžšαžœαžΆαž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžŠαŸ‚αž›αž™αžΎαž„αž‘αžΎαž”αžαŸ‚αž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ”

αž€αŸ†αžŽαŸ‚αž“αŸƒαž―αž€αžŸαžΆαžš pom.xml αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ… github.com/mrizzi/jboss-eap-quickstarts/blob/quarkus/helloworld/pom.xml.

αžŸαžΌαž˜αž…αŸ†αžŽαžΆαŸ†αžαžΆ mvn io.quarkus:quarkus-maven-plugin:0.23.2:create command αžαžΆαž„αž›αžΎαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž―αž€αžŸαžΆαžš pom.xml αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž”αž“αŸ’αžαŸ‚αž˜αžŸαž˜αžΆαžŸαž’αžΆαžαž»αž˜αž½αž™αž…αŸ†αž“αž½αž“αž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„ αž–αŸ„αž›αž‚αžΊαž―αž€αžŸαžΆαžš αž“αž·αž„αžαžαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  • αž―αž€αžŸαžΆαžš mvnw αž“αž·αž„ mvnw.cmd αž“αž·αž„αžαž .mvnαŸ– Maven Wrapper αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‚αž˜αŸ’αžšαŸ„αž„ Maven αž“αŸƒαž€αŸ†αžŽαŸ‚ Maven αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαŸ†αž‘αžΎαž„αž€αŸ†αžŽαŸ‚αž“αŸ„αŸ‡αŸ”
  • αžαžαž―αž€αžŸαžΆαžš Docker (αž€αŸ’αž“αž»αž„ src/main/ directory): αžœαžΆαž˜αžΆαž“αž§αž‘αžΆαž αžšαžŽαŸ Dockerfiles αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž”αŸ€αž”αžŠαžΎαž˜ αž“αž·αž„ jvm (αžšαž½αž˜αž‡αžΆαž˜αž½αž™αž―αž€αžŸαžΆαžš .dockerignore)αŸ”
  • αžαžαž―αž€αžŸαžΆαžš (αž€αŸ’αž“αž»αž„ src/main/ directory)αŸ– αžœαžΆαž˜αžΆαž“αž―αž€αžŸαžΆαžš application.properties αž‘αž‘αŸ αž“αž·αž„αž‘αŸ†αž–αŸαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ Quarkus index.html αž‚αŸ†αžšαžΌ (αžŸαžΌαž˜αž˜αžΎαž› Run the modern helloworld αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜)αŸ”

αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš helloworld
αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžΆαž€αž›αŸ’αž”αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž™αžΎαž„αž”αŸ’αžšαžΎ quarkus:dev αžŠαŸ‚αž›αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Quarkus αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αž αžŸαžΌαž˜αž˜αžΎαž›αž•αŸ’αž“αŸ‚αž€αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ€αžœαž—αŸ…αžŠαŸƒ αžšαž”αŸ€αž”αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ).

αž…αŸ†αžŽαžΆαŸ†: αž‡αŸ†αž αžΆαž“αž“αŸαŸ‡αžšαŸ†αž–αžΉαž„αžαžΆαž“αžΉαž„αž˜αžΆαž“αž€αŸ†αž αž»αžŸ αžŠαŸ„αž™αžŸαžΆαžšαž™αžΎαž„αž˜αž·αž“αž‘αžΆαž“αŸ‹αž”αžΆαž“αž’αŸ’αžœαžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”

αž₯αž‘αžΌαžœβ€‹αž™αžΎαž„β€‹αžšαžαŸ‹β€‹αž–αžΆαž€αŸ’αž™β€‹αž”αž‰αŸ’αž‡αžΆβ€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž˜αžΎαž›β€‹αž–αžΈβ€‹αžšαž”αŸ€αž”β€‹αžŠαŸ‚αž›β€‹αžœαžΆβ€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ–

$ ./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 αž…αž„αŸ’αž’αž»αž›αž‘αŸ…αžαŸ’αž“αžΆαž€αŸ‹ HelloService αžŠαŸ‚αž›αž‡αžΆαžŸαž˜αžΆαž‡αž·αž€αž“αŸƒαžαŸ’αž“αžΆαž€αŸ‹ HelloWorldServlet (αžŸαž˜αžΆαž‡αž·αž€ java: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService)αŸ” αž”αž‰αŸ’αž αžΆαž‚αžΊαžαžΆ HelloWorldServlet αžαŸ’αžšαžΌαžœαž€αžΆαžš injected instance of HelloService αž αžΎαž™αžœαžΆαž˜αž·αž“αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰ (αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαžαŸ’αž“αžΆαž€αŸ‹αž‘αžΆαŸ†αž„αž–αžΈαžšαž“αŸαŸ‡αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž‰αŸ’αž…αž”αŸ‹αžαŸ‚αž˜αž½αž™αž€αŸαžŠαŸ„αž™)αŸ”

αžœαžΆαžŠαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαžαŸ’αžšαž›αž”αŸ‹αž‘αŸ… αž―αž€αžŸαžΆαžš αž αžΎαž™αž’αžΆαž“αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ Quarkus αž…αžΆαž€αŸ‹, αž αžΎαž™β€‹αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž”αžšαž·αž”αž‘ αž“αž·αž„αž€αžΆαžšαž…αžΆαž€αŸ‹αžαŸ’αž“αžΆαŸ†αž’αžΆαžŸαŸ’αžšαŸαž™ (CDI) αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŸαžΌαž˜β€‹αž”αžΎαž€β€‹αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†β€‹αž’αŸ†αž–αžΈβ€‹αž”αžšαž·αž”αž‘ αž“αž·αž„β€‹αž€αžΆαžšβ€‹αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€ αž“αž·αž„β€‹αž€αŸ’αž“αž»αž„β€‹αž•αŸ’αž“αŸ‚αž€ Bean Discovery αž™αžΎαž„αž’αžΆαž“αžαžΆ "αžαŸ’αž“αžΆαž€αŸ‹αžŸαžŽαŸ’αžαŸ‚αž€αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αž€αŸ†αžŽαžαŸ‹αžŸαžŽαŸ’αžαŸ‚αž€αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αžœαŸ‚αž„αžšαž€αž‘αŸαŸ”"

αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αžαŸ’αž“αžΆαž€αŸ‹ HelloService - αžœαžΆαž–αž·αžαž‡αžΆαž˜αž·αž“αž˜αžΆαž“αž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αž”αŸ‚αž”αž“αŸαŸ‡αž‘αŸαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαžαŸ’αžšαžΌαžœαžαŸ‚αž”αž“αŸ’αžαŸ‚αž˜αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™ Quarkus αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αž“αž·αž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αžŸαžŽαŸ’αžαŸ‚αž€αŸ” αž αžΎαž™αžŠαŸ„αž™αžŸαžΆαžšαž“αŸαŸ‡αž‡αžΆαžœαžαŸ’αžαž»αž‚αŸ’αž˜αžΆαž“αžšαžŠαŸ’αž‹ αž™αžΎαž„αž’αžΆαž…αž”αž“αŸ’αžαŸ‚αž˜αž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹ @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]

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αžœαžΈαŸ—αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αŸ†αž αž»αžŸαŸ”

αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš 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: αž‘αŸ†αž–αŸαžš Quarkus dev αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Hello World αŸ”

αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαžŽαžΆαžŸαŸ‹ αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αž₯αž‘αžΌαžœβ€‹αž™αžΎαž„β€‹αž’αŸ’αžœαžΎβ€‹αž€αžΆαžšβ€‹αž•αŸ’αž›αžΆαžŸαŸ‹β€‹αž”αŸ’αžαžΌαžšβ€‹αž€αžΌαžŠαŸ” αž…αŸ†αžŽαžΆαŸ†αžαžΆαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ ./mvnw compile quarkus:dev αž“αŸ…αžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž αžΎαž™αž™αžΎαž„αž‚αŸ’αž˜αžΆαž“αž…αŸαžαž“αžΆαž”αž‰αŸ’αžˆαž”αŸ‹αžœαžΆαž‘αŸαŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αž–αŸ’αž™αžΆαž™αžΆαž˜αž’αž“αž»αžœαžαŸ’αžαžŠαžΌαž…αž‚αŸ’αž“αžΆ - αž˜αž·αž“αžŸαžΌαžœαžŸαŸ†αžαžΆαž“αŸ‹ - αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΌαžŠαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αž αžΎαž™αž˜αžΎαž›αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž› Quarkus αž’αŸ’αžœαžΎαž±αŸ’αž™αž‡αžΈαžœαž·αžαž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαŸ–

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

αžšαž€αŸ’αžŸαžΆβ€‹αž‘αž»αž€β€‹αž―αž€αžŸαžΆαžš αž αžΎαž™β€‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž˜αž€β€‹αž•αŸ’αž‘αž»αž€β€‹αž‘αŸ†αž–αŸαžšβ€‹αž”αžŽαŸ’αžŠαžΆαž‰β€‹αž‘αžΎαž„β€‹αžœαž·αž‰ αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž˜αžΎαž› Hello Marco αžŠαžΌαž…β€‹αž”αž„αŸ’αž αžΆαž‰β€‹αž€αŸ’αž“αž»αž„β€‹αžšαžΌαž”αžαžβ€‹αž’αŸαž€αŸ’αžšαž„αŸ‹β€‹αžαžΆαž„β€‹αž€αŸ’αžšαŸ„αž˜αŸ–

Quarkus: αž‘αŸ†αž“αžΎαž”αž€αž˜αŸ’αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αž™αž”αŸ’αžšαžΎ Helloworld αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž–αžΈ JBoss EAP Quickstart

αž’αž„αŸ’αž€αžšαŸ” 6. Hello Marco page in 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 αžœαž·αž“αžΆαž‘αžΈαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ (αž“αŸαŸ‡αž‚αžΊαžαžΆ "sutra-fast subatomic Java")αŸ”

αž€αžΆαžšαž€αžŸαžΆαž„ helloworld αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αž‰αŸ’αž…αž”αŸ‹ JAR
αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž€αžΌαžŠαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΌαž…αžŠαŸ‚αž›αžœαžΆαž‚αž½αžš αž™αžΎαž„αžαŸ’αž…αž”αŸ‹αžœαžΆαž‡αžΆαž˜αž½αž™αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

$ ./mvnw clean package

αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αŸαŸ‡αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžš JAR αž–αžΈαžšαž“αŸ…αž€αŸ’αž“αž»αž„αžαž /targetαŸ– αž―αž€αžŸαžΆαžš helloworld-.jar αžŠαŸ‚αž›αž‡αžΆαžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžŠαŸ‚αž›αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αžŠαŸ„αž™αž€αŸ’αžšαž»αž˜ Maven αžšαž½αž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαŸ’αž“αžΆαž€αŸ‹ αž“αž·αž„αž’αž“αž’αžΆαž“αžšαž”αžŸαŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αŸ” αž“αž·αž„αž―αž€αžŸαžΆαžš helloworld-runner.jar αžŠαŸ‚αž›αž‡αžΆ JAR αžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αŸ”

αžŸαžΌαž˜αž…αŸ†αžŽαžΆαŸ†αžαžΆαž“αŸαŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆ uber-jar αž‘αŸ αžŠαŸ„αž™αžŸαžΆαžšαž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž˜αŸ’αž›αž„αž™αŸ‰αžΆαž„αžŸαžΆαž˜αž‰αŸ’αž‰αž‘αŸ…αž€αŸ’αž“αž»αž„αžαž /target/lib (αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αž…αž”αŸ‹αž‘αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš JAR)αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš JAR αž“αŸαŸ‡αž–αžΈαžαžαž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž¬αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž…αž˜αŸ’αž›αž„αž‘αžΆαŸ†αž„αž―αž€αžŸαžΆαžš JAR αžαŸ’αž›αž½αž“αžœαžΆ αž“αž·αž„αžαž /lib αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡ αžŠαŸ„αž™αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αžαžΆαž’αžΆαžαž» Class-Path αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš MANIFEST.MF αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž‰αŸ’αž…αž”αŸ‹ JAR αž˜αžΆαž“ αž€αžΆαžšαžšαžΆαž™αž”αž‰αŸ’αž‡αžΈαž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž“αŸƒ JARs αž–αžΈαžαž lib
αžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ€αž“αž–αžΈαžšαž”αŸ€αž”αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ uber-jar αžŸαžΌαž˜αž˜αžΎαž›αž€αžΆαžšαž”αž„αŸ’αžšαŸ€αž“ αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž Uber-Jar.

αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš helloworld αžαŸ’αž…αž”αŸ‹αž€αŸ’αž“αž»αž„ JAR

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš JAR αžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ java αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαŸ–

$ java -jar ./target/helloworld-<version>-runner.jar
INFO  [io.quarkus] (main) Quarkus 0.23.2 started in 0.673s. Listening on: http://0.0.0.0:8080
INFO  [io.quarkus] (main) Profile prod activated.
INFO  [io.quarkus] (main) Installed features: [cdi]

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αžšαž½αž…αžšαžΆαž›αŸ‹ αžŸαžΌαž˜αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹ browser αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αŸ… 0.0.0.0:8080 αž αžΎαž™αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαž’αŸ’αžœαžΈαŸ—αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΌαž…αžŠαŸ‚αž›αžœαžΆαž‚αž½αžšαžαŸ‚αŸ”

αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„ helloworld αž‘αŸ…αž‡αžΆαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αžŠαžΎαž˜

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ helloworld αžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Java αž―αž€αžšαžΆαž‡αŸ’αž™αžŠαŸ„αž™αž”αŸ’αžšαžΎ Quarkus dependencies αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αž‘αŸ…β€‹αž”αž“αŸ’αžαŸ‚αž˜β€‹αž‘αŸ€αž αž αžΎαž™β€‹αž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™β€‹αžœαžΆβ€‹αž‘αŸ…β€‹αž‡αžΆβ€‹αž―αž€αžŸαžΆαžšβ€‹αžŠαŸ‚αž›β€‹αž’αžΆαž…β€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·β€‹αž”αžΆαž“β€‹αžŠαžΎαž˜αŸ”

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ 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)

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜ αž“αž·αž„αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž“αŸ…αž›αžΎ OS αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αžŸαžΌαž˜αž˜αžΎαž›αžŸαŸ€αžœαž—αŸ…αžŽαŸ‚αž“αžΆαŸ† αž€αžΆαžšαžŸαžΆαž„αžŸαž„αŸ‹αžŠαžΎαž˜αžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“ - αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž‡αžΆαž˜αž»αž“.

αž€αžΆαžšαž€αžŸαžΆαž„ helloworld αž‘αŸ…αž‡αžΆαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αžŠαžΎαž˜
αž€αžΆαžšαž’αžΆαž“αžŸαŸ€αžœαž—αŸ…αžŽαŸ‚αž“αžΆαŸ† αž€αžΆαžšβ€‹αž”αž„αŸ’αž€αžΎαžβ€‹αžŠαžΎαž˜β€‹αžŠαŸ‚αž›β€‹αž’αžΆαž…β€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·β€‹αž”αžΆαž“β€”αž•αž›αž·αžβ€‹αž“αžΌαžœβ€‹αžŠαžΎαž˜β€‹αžŠαŸ‚αž›β€‹αž’αžΆαž…β€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·β€‹αž”αžΆαž“αŸ”: β€œαž₯αž‘αžΌαžœαž“αŸαŸ‡ αžŸαžΌαž˜αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αžŠαžΎαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž–αŸαž›αžœαŸαž›αžΆαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž“αž·αž„αž‘αŸ†αž αŸ†αžαžΆαžŸαžšαž”αžŸαŸ‹αžœαžΆαŸ” αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αž“αžΉαž„αž˜αžΆαž“αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αžšαž½αž˜αž‘αžΆαŸ†αž„ JVM (αž¬αž‡αžΆαž€αŸ†αžŽαŸ‚αž€αžΆαžαŸ‹αžšαž”αžŸαŸ‹αžœαžΆαžŠαŸ‚αž›αž˜αžΆαž“αžαŸ‚αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ) αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž•αŸ’αž‘αžΆαž›αŸ‹αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αžŠαžΎαž˜ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž˜αŸ’αžšαž„αŸ‹ Maven αžŠαžΎαž˜αŸ–

$ ./mvnw package -Pnative

αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžšαž”αžŸαŸ‹αž™αžΎαž„αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž˜αž½αž™αž“αžΆαž‘αžΈ αž“αž·αž„ 10 αžœαž·αž“αžΆαž‘αžΈ αž αžΎαž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™ helloworld-runner f file αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αžαž /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 αž αžΎαž™αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαž’αŸ’αžœαžΈαŸ—αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΌαž…αžŠαŸ‚αž›αžœαžΆαž‚αž½αžšαžαŸ‚αŸ”

αž“αŸ…β€‹αž˜αžΆαž“β€‹αž‡αžΆβ€‹αž”αž“αŸ’αžβ€‹αž‘αŸ€αž!

αž™αžΎαž„αž‡αžΏαžαžΆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž‘αŸ†αž“αžΎαž”αž€αž˜αŸ’αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Java αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαž˜αžαŸ’αžαž—αžΆαž– Quarkus αžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαž€αžΆαžŸαž“αŸαŸ‡ (αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž”αŸ’αžšαžΎαž§αž‘αžΆαž αžšαžŽαŸαž’αž˜αŸ’αž˜αžαžΆαž€αŸαžŠαŸ„αž™) αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž™αŸ‰αžΆαž„αžŸαž€αž˜αŸ’αž˜αž€αŸ’αž“αž»αž„αž‡αžΈαžœαž·αžαž–αž·αžαŸ” αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž’αŸ’αž“αž€αž‘αŸ†αž“αž„αž‡αžΆαž“αžΉαž„αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž”αž‰αŸ’αž αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“ αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž˜αž½αž™αž•αŸ’αž“αŸ‚αž€αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αžŸαžΆαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžœαžΆαžŸαŸ‹αžŸαŸ’αž‘αž„αŸ‹αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ† αžŠαžΎαž˜αŸ’αž”αžΈαžœαžΆαž™αžαž˜αŸ’αž›αŸƒαž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αžŠαŸ‚αž›αž‡αžΆαž•αŸ’αž“αŸ‚αž€αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ†αž“αžΎαž”αž€αž˜αŸ’αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αžΆαŸ†αž„αž˜αžΌαž›αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž‘αž·αž‰αž€αžΆαžšαž”αž„αŸ’αž αŸ„αŸ‡αžŠαŸ‚αž›αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž€αžΆαžšαž–αžΆαžš DDoS, αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ VPS VDS πŸ”₯ αž‘αž·αž‰αžŸαŸαžœαžΆαž”αž„αŸ’αž αŸ„αŸ‡αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αžΆαžšαž–αžΆαžš DDoS αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ VPS VDS | ProHoster