āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ: JBoss EAP Quickstart āĻĨ⧇āϕ⧇ helloworld āĻāϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āφāϧ⧁āύāĻŋāϕ⧀āĻ•āϰāĻŖ

āĻāχ āĻŦā§āϞāϗ⧇ āϏāĻŦāĻžāχāϕ⧇ āĻšā§āϝāĻžāϞ⧋, āĻāĻ–āĻžāύ⧇ āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āϏāĻŋāϰāĻŋāĻœā§‡āϰ āϚāϤ⧁āĻ°ā§āĻĨ āĻĒā§‹āĻ¸ā§āϟ!

āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ: JBoss EAP Quickstart āĻĨ⧇āϕ⧇ helloworld āĻāϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āφāϧ⧁āύāĻŋāϕ⧀āĻ•āϰāĻŖ

āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āĻĒā§‹āĻ¸ā§āϟ āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻŽāĻžāχāĻ•ā§āϰ⧋āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āĻāĻŦāĻ‚ āĻ¸ā§āĻĒā§āϰāĻŋāĻ‚āϕ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰ⧇ āϏ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ›āĻŋāϞāĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āφāĻĒāύāĻžāϕ⧇ āĻŽāύ⧇ āĻ•āϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž āϝāĻžāĻ• āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ "āφāĻ˛ā§āĻŸā§āϰāĻž-āĻĢāĻžāĻ¸ā§āϟ āϏāĻžāĻŦāϟāĻŽāĻŋāĻ• āϜāĻžāĻ­āĻž", āĻ“āϰāĻĢ⧇ "āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ-āĻ“āϰāĻŋāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āĻĄ āϜāĻžāĻ­āĻž āĻ¸ā§āĻŸā§āϝāĻžāĻ•, GraalVM āĻāĻŦāĻ‚ OpenJDK āĻšāϟāĻ¸ā§āĻĒāĻŸā§‡āϰ āϜāĻ¨ā§āϝ āϤ⧈āϰāĻŋ āĻāĻŦāĻ‚ āϏ⧇āϰāĻž āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄāϗ⧁āϞāĻŋ āĻĨ⧇āϕ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ" āĻšāĻŋāϏāĻžāĻŦ⧇ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎ āφāϜ āφāĻŽāϰāĻž āωāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĻ⧇āĻ–āĻžāĻŦ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āϜāĻžāĻ­āĻž āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϗ⧁āϞāĻŋāϕ⧇ āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ⧇āϰ āĻ•ā§āώāĻŽāϤāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āφāϧ⧁āύāĻŋāϕ⧀āĻ•āϰāĻŖ āĻ•āϰāĻž āϝāĻžāϝāĻŧ Red Hat JBoss āĻāĻ¨ā§āϟāĻžāϰāĻĒā§āϰāĻžāχāϜ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ (JBoss EAP) āϕ⧁āχāĻ•āĻ¸ā§āϟāĻžāĻ°ā§āϟ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋ āĻĨ⧇āϕ⧇ helloworld āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ, āϝāĻž āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āĻĻā§āĻŦāĻžāϰāĻž āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ CDI āĻāĻŦāĻ‚ Servlet 3 āĻĒā§āϰāϝ⧁āĻ•ā§āϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤

āĻāĻ–āĻžāύ⧇ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāĻž āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āϝ⧇ Quarkus āĻāĻŦāĻ‚ JBoss EAP āωāĻ­āϝāĻŧāχ āϝāϤāϟāĻž āϏāĻŽā§āĻ­āĻŦ āĻŽāĻžāύ-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āϟ⧁āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āωāĻĒāϰ āĻœā§‹āϰ āĻĻ⧇āϝāĻŧāĨ¤ JBoss EAP āĻ āϚāϞāĻŽāĻžāύ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āύ⧇āχ? āϕ⧋āύ āϏāĻŽāĻ¸ā§āϝāĻž āύ⧇āχ, āĻāϟāĻŋ āϏāĻšāĻœā§‡āχ āφāĻĒāύāĻžāϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻĨ⧇āϕ⧇ JBoss EAP āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰāĻŋāϤ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ Red Hat āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āϟ⧁āϞāĻ•āĻŋāϟ. āĻāϰ āĻĒāϰ⧇ āφāϧ⧁āύāĻŋāϕ⧀āĻ•ā§ƒāϤ āϕ⧋āĻĄā§‡āϰ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āϤ āĻāĻŦāĻ‚ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇ github.com/mrizzi/jboss-eap-quickstarts/tree/quarkus, āĻŽāĻĄāĻŋāωāϞ⧇ āĻ“āĻšā§‡ āĻŦāĻŋāĻļā§āĻŦ.

āĻāχ āĻĒā§‹āĻ¸ā§āϟ āϞ⧇āĻ–āĻžāϰ āϏāĻŽāϝāĻŧ āφāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋ āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŽā§‚āϞāϤ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻĨāĻŽ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ˛ā§āĻĄāĻŋāĻ‚ āĻ• āύ⧇āϟāĻŋāĻ­ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻŸā§‡āĻŦāϞ.

āϚāϞ⧁āύ āϕ⧋āĻĄ āĻĒ⧇āϤ⧇

āĻĒā§āϰāĻĨāĻŽāϤ, āφāϏ⧁āύ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ⧇āϰ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻ•ā§āϞ⧋āύ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋ JBoss EAP āĻĻā§āϰ⧁āϤ āĻļ⧁āϰ⧁ āĻšāϝāĻŧ:

$ git clone https://github.com/jboss-developer/jboss-eap-quickstarts.git
Cloning into 'jboss-eap-quickstarts'...
remote: Enumerating objects: 148133, done.
remote: Total 148133 (delta 0), reused 0 (delta 0), pack-reused 148133
Receiving objects: 100% (148133/148133), 59.90 MiB | 7.62 MiB/s, done.
Resolving deltas: 100% (66476/66476), done.
$ cd jboss-eap-quickstarts/helloworld/

āφāϏ⧁āύ āĻĻ⧇āĻ–āĻŋ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āφāϏāϞ āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āĻ•āĻžāϜ āĻ•āϰ⧇

āĻĒā§āϰāĻ•ā§ƒāϤāĻĒāĻ•ā§āώ⧇, āĻāχ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋāϰ āϏāĻžāϰāĻžāĻ‚āĻļ āύāĻžāĻŽ āĻĨ⧇āϕ⧇ āĻ¸ā§āĻĒāĻˇā§āϟ, āϤāĻŦ⧇ āφāĻŽāϰāĻž āĻāϰ āϕ⧋āĻĄāϟāĻŋ āĻ•āĻ ā§‹āϰāĻ­āĻžāĻŦ⧇ āĻŦ⧈āĻœā§āĻžāĻžāύāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āφāϧ⧁āύāĻŋāϕ⧀āĻ•āϰāĻŖ āĻ•āϰāĻŦāĨ¤ āĻ…āϤāĻāĻŦ, āĻĒā§āϰāĻĨāĻŽā§‡, āĻāϰ āφāϏāϞ āφāĻ•āĻžāϰ⧇ āĻāχ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋ āĻĻ⧇āϖ⧁āύāĨ¤

āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

1. āĻāĻ•āϟāĻŋ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āϖ⧁āϞ⧁āύ āĻāĻŦāĻ‚ JBoss EAP āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇āϰ āϰ⧁āĻŸā§‡ āϝāĻžāύ (āφāĻĒāύāĻŋ āĻāϟāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻ–āĻžāύ⧇), āĻ…āĻ°ā§āĻĨāĻžā§Ž, EAP_HOME āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇āĨ¤

2. āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āϏāĻš JBoss EAP āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύ:

$ EAP_HOME/bin/standalone.sh

āĻĻā§āϰāĻˇā§āϟāĻŦā§āϝ: āωāĻĒāϰ Windows āϞāĻžā§āϚ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ EAP_HOMEbinstandalone.bat āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

āĻ•āϝāĻŧ⧇āĻ• āϏ⧇āϕ⧇āĻ¨ā§āĻĄ āĻĒāϰ⧇, āϞāϗ⧇ āĻāχāϰāĻ•āĻŽ āĻ•āĻŋāϛ⧁ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ:

[org.jboss.as] (Controller Boot Thread) WFLYSRV0025: JBoss EAP 7.2.0.GA (WildFly Core 6.0.11.Final-redhat-00001) started in 3315ms - Started 306 of 527 services (321 services are lazy, passive or on-demand)

3. āĻāĻ•āϟāĻŋ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āϖ⧁āϞ⧁āύ⧎ 127.0.0.1:8080 āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻāϟāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāχ:

āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ: JBoss EAP Quickstart āĻĨ⧇āϕ⧇ helloworld āĻāϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āφāϧ⧁āύāĻŋāϕ⧀āĻ•āϰāĻŖ

āĻ­āĻžāϤāĨ¤ 1. JBoss EAP āĻšā§‹āĻŽ āĻĒ⧇āϜāĨ¤

4. āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧁āύ āϕ⧁āχāĻ•āĻ¸ā§āϟāĻžāĻ°ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧁āύ: helloworld āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ (āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āϰ⧁āϟ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āĻĨ⧇āϕ⧇) āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āϚāĻžāϞāĻžāύ:

$ mvn clean install wildfly:deploy

āĻāχ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āϏāĻĢāϞāĻ­āĻžāĻŦ⧇ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āφāĻŽāϰāĻž āϞāϗ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤāϗ⧁āϞāĻŋāϰ āĻŽāϤ⧋ āĻ•āĻŋāϛ⧁ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ:

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

āϏ⧁āϤāϰāĻžāĻ‚, JBoss EAP-āϤ⧇ āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋāϰ āĻĒā§āϰāĻĨāĻŽ āĻ¸ā§āĻĨāĻžāĻĒāύ⧇ āĻŽāĻžāĻ¤ā§āϰ 8 āϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡āϰ āĻŦ⧇āĻļāĻŋ āϏāĻŽāϝāĻŧ āϞ⧇āϗ⧇āϛ⧇āĨ¤

āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āύāĻŋāĻ°ā§āĻĻ⧇āĻļāύāĻž āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻ•āĻ ā§‹āϰāĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰāĻž āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰ⧁āύ, āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āϖ⧁āϞ⧁āύ 127.0.0.1:8080/āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻāϟāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāχ:

āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ: JBoss EAP Quickstart āĻĨ⧇āϕ⧇ helloworld āĻāϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āφāϧ⧁āύāĻŋāϕ⧀āĻ•āϰāĻŖ

āĻ­āĻžāϤāĨ¤ 2. JBoss EAP āĻĨ⧇āϕ⧇ āφāϏāϞ āĻšā§āϝāĻžāϞ⧋ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄāĨ¤

āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž

āχāύāĻĒ⧁āϟ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ createHelloMessage(āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āύāĻžāĻŽ) āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āĻĨ⧇āϕ⧇ āĻŽāĻžāĻ°ā§āϕ⧋āϤ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ:

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

āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āφāĻŦāĻžāϰ āϚāĻžāϞāĻžāύ:

$ mvn clean install wildfly:deploy

āϤāĻžāϰāĻĒāϰ⧇ āφāĻŽāϰāĻž āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āĻĒ⧃āĻˇā§āĻ āĻžāϟāĻŋ āϰāĻŋāĻĢā§āϰ⧇āĻļ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻĻ⧇āĻ–āĻŋ āϝ⧇ āĻĒāĻžāĻ ā§āϝāϟāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇:

āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ: JBoss EAP Quickstart āĻĨ⧇āϕ⧇ helloworld āĻāϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āφāϧ⧁āύāĻŋāϕ⧀āĻ•āϰāĻŖ

āĻ­āĻžāϤāĨ¤ 3. JBoss EAP-āĻ āĻšā§āϝāĻžāϞ⧋ āĻŽāĻžāĻ°ā§āϕ⧋āĨ¤

āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āĻ¸ā§āĻĨāĻžāĻĒāύāĻž āĻĢāĻŋāϰāĻŋāϝāĻŧ⧇ āφāύ⧁āύ āĻāĻŦāĻ‚ JBoss EAP āĻŦāĻ¨ā§āϧ āĻ•āϰ⧁āύ

āĻāϟāĻŋ āϐāĻšā§āĻ›āĻŋāĻ•, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāύāĻž āĻŦāĻžāϤāĻŋāϞ āĻ•āϰāϤ⧇ āϚāĻžāύ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻŋ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāϝāĻŧ⧇ āϤāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

$ mvn clean install wildfly:undeploy

āφāĻĒāύāĻžāϰ JBoss EAP āχāĻ¨ā§āϏāĻŸā§āϝāĻžāĻ¨ā§āϏ āĻŦāĻ¨ā§āϧ āĻ•āϰāϤ⧇, āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āωāχāĻ¨ā§āĻĄā§‹āϤ⧇ Ctrl+C āϟāĻŋāĻĒ⧁āύāĨ¤

āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āĻāĻ–āύ āφāϏāϞ āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋāϕ⧇ āφāϧ⧁āύāĻŋāĻ• āĻ•āϰāĻž āϝāĻžāĻ•āĨ¤

āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻļāĻžāĻ–āĻž āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ

āϕ⧁āχāĻ•āĻ¸ā§āϟāĻžāĻ°ā§āϟ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āĻļ⧇āώ āĻšāĻ“āϝāĻŧāĻžāϰ āĻĒāϰ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻŋāĻ‚ āĻŦā§āϰāĻžāĻžā§āϚ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋ:

$ git checkout -b quarkus 7.2.0.GA

pom.xml āĻĢāĻžāχāϞ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āφāĻŽāϰāĻž pom.xml āĻĢāĻžāχāϞ āĻĨ⧇āϕ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻļ⧁āϰ⧁ āĻ•āϰāĻŦāĨ¤ āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏāϕ⧇ āĻāϟāĻŋāϤ⧇ 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-maven-plugin āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĒā§āϝāĻžāϕ⧇āϜāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ•āĻžāĻļ āĻŽā§‹āĻĄ āĻĒā§āϰāĻĻāĻžāύ⧇āϰ āϜāĻ¨ā§āϝ āĻĻāĻžāϝāĻŧā§€āĨ¤
  • āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻŸā§‡āĻŦāϞ āϤ⧈āϰāĻŋāϰ āϜāĻ¨ā§āϝ āύ⧇āϟāĻŋāĻ­ āĻĒā§āϰ⧋āĻĢāĻžāχāϞāĨ¤

āωāĻĒāϰāĻ¨ā§āϤ⧁, āφāĻŽāϰāĻž āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ pom.xml-āĻ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āĻ•āϰāĻŋ:

  1. āĻŸā§āϝāĻžāĻ— āϟāĻžāύāĻž āĻšāĻšā§āϛ⧇ āĻŦā§āϞāĻ• āĻĨ⧇āϕ⧇ āĻāĻŦāĻ‚ āĻŸā§āϝāĻžāϗ⧇āϰ āωāĻĒāϰ⧇ āϰāĻžāϖ⧁āύ . āĻ•āĻžāϰāĻŖ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϧāĻžāĻĒ⧇ āφāĻŽāϰāĻž āĻŦā§āϞāĻ•āϟāĻŋ āϏāϰāĻŋāϝāĻŧ⧇ āĻĢ⧇āϞāĻŦ , āϤāĻžāϰāĻĒāϰ āφāĻĒāύāĻŋ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ .
  2. āĻāĻ•āϟāĻŋ āĻŦā§āϞāĻ• āĻ…āĻĒāϏāĻžāϰāĻŖ , āĻ•āĻžāϰāĻŖ Quarkus āĻāϰ āϏāĻžāĻĨ⧇ āϚāϞāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāχ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋāϰ āφāϰ JBoss āĻĨ⧇āϕ⧇ āĻĒā§āϝāĻžāϰ⧇āĻ¨ā§āϟ āĻĒā§‹āĻŽā§‡āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāĻŦ⧇ āύāĻžāĨ¤
  3. āĻāĻ•āϟāĻŋ āĻŸā§āϝāĻžāĻ— āϏāĻ‚āϝ⧁āĻ•ā§āϤāĻ•āϰ āĻāĻŦāĻ‚ āĻŸā§āϝāĻžāϗ⧇āϰ āύ⧀āĻšā§‡ āϰāĻžāϖ⧁āύ . āφāĻĒāύāĻŋ āϝ⧇ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āύāĻŽā§āĻŦāϰ āϚāĻžāύ āϤāĻž āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤
  4. āĻŸā§āϝāĻžāĻ— āϏāϰāĻžāύ⧋ āĻšāĻšā§āϛ⧇ , āϝ⧇āĻšā§‡āϤ⧁ āĻāχ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋ āφāϰ āĻāĻ•āϟāĻŋ āϝ⧁āĻĻā§āϧ āύāϝāĻŧ, āϤāĻŦ⧇ āĻāĻ•āϟāĻŋ āύāĻŋāϝāĻŧāĻŽāĻŋāϤ JARāĨ¤
  5. āφāĻŽāϰāĻž āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻŋ:
    1. āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž javax.enterprise:cdi-api āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ io.quarkus:quarkus-arc, āϏāϰāĻžāύ⧋ āĻšāĻšā§āϛ⧇ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ , āϝ⧇āĻšā§‡āϤ⧁ (āĻĄāĻ•ā§āϏ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€) āĻāχ āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ CDI āύāĻŋāĻ°ā§āĻ­āϰāϤāĻžāϰ āχāύāĻœā§‡āĻ•āĻļāύ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤
    2. āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ io.quarkus:quarkus-undertow, āϏāϰāĻžāύ⧋ āĻšāĻšā§āϛ⧇ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ , āĻ•āĻžāϰāĻŖ (āĻĄāĻ•ā§āϏ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€) āĻāχ āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āϏāĻžāĻ°ā§āϞ⧇āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤
    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 āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋ āϚāĻžāϞāĻžāύ⧋āϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧāĨ¤
  • āĻĄāĻ•āĻžāϰ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ (src/main/ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇): āĻāϤ⧇ āύ⧇āϟāĻŋāĻ­ āĻāĻŦāĻ‚ jvm āĻŽā§‹āĻĄā§‡āϰ (.dockerignore āĻĢāĻžāχāϞ āϏāĻš) āωāĻĻāĻžāĻšāϰāĻŖ āĻĄāĻ•āĻžāϰāĻĢāĻžāχāϞ āϰāϝāĻŧ⧇āϛ⧇āĨ¤
  • āϏāĻŽā§āĻĒāĻĻ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ (src/main/ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇): āĻāϤ⧇ āĻāĻ•āϟāĻŋ āĻ–āĻžāϞāĻŋ application.properties āĻĢāĻžāχāϞ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āύāĻŽā§āύāĻž Quarkus index.html āĻ¸ā§āϟāĻžāĻ°ā§āϟ āĻĒ⧇āϜ āϰāϝāĻŧ⧇āϛ⧇ (āφāϰ⧋ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āφāϧ⧁āύāĻŋāϕ⧀āĻ•ā§ƒāϤ āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āϚāĻžāϞāĻžāύ āĻĻ⧇āϖ⧁āύ)āĨ¤

āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύ
āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž quarkus:dev āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ, āϝāĻž āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏāϕ⧇ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ āĻŽā§‹āĻĄā§‡ āϚāĻžāϞ⧁ āĻ•āϰ⧇ (āφāϰ⧋ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ, āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāϟāĻŋāϤ⧇ āĻāχ āĻŦāĻŋāĻ­āĻžāĻ—āϟāĻŋ āĻĻ⧇āϖ⧁āύ āωāĻ¨ā§āύāϝāĻŧāύ āĻŽā§‹āĻĄ).

āĻĻā§āϰāĻˇā§āϟāĻŦā§āϝ: āĻāχ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒāϟāĻŋ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻŋāϤāĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āĻ¤ā§āϰ⧁āϟāĻŋāϰ āĻ•āĻžāϰāĻŖ āĻšāĻŦ⧇, āϝ⧇āĻšā§‡āϤ⧁ āφāĻŽāϰāĻž āĻāĻ–āύāĻ“ āϏāĻŽāĻ¸ā§āϤ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻŋāύāĻŋ⧎

āĻāĻ–āύ āĻāϟāĻŋ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āϤāĻž āĻĻ⧇āĻ–āϤ⧇ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āϚāĻžāϞāĻžāύ:

$ ./mvnw compile quarkus:dev
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------< org.jboss.eap.quickstarts:helloworld >----------------
[INFO] Building Quickstart: helloworld quarkus
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- quarkus-maven-plugin:0.23.2:dev (default-cli) @ helloworld ---
Listening for transport dt_socket at address: 5005
INFO  [io.qua.dep.QuarkusAugmentor] Beginning quarkus augmentation
INFO  [org.jbo.threads] JBoss Threads version 3.0.0.Final
ERROR [io.qua.dev.DevModeMain] Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.jboss.as.quickstarts.helloworld.HelloService and qualifiers [@Default]
	- java member: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService
	- declared on CLASS bean [types=[javax.servlet.ServletConfig, java.io.Serializable, org.jboss.as.quickstarts.helloworld.HelloWorldServlet, javax.servlet.GenericServlet, javax.servlet.Servlet, java.lang.Object, javax.servlet.http.HttpServlet], qualifiers=[@Default, @Any], target=org.jboss.as.quickstarts.helloworld.HelloWorldServlet]
	at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:841)
	at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:214)
	at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:106)
	at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:249)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.quarkus.deployment.ExtensionLoader$1.execute(ExtensionLoader.java:780)
	at io.quarkus.builder.BuildContext.run(BuildContext.java:415)
	at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
	at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426)
	at java.lang.Thread.run(Thread.java:748)
	at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.jboss.as.quickstarts.helloworld.HelloService and qualifiers [@Default]
	- java member: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService
	- declared on CLASS bean [types=[javax.servlet.ServletConfig, java.io.Serializable, org.jboss.as.quickstarts.helloworld.HelloWorldServlet, javax.servlet.GenericServlet, javax.servlet.Servlet, java.lang.Object, javax.servlet.http.HttpServlet], qualifiers=[@Default, @Any], target=org.jboss.as.quickstarts.helloworld.HelloWorldServlet]
	at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:428)
	at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:371)
	at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:206)
	... 14 more

āϤ⧋, āĻāϟāĻž āĻ•āĻžāϜ āĻ•āϰ⧇ āύāĻž... āϕ⧇āύ?

āĻ…āϏāĻ¨ā§āϤ⧁āĻˇā§āϟ āϰ⧇āĻœā§‹āϞāĻŋāωāĻļāύ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽāϟāĻŋ HelloService āĻ•ā§āϞāĻžāϏ⧇āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇, āϝ⧇āϟāĻŋ HelloWorldServlet āĻ•ā§āϞāĻžāϏ⧇āϰ āϏāĻĻāĻ¸ā§āϝ (āϜāĻžāĻ­āĻž āϏāĻĻāĻ¸ā§āϝ: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService)āĨ¤ āϏāĻŽāĻ¸ā§āϝāĻž āĻšāϞ āϝ⧇ HelloWorldServlet-āĻāϰ HelloService-āĻāϰ āĻāĻ•āϟāĻŋ āχāύāĻœā§‡āĻ•āĻļāύ⧇āϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻĒā§āϰāϝāĻŧā§‹āϜāύ, āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇ āύāĻž (āϝāĻĻāĻŋāĻ“ āĻāχ āωāĻ­āϝāĻŧ āĻ•ā§āϞāĻžāϏ āĻāĻ•āχ āĻĒā§āϝāĻžāϕ⧇āĻœā§‡ āϰāϝāĻŧ⧇āϛ⧇)āĨ¤

āĻāϟāĻž āĻĢāĻŋāϰ⧇ āφāϏāĻžāϰ āϏāĻŽāϝāĻŧ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻāĻŦāĻ‚ Quarkus āĻ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āϤāĻž āĻĒāĻĄāĻŧ⧁āύ āωāĻĻā§āĻŦ⧁āĻĻā§āϧ āĻ•āϰāĻž, āĻāĻŦāĻ‚ āϏ⧇āχāϜāĻ¨ā§āϝ āĻĒā§āϰāϏāĻ™ā§āĻ— āĻāĻŦāĻ‚ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āχāύāĻœā§‡āĻ•āĻļāύ (āϏāĻŋāĻĄāĻŋāφāχ)āĨ¤ āĻ…āϤāĻāĻŦ, āĻĒā§āϰāϏāĻ™ā§āĻ— āĻāĻŦāĻ‚ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āχāύāĻœā§‡āĻ•āĻļāύ āĻ—āĻžāχāĻĄ āϖ⧁āϞ⧁āύ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ­āĻžāϗ⧇ āĻļāĻŋāĻŽ āφāĻŦāĻŋāĻˇā§āĻ•āĻžāϰ āφāĻŽāϰāĻž āĻĒāĻĄāĻŧāĻŋ: "āĻāĻ•āϟāĻŋ āĻŽāϟāϰāĻļ⧁āϟāĻŋ āĻļā§āϰ⧇āĻŖā§€ āϝ⧇āĻ–āĻžāύ⧇ āĻāĻ•āϟāĻŋ āĻļāĻŋāĻŽ-āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻŸā§€āĻ•āĻž āύ⧇āχ āϤāĻž āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤"

āφāϏ⧁āύ HelloService āĻ•ā§āϞāĻžāϏāϟāĻŋ āĻĻ⧇āĻ–āĻŋ - āĻāϟāĻŋāϤ⧇ āϏāĻ¤ā§āϝāĻŋāχ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻŸā§€āĻ•āĻž āύ⧇āχāĨ¤ āĻ…āϤāĻāĻŦ, āĻāϟāĻŋ āĻ…āĻŦāĻļā§āϝāχ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝāĻžāϤ⧇ āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āĻļāĻŋāĻŽāϟāĻŋ āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āϖ⧁āρāĻœā§‡ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāĻŦāĻ‚ āϝ⧇āĻšā§‡āϤ⧁ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§‡āϟāϞ⧇āϏ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ, āϤāĻžāχ āφāĻŽāϰāĻž āϏāĻšāĻœā§‡āχ @ApplicationScoped āĻŸā§€āĻ•āĻž āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āĻāĻ­āĻžāĻŦ⧇:

@ApplicationScoped
public class HelloService {

āĻĻā§āϰāĻˇā§āϟāĻŦā§āϝ: āĻāĻ–āĻžāύ⧇ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āφāĻĒāύāĻžāϕ⧇ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻĒā§āϝāĻžāϕ⧇āϜ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻŦāϞāϤ⧇ āĻĒāĻžāϰ⧇ (āύ⧀āĻšā§‡āϰ āϞāĻžāχāύ āĻĻ⧇āϖ⧁āύ), āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϕ⧇ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āĻāχāĻ­āĻžāĻŦ⧇ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇:

import javax.enterprise.context.ApplicationScoped;

āϏ⧋āĻ°ā§āϏ āĻŦā§€āύ⧇āϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻž āύāĻž āĻĨāĻžāĻ•āϞ⧇ āϕ⧋āύ āĻ¸ā§āϕ⧋āĻĒāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤ āϤāĻž āύāĻŋāϝāĻŧ⧇ āφāĻĒāύāĻžāϰ āϏāĻ¨ā§āĻĻ⧇āĻš āĻĨāĻžāĻ•āϞ⧇, āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻĒāĻĄāĻŧ⧁āύ JSR 365: āϜāĻžāĻ­āĻž 2.0-āĻāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϏāĻ™ā§āĻ— āĻāĻŦāĻ‚ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āχāύāĻœā§‡āĻ•āĻļāĻ¨â€”āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϏ⧁āϝ⧋āĻ—.

āĻāĻ–āύ āφāĻŽāϰāĻž āφāĻŦāĻžāϰ ./mvnw compile quarkus:dev: āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāϝāĻŧ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋ āϚāĻžāϞ⧁ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋāĨ¤

$ ./mvnw compile quarkus:dev
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------< org.jboss.eap.quickstarts:helloworld >----------------
[INFO] Building Quickstart: helloworld quarkus
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /home/mrizzi/git/forked/jboss-eap-quickstarts/helloworld/target/classes
[INFO]
[INFO] --- quarkus-maven-plugin:0.23.2:dev (default-cli) @ helloworld ---
Listening for transport dt_socket at address: 5005
INFO  [io.qua.dep.QuarkusAugmentor] (main) Beginning quarkus augmentation
INFO  [io.qua.dep.QuarkusAugmentor] (main) Quarkus augmentation completed in 576ms
INFO  [io.quarkus] (main) Quarkus 0.23.2 started in 1.083s. Listening on: http://0.0.0.0:8080
INFO  [io.quarkus] (main) Profile dev activated. Live Coding activated.
INFO  [io.quarkus] (main) Installed features: [cdi]

āĻāĻ–āύ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ¤ā§āϰ⧁āϟāĻŋ āĻ›āĻžāĻĄāĻŧāĻž āϝāĻžāϝāĻŧ.

āφāϧ⧁āύāĻŋāϕ⧀āĻ•ā§ƒāϤ āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇
āϞāϗ⧇ āϝ⧇āĻŽāύ āϞ⧇āĻ–āĻž āφāϛ⧇, āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āϖ⧁āϞ⧁āύ 0.0.0.0:8080 (āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āĻļ⧁āϰ⧁ āĻĒ⧃āĻˇā§āĻ āĻž) āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻāϟāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāχ:

āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ: JBoss EAP Quickstart āĻĨ⧇āϕ⧇ helloworld āĻāϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āφāϧ⧁āύāĻŋāϕ⧀āĻ•āϰāĻŖ

āĻ­āĻžāϤāĨ¤ 4. āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āĻĄā§‡āĻ­ āĻļ⧁āϰ⧁ āĻĒāĻžāϤāĻžāĨ¤

āĻāχ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋāϰ āϜāĻ¨ā§āϝ WebServlet āĻŸā§€āĻ•āĻžāϟāĻŋāϤ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻĒā§āϰāϏāĻ™ā§āĻ— āϏāĻ‚āĻœā§āĻžāĻž āϰāϝāĻŧ⧇āϛ⧇:

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

āϤ⧋ āϚāϞ⧁āύ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āϝāĻžāχ 0.0.0.0:8080/HelloWorld āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤāϗ⧁āϞāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāχ:

āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ: JBoss EAP Quickstart āĻĨ⧇āϕ⧇ helloworld āĻāϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āφāϧ⧁āύāĻŋāϕ⧀āĻ•āϰāĻŖ

āĻ­āĻžāϤāĨ¤ 5: āĻšā§āϝāĻžāϞ⧋ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āĻĄā§‡āĻ­ āĻĒ⧃āĻˇā§āĻ āĻžāĨ¤

āĻ“āϝāĻŧ⧇āϞ, āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ•āĻžāϜ āĻ•āϰ⧇.

āĻāĻ–āύ āϕ⧋āĻĄ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āϝāĻžāĻ•. āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ ./mvnw āĻ•āĻŽā§āĻĒāĻžāχāϞ quarkus:dev āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āĻāĻ–āύāĻ“ āϚāϞāϛ⧇ āĻāĻŦāĻ‚ āφāĻŽāĻžāĻĻ⧇āϰ āĻāϟāĻŋ āĻŦāĻ¨ā§āϧ āĻ•āϰāĻžāϰ āϕ⧋āύ āχāĻšā§āĻ›āĻž āύ⧇āχāĨ¤ āĻāĻ–āύ āφāϏ⧁āύ āĻāĻ•āχ - āϖ⧁āĻŦāχ āϤ⧁āĻšā§āĻ› - āϕ⧋āĻĄā§‡ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻĻ⧇āϖ⧁āύ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰ⧇āϰ āĻœā§€āĻŦāύāϕ⧇ āϏāĻšāϜ āĻ•āϰ⧇ āϤ⧋āϞ⧇:

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

āĻĢāĻžāχāϞāϟāĻŋ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ⧇ āĻšā§āϝāĻžāϞ⧋ āĻŽāĻžāĻ°ā§āϕ⧋ āĻĻ⧇āĻ–āϤ⧇ āĻ“āϝāĻŧ⧇āĻŦ āĻĒ⧃āĻˇā§āĻ āĻžāϟāĻŋ āϰāĻŋāĻĢā§āϰ⧇āĻļ āĻ•āϰ⧁āύ, āύ⧀āĻšā§‡āϰ āĻ¸ā§āĻ•ā§āϰāĻŋāύāĻļāĻŸā§‡ āĻĻ⧇āĻ–āĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇:

āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ: JBoss EAP Quickstart āĻĨ⧇āϕ⧇ helloworld āĻāϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āφāϧ⧁āύāĻŋāϕ⧀āĻ•āϰāĻŖ

āĻ­āĻžāϤāĨ¤ 6. āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āĻĻ⧇āĻŦ⧇ āĻšā§āϝāĻžāϞ⧋ āĻŽāĻžāĻ°ā§āϕ⧋ āĻĒ⧃āĻˇā§āĻ āĻžāĨ¤

āĻāĻ–āύ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ⧇ āφāωāϟāĻĒ⧁āϟ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āϝāĻžāĻ•:

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

āĻĒ⧃āĻˇā§āĻ āĻž āϰāĻŋāĻĢā§āϰ⧇āĻļ āϏ⧋āĻ°ā§āϏ āϕ⧋āĻĄā§‡ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻŸā§āϰāĻŋāĻ—āĻžāϰ āĻ•āϰ⧇, āĻāĻŦāĻ‚ āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āĻ¸ā§āϟāĻĒ-āĻ¸ā§āϟāĻžāĻ°ā§āϟ āĻĒāĻĻā§āϧāϤāĻŋ āϏāĻžā§āϚāĻžāϞāĻŋāϤ āĻ•āϰ⧇āĨ¤ āĻāĻŦāĻ‚ āĻāχ āϏāĻŦ āĻŽāĻžāĻ¤ā§āϰ 0.371 āϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡ āϏāĻŽā§āĻĒāĻ¨ā§āύ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ (āĻāĻ–āĻžāύ⧇ āĻāϟāĻŋ "āφāĻ˛ā§āĻŸā§āϰāĻž-āĻĢāĻžāĻ¸ā§āϟ āϏāĻžāĻŦāϟāĻŽāĻŋāĻ• āϜāĻžāĻ­āĻž")āĨ¤

āĻāĻ•āϟāĻŋ JAR āĻĒā§āϝāĻžāϕ⧇āĻœā§‡ āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇
āĻāĻ–āύ āϕ⧋āĻĄāϟāĻŋ āϝ⧇āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āϏ⧇āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇, āφāϏ⧁āύ āĻāϟāĻŋāϕ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāϝāĻŧ⧇ āĻĒā§āϝāĻžāϕ⧇āϜ āĻ•āϰāĻŋ:

$ ./mvnw clean package

āĻāχ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ /target āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āĻĻ⧁āϟāĻŋ JAR āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰ⧇: helloworld-.jar āĻĢāĻžāχāϞ, āϝāĻž āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻŽāĻŋāϤ āφāĻ°ā§āϟāĻŋāĻĢā§āϝāĻžāĻ•ā§āϟ āϝāĻž Maven āϟāĻŋāĻŽā§‡āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āĻ•ā§āϞāĻžāϏ āĻāĻŦāĻ‚ āϏāĻ‚āĻ¸ā§āĻĨāĻžāύāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻšāϝāĻŧāĨ¤ āĻāĻŦāĻ‚ helloworld-runner.jar āĻĢāĻžāχāϞ, āϝāĻž āĻāĻ•āϟāĻŋ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻŸā§‡āĻŦāϞ JARāĨ¤

āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āϝ⧇ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āωāĻŦāĻžāϰ-āϜāĻžāϰ āύāϝāĻŧ, āϝ⧇āĻšā§‡āϤ⧁ āϏāĻŽāĻ¸ā§āϤ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϏāĻšāϜāĻ­āĻžāĻŦ⧇ /target/lib āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āĻ…āύ⧁āϞāĻŋāĻĒāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ (āĻāĻ•āϟāĻŋ JAR āĻĢāĻžāχāϞ⧇ āĻĒā§āϝāĻžāϕ⧇āϜ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻž)āĨ¤ āĻ…āϤāĻāĻŦ, āĻāχ JARāϟāĻŋāϕ⧇ āĻ…āĻ¨ā§āϝ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āĻĨ⧇āϕ⧇ āĻŦāĻž āĻ…āĻ¨ā§āϝ āĻšā§‹āĻ¸ā§āĻŸā§‡ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ, āφāĻĒāύāĻžāϕ⧇ JAR āĻĢāĻžāχāϞ āĻāĻŦāĻ‚ āϏ⧇āĻ–āĻžāύ⧇ /lib āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āωāĻ­āϝāĻŧāχ āĻ•āĻĒāĻŋ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āĻ•āĻžāϰāĻŖ JAR āĻĒā§āϝāĻžāϕ⧇āĻœā§‡āϰ MANIFEST.MF āĻĢāĻžāχāϞ⧇āϰ āĻ•ā§āϞāĻžāϏ-āĻĒāĻžāĻĨ āωāĻĒāĻžāĻĻāĻžāύāϟāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ lib āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āĻĨ⧇āϕ⧇ JAR-āĻāϰ āĻāĻ•āϟāĻŋ āϏ⧁āĻ¸ā§āĻĒāĻˇā§āϟ āϤāĻžāϞāĻŋāĻ•āĻž
āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āωāĻŦāĻžāϰ-āϜāĻžāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āϤāĻž āĻļāĻŋāĻ–āϤ⧇, āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āϟāĻŋāωāĻŸā§‹āϰāĻŋāϝāĻŧāĻžāϞ āĻĒāĻĄāĻŧ⧁āύ āωāĻŦāĻžāϰ-āϜāĻžāϰ āϏ⧃āĻˇā§āϟāĻŋ.

JAR-āĻ āĻĒā§āϝāĻžāϕ⧇āϜ āĻ•āϰāĻž āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύ

āĻāĻ–āύ āφāĻŽāϰāĻž āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āϜāĻžāĻ­āĻž āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āφāĻŽāĻžāĻĻ⧇āϰ JAR āϚāĻžāϞāĻžāϤ⧇ āĻĒāĻžāϰāĻŋ:

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

āĻāχ āϏāĻŦ āϏāĻŽā§āĻĒāĻ¨ā§āύ āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āφāĻĒāύāĻžāϰ āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻ āϝāĻžāύ 0.0.0.0:8080 āĻāĻŦāĻ‚ āĻšā§‡āĻ• āĻ•āϰ⧁āύ āϝ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ āĻŋāĻ• āĻŽāϤ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

āĻāĻ•āϟāĻŋ āύ⧇āϟāĻŋāĻ­ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻŸā§‡āĻŦāϞ āĻĢāĻžāχāϞ⧇ āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āϏ⧁āϤāϰāĻžāĻ‚ āφāĻŽāĻžāĻĻ⧇āϰ āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŦāϤāĻ¨ā§āĻ¤ā§āϰ āϜāĻžāĻ­āĻž āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻšāĻŋāϏāĻžāĻŦ⧇ āϚāϞ⧇āĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻĒāύāĻŋ āφāϰāĻ“ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ āĻāϟāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āύ⧇āϟāĻŋāĻ­ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻŸā§‡āĻŦāϞ āĻĢāĻžāχāϞ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

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. āφāύāϟāĻžāϰ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āϝāĻžāύāĨ¤

4. āύ⧇āϟāĻŋāĻ­ āχāĻŽā§‡āϜ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻāĻŦāĻ‚ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āύāĻŋāĻšā§‡āϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āϚāĻžāϞāĻžāύ:

$ ./bin/gu install native-image

5. GRAALVM_HOME āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇ āϧāĻžāĻĒ 2 āĻ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰāϟāĻŋāϕ⧇ āύāĻŋāĻŦāĻ¨ā§āϧāύ āĻ•āϰ⧁āύ:

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

āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ OS-āĻ āφāϰāĻ“ āϤāĻĨā§āϝ āĻāĻŦāĻ‚ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀āϰ āϜāĻ¨ā§āϝ, āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāϟāĻŋ āĻĻ⧇āϖ⧁āύ āĻāĻ•āϟāĻŋ āύ⧇āϟāĻŋāĻ­ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻŸā§‡āĻŦāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻž - āĻĒā§‚āĻ°ā§āĻŦāĻļāĻ°ā§āϤ.

āĻāĻ•āϟāĻŋ āύ⧇āϟāĻŋāĻ­ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻŸā§‡āĻŦāϞ āĻĢāĻžāχāϞ⧇ āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇
āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞ āĻĒāĻĄāĻŧāĻž āĻāĻ•āϟāĻŋ āύ⧇āϟāĻŋāĻ­ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻŸā§‡āĻŦāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻž - āĻāĻ•āϟāĻŋ āύ⧇āϟāĻŋāĻ­ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻŸā§‡āĻŦāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻž: "āĻāĻ–āύ āφāĻŽāĻžāĻĻ⧇āϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋāϰ āϞāĻžā§āĻšā§‡āϰ āϏāĻŽāϝāĻŧ āĻāĻŦāĻ‚ āĻĄāĻŋāĻ¸ā§āϕ⧇āϰ āφāĻ•āĻžāϰ āĻ•āĻŽāĻžāϤ⧇ āĻāĻ•āϟāĻŋ āύ⧇āϟāĻŋāĻ­ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻŸā§‡āĻŦāϞ āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋāĨ¤ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻŸā§‡āĻŦāϞ āĻĢāĻžāχāϞāϟāĻŋāϤ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻĨāĻžāĻ•āĻŦ⧇, āϝāĻžāϰ āĻŽāĻ§ā§āϝ⧇ JVM (āĻ…āĻĨāĻŦāĻž āĻŦāϰāĻ‚, āĻāϟāĻŋāϰ āĻāĻ•āϟāĻŋ āϛ⧇āρāĻŸā§‡ āĻĻ⧇āĻ“āϝāĻŧāĻž āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ, āϝāĻž āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ) āĻāĻŦāĻ‚ āφāĻŽāĻžāĻĻ⧇āϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āύāĻŋāĻœā§‡āχ āϰāϝāĻŧ⧇āϛ⧇āĨ¤"

āĻāĻ•āϟāĻŋ āύ⧇āϟāĻŋāĻ­ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻŸā§‡āĻŦāϞ āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇, āφāĻĒāύāĻžāϕ⧇ āύ⧇āϟāĻŋāĻ­ āĻŽāĻžāϭ⧇āύ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āϏāĻ•ā§āώāĻŽ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇:

$ ./mvnw package -Pnative

āφāĻŽāĻžāĻĻ⧇āϰ āĻŦāĻŋāĻ˛ā§āĻĄā§‡ āĻāĻ• āĻŽāĻŋāύāĻŋāϟ āĻāĻŦāĻ‚ 10 āϏ⧇āϕ⧇āĻ¨ā§āĻĄ āϏāĻŽāϝāĻŧ āϞ⧇āϗ⧇āϛ⧇, āĻāĻŦāĻ‚ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āϤ helloworld-āϰāĻžāύāĻžāϰ f āĻĢāĻžāχāϞāϟāĻŋ /target āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āύ⧇āϟāĻŋāĻ­ āĻšā§āϝāĻžāϞ⧋āĻ“āϝāĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻŸā§‡āĻŦāϞ āϚāĻžāϞāĻžāύ

āφāϗ⧇āϰ āϧāĻžāĻĒ⧇, āφāĻŽāϰāĻž āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻŸā§‡āĻŦāϞ āĻĢāĻžāχāϞāϟāĻŋ āĻĒ⧇āϝāĻŧ⧇āĻ›āĻŋ /target/helloworld—āϰāĻžāύāĻžāϰāĨ¤ āĻāĻ–āύ āĻāϟāĻŋ āϚāĻžāϞāĻžāύ⧋ āϝāĻžāĻ•:

$ ./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 āĻāĻŦāĻ‚ āĻšā§‡āĻ• āĻ•āϰ⧁āύ āϝ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ āĻŋāĻ• āĻŽāϤ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

āϚāϞāĻŦ⧇!

āφāĻŽāϰāĻž āĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻ•āϰāĻŋ āϝ⧇ āĻāχ āĻĒā§‹āĻ¸ā§āĻŸā§‡ āφāϞ⧋āϚāĻŋāϤ āϕ⧋āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϏ āĻ•ā§āώāĻŽāϤāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϜāĻžāĻ­āĻž āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āφāϧ⧁āύāĻŋāϕ⧀āĻ•āϰāϪ⧇āϰ āĻĒāĻĻā§āϧāϤāĻŋ (āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āωāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇āĻ“) āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻœā§€āĻŦāύ⧇ āϏāĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤāĨ¤ āĻāϟāĻŋ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āφāĻĒāύāĻŋ āϏāĻŽā§āĻ­āĻŦāϤ āĻŦ⧇āĻļ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻžāϰ āϏāĻŽā§āĻŽā§āĻ–ā§€āύ āĻšāĻŦ⧇āύ, āϝāĻž āφāĻŽāϰāĻž āφāĻ‚āĻļāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒā§‹āĻ¸ā§āĻŸā§‡ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻŦ, āϝ⧇āĻ–āĻžāύ⧇ āφāĻŽāϰāĻž āĻ•āĻžāĻ°ā§āϝāĻ•ā§āώāĻŽāϤāĻžāϰ āωāĻ¨ā§āύāϤāĻŋāϰ āĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻŽā§‡āĻŽāϰāĻŋ āĻ–āϰāϚ āĻĒāϰāĻŋāĻŽāĻžāĻĒ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āϏ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ•āĻĨāĻž āĻŦāϞāĻŦ, āϏāĻŽāĻ—ā§āϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āφāϧ⧁āύāĻŋāϕ⧀āĻ•āϰāĻŖ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϰ āĻāĻ•āϟāĻŋ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ…āĻ‚āĻļāĨ¤

āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster