рдЗрд╕ рдмреНрд▓реЙрдЧ рдкрд░ рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдФрд░ рдХреНрд╡рд╛рд░реНрдХрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдЪреМрдереА рдкреЛрд╕реНрдЯ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

рдпрд╣ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛ рдХрд┐ рдХреНрд╡рд╛рд░реНрдХрд╕ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрдлрд╛рдЗрд▓ рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЖрдЗрдпреЗ рд╣рдо рд╕реНрдорд░рдг рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЦреБрдж рдХреЛ "рд╕реБрдкрд░рдлрд╛рд╕реНрдЯ рд╕рдмрдПрдЯреЙрдорд┐рдХ рдЬрд╛рд╡рд╛" рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ "рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕-рдЙрдиреНрдореБрдЦ рдЬрд╛рд╡рд╛ рд╕реНрдЯреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЧреНрд░реЗрдЕрд▓рд╡реАрдПрдо рдФрд░ рдУрдкрдирдЬреЗрдбреАрдХреЗ рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдорд╛рдирдХреЛрдВ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред" рдЖрдЬ рд╣рдо рдЖрдкрдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд╡рд╛рд░реНрдХрд╕ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдореМрдЬреВрджрд╛ рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЖрдзреБрдирд┐рдХ рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рдПрдВрдЧреЗ , рдЬреЛ рдХреНрд╡рд╛рд░реНрдХрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╕реАрдбреАрдЖрдИ рдФрд░ рд╕рд░реНрд╡рд▓реЗрдЯ 3 рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХреНрд╡рд╛рд░реНрдХрд╕ рдФрд░ рдЬреЗрдмреЙрд╕ рдИрдПрдкреА рджреЛрдиреЛрдВ рд╣реА рдРрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЬреЛрд░ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдпрдерд╛рд╕рдВрднрд╡ рдорд╛рдирдХ-рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдВред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ JBoss EAP рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд╣реАрдВ рд╣реИ? рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ, рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рд╕реЗ 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. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓реЗрдВ :8080 рдФрд░ рд╣рдо рдпрд╣ рджреЗрдЦрддреЗ рд╣реИрдВ:

рдЪрд╛рд╡рд▓ред 1. JBoss рдИрдПрдкреА рд╣реЛрдо рдкреЗрдЬ.
4. рдореИрдиреБрдЕрд▓ рдореЗрдВ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ : helloworld рдХреЛ рддреИрдирд╛рдд рдХрд░реЗрдВ рдФрд░ (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
$ mvn clean install wildfly:deploy
рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд▓реЙрдЧ рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦреЗрдВрдЧреЗ:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.224 s
рдЗрд╕рд▓рд┐рдП, JBoss EAP рдкрд░ рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкрд╣рд▓реА рддреИрдирд╛рддреА рдореЗрдВ рдХреЗрд╡рд▓ 8 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛ рд╕рдордп рд▓рдЧрд╛ред
рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг
рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдЦреНрддреА рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдирд╛ , рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓реЗрдВ :8080/helloworld рдФрд░ рд╣рдо рдпрд╣ рджреЗрдЦрддреЗ рд╣реИрдВ:

рдЪрд╛рд╡рд▓ред 2. JBoss EAP рд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб.
рд╣рдо рдмрджрд▓рд╛рд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ createHelloMessage(String name) рдХреЛ World рд╕реЗ Marco рдореЗрдВ рдмрджрд▓реЗрдВ:
writer.println("<h1>" + helloService.createHelloMessage("Marco") + "</h1>");
рдкреБрдирдГ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
$ mvn clean install wildfly:deploy
рдлрд┐рд░ рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреЗрдЬ рдХреЛ рд░рд┐рдлреНрд░реЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╛рда рдмрджрд▓ рдЧрдпрд╛ рд╣реИ:

рдЪрд╛рд╡рд▓ред 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 рдмреНрд▓реЙрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
$ mvn io.quarkus:quarkus-maven-plugin:0.23.2:create
рдпрд╣ рдЖрд▓реЗрдЦ рд╕рдВрд╕реНрдХрд░рдг 0.23.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдХреНрд╡рд╛рд░реНрдХрд╕ рдЕрдХреНрд╕рд░ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ, рдЖрдк рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рдирд╡реАрдирддрдо рд╣реИ .
рдЙрдкрд░реЛрдХреНрдд рдЖрджреЗрд╢ pom.xml рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрддреНрд╡ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдЧрд╛:
- рд╕рдВрдкрддреНрддрд┐ , рдЬреЛ рдХреНрд╡рд╛рд░реНрдХрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рд╣реЗрддреБ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
- рдЕрд╡рд░реЛрдз рдкреИрджрд╛ рдХрд░рдирд╛ рдХреНрд╡рд╛рд░реНрдХрд╕ рдмреАрдУрдПрдо (рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдмрд┐рд▓) рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡рд╛рд░реНрдХрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рди рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред
- рдХреНрд╡рд╛рд░реНрдХрд╕-рдореЗрд╡реЗрди-рдкреНрд▓рдЧрдЗрди рдкреНрд▓рдЧрдЗрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдкреИрдХреЗрдЬрд┐рдВрдЧ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
- рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓.
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдо pom.xml рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ:
- рд╣рдо рдЯреИрдЧ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдмреНрд▓реЙрдХ рд╕реЗ рдФрд░ рдЗрд╕реЗ рдЯреИрдЧ рдХреЗ рдКрдкрд░ рд░рдЦреЗрдВ . рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ рд╣рдо рдмреНрд▓реЙрдХ рд╣рдЯрд╛ рджреЗрдВрдЧреЗ , рддреЛ рдЖрдкрдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ .
- рдмреНрд▓реЙрдХ рд╣рдЯрд╛рдПрдБ , рдХреНрдпреЛрдВрдХрд┐ рдХреНрд╡рд╛рд░реНрдХрд╕ рдХреЗ рд╕рд╛рде рдЪрд▓рдиреЗ рдкрд░, рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ JBoss рд╕реЗ рдкреИрд░реЗрдВрдЯ pom рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
- рдПрдХ рдЯреИрдЧ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдЗрд╕реЗ рдЯреИрдЧ рдХреЗ рдиреАрдЪреЗ рд░рдЦреЗрдВ . рдЖрдк рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХреЛрдИ рднреА рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдЯреИрдЧ рд╣рдЯрд╛рдПрдБ , рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрдм WAR рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдирд┐рдпрдорд┐рдд JAR рд╣реИред
- рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
- рдирд┐рд░реНрднрд░рддрд╛ javax.enterprise:cdi-api рдХреЛ io.quarkus:quarkus-arc рдореЗрдВ рдмрджрд▓реЗрдВ, рд╣рдЯрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ , рдХреНрдпреЛрдВрдХрд┐ (рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдпрд╣ рдХреНрд╡рд╛рд░реНрдХрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реАрдбреАрдЖрдИ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- рдирд┐рд░реНрднрд░рддрд╛ org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec рдХреЛ io.quarkus:quarkus-undertow рдореЗрдВ рдмрджрд▓реЗрдВ, рд╣рдЯрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ , рдХреНрдпреЛрдВрдХрд┐ (рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдпрд╣ рдХреНрд╡рд╛рд░реНрдХрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рд░реНрд╡рд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- 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 рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рдбреЙрдХрд░ рдлрд╝реЛрд▓реНрдбрд░ (src/main/ рдореЗрдВ): рдЗрд╕рдореЗрдВ рдореВрд▓ рдФрд░ jvm рдореЛрдб рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ Dockerfiles (рдПрдХ .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
рддреЛ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛... рдХреНрдпреЛрдВ?
UnsatisfiedResolutionException рдЕрдкрд╡рд╛рдж HelloService рд╡рд░реНрдЧ рдХреА рдУрд░ рд╕рдВрдХреЗрдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ HelloWorldServlet рд╡рд░реНрдЧ (java рд╕рджрд╕реНрдп: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService) рдХрд╛ рд╕рджрд╕реНрдп рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ HelloWorldServlet рдХреЛ HelloService рдХрд╛ рдЗрдВрдЬреЗрдХреНрдЯреЗрдб рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╡рд╣ рдЙрд╕реЗ рдвреВрдВрдв рдирд╣реАрдВ рдкрд╛рддрд╛ (рднрд▓реЗ рд╣реА рдпреЗ рджреЛрдиреЛрдВ рдХреНрд▓рд╛рд╕ рдПрдХ рд╣реА рдкреИрдХреЗрдЬ рдореЗрдВ рд╣реЛрдВ)ред
рдЕрдм рд╡рд╛рдкрд╕ рд▓реМрдЯрдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрдврд╝реЗрдВ рдХрд┐ рдпрд╣ рдХреНрд╡рд╛рд░реНрдХрд╕ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ , рдФрд░ рдЗрд╕рд▓рд┐рдП, (рд╕реАрдбреАрдЖрдИ) рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╕рдВрджрд░реНрдн рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдЧрд╛рдЗрдб рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣рдордиреЗ рдкрдврд╝рд╛: "рд╡рд╣ рдмреАрди рд╡рд░реНрдЧ рдЬрд┐рд╕рдореЗрдВ рдмреАрди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдиреЛрдЯреЗрд╢рди рдирд╣реАрдВ рд╣реИ, рдЙрд╕реЗ рдЦреЛрдЬрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред"
рдЖрдЗрдП HelloService рдХреНрд▓рд╛рд╕ рдкрд░ рдирдЬрд░ рдбрд╛рд▓реЗрдВ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдПрдиреЛрдЯреЗрд╢рди рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреНрд╡рд╛рд░реНрдХрд╕ рдмреАрди рдХреЛ рдЦреЛрдЬ рд╕рдХреЗ рдФрд░ рдвреВрдВрдв рд╕рдХреЗред рдФрд░ рдЪреВрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ @ApplicationScoped рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдЗрд╕ рддрд░рд╣ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
@ApplicationScoped
public class HelloService {
рдиреЛрдЯ: рдпрд╣рд╛рдВ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдЖрдкрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддрд╛ рд╣реИ (рдиреАрдЪреЗ рдХреА рдкрдВрдХреНрддрд┐ рджреЗрдЦреЗрдВ), рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕ рддрд░рд╣:
import javax.enterprise.context.ApplicationScoped;
рдпрджрд┐ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рд╕реНрдХреЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЬрдмрдХрд┐ рдореВрд▓ рдмреАрди рдореЗрдВ рдХреЛрдИ рд╕реНрдХреЛрдк рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВред .
рдЕрдм рд╣рдо ./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]
рдЕрдм рд╕рдм рдХреБрдЫ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдЪрд▓рддрд╛ рд╣реИред
рдЖрдзреБрдирд┐рдХ рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдХрд╛ рд╢реБрднрд╛рд░рдВрдн
рдЬреИрд╕рд╛ рд▓реЙрдЧ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓реЗрдВ :8080 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд╡рд╛рд░реНрдХрд╕ рдкреНрд░рд╛рд░рдВрдн рдкреГрд╖реНрда) рдФрд░ рд╣рдо рдпрд╣ рджреЗрдЦрддреЗ рд╣реИрдВ:

рдЪрд╛рд╡рд▓ред 4. рдХреНрд╡рд╛рд░реНрдХрд╕ рджреЗрд╡ рд╣реЛрдо рдкреЗрдЬ.
рдЗрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрд╕рд░реНрд╡рд▓реЗрдЯ рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрджрд░реНрдн рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ:
@WebServlet("/HelloWorld")
public class HelloWorldServlet extends HttpServlet {
рддреЛ рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ :8080/HelloWorld рдФрд░ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦрддреЗ рд╣реИрдВ:

рдЪрд╛рд╡рд▓ред 5: рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдРрдк рдХреЗ рд▓рд┐рдП рдХреНрд╡рд╛рд░реНрдХрд╕ рдбреЗрд╡ рдкреЗрдЬред
рдЦреИрд░, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрдм рдЖрдЗрдпреЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ ./mvnw compile quarkus:dev рдХрдорд╛рдВрдб рдЕрднреА рднреА рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕реЗ рдмрдВрдж рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЕрдм рдЖрдЗрдП рдЙрдиреНрд╣реАрдВ - рдорд╛рдореВрд▓реА - рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрд╡рд╛рд░реНрдХрд╕ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ:
writer.println("<h1>" + helloService.createHelloMessage("Marco") + "</h1>");
рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реЗрд╡ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ рд╣реИрд▓реЛ рдорд╛рд░реНрдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдкреЗрдЬ рдХреЛ рд░рд┐рдлреНрд░реЗрд╢ рдХрд░реЗрдВ:

рдЪрд╛рд╡рд▓ред 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 рдкреИрдХреЗрдЬ рдореЗрдВ helloworld рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдЕрдм рдЪреВрдВрдХрд┐ рдХреЛрдб рдЕрдкреЗрдХреНрд╖рд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдЗрдП рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреИрдХ рдХрд░реЗрдВ:
$ ./mvnw clean package
рдпрд╣ рдХрдорд╛рдВрдб /target рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджреЛ JAR рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рддрд╛ рд╣реИ: helloworld-.jar рдлрд╝рд╛рдЗрд▓, рдЬреЛ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде Maven рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░рд┐рдд рдПрдХ рдорд╛рдирдХ рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рд╣реИред рдФрд░ helloworld-runner.jar рдлрд╝рд╛рдЗрд▓, рдЬреЛ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп JAR рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдПрдХ uber-jar рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдХреЗрд╡рд▓ /target/lib рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХреА рдЬрд╛рддреА рд╣реИрдВ (JAR рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп)ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ JAR рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝реЛрд▓реНрдбрд░ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╣реЛрд╕реНрдЯ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ JAR рдлрд╝рд╛рдЗрд▓ рдФрд░ /lib рдлрд╝реЛрд▓реНрдбрд░ рджреЛрдиреЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдмрд╢рд░реНрддреЗ рдХрд┐ JAR рдкреИрдХреЗрдЬ рдореЗрдВ MANIFEST.MF рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Class-Path рддрддреНрд╡ рдореЗрдВ lib рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ JARs рдХреА рд╕реНрдкрд╖реНрдЯ рд╕реВрдЪреА рд╣реЛред
рдЙрдмрд░-рдЬрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рдЧрд╛рдЗрдб рджреЗрдЦреЗрдВ .
JAR рдореЗрдВ рдкреИрдХреЗрдЬреНрдб helloworld рдЪрд▓рд╛рдПрдБ
рдЕрдм рд╣рдо рдорд╛рдирдХ рдЬрд╛рд╡рд╛ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдирд╛ 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]
рдПрдХ рдмрд╛рд░ рдпрд╣ рд╕рдм рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ :8080 рдФрд░ рдЬрд╛рдБрдЪ рд▓реЗрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдХреЛ рдПрдХ рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрдирд╛рдирд╛
рддреЛ, рд╣рдорд╛рд░рд╛ рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдХреНрд╡рд╛рд░реНрдХрд╕ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рд╕реЗ рднреА рдЖрдЧреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
GraalVM рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:
1. GraalVM 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. рд╣рдо рдЪрд░рдг 2 рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ GRAALVM_HOME рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ:
$ export GRAALVM_HOME={untar-folder}/graalvm-ce-19.2.0.1)
рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдореИрдиреБрдЕрд▓ рджреЗрдЦреЗрдВ .
рд╣рдо helloworld рдХреЛ рдПрдХ рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ
рдореИрдиреБрдЕрд▓ рдкрдврд╝реЗрдВ : "рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЗрд╕рдХрд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдФрд░ рдбрд┐рд╕реНрдХ рдЖрдХрд╛рд░ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЪреАрдЬреЗрдВ рд╣реЛрдВрдЧреА, рдЬрд┐рд╕рдореЗрдВ JVM (рдпрд╛ рдмрд▓реНрдХрд┐, рдЗрд╕рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд╣реА рд╣реЛрдЧрд╛ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ) рдФрд░ рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИред"
рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Maven рдореВрд▓ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
$ ./mvnw package -Pnative
рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдПрдХ рдорд┐рдирдЯ рдФрд░ 10 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓рдЧрд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк helloworld-runner f рдлрд╝рд╛рдЗрд▓ /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]
рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреБрдирдГ рдЦреЛрд▓реЗрдВ :8080 рдФрд░ рдЬрд╛рдБрдЪ рд▓реЗрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
рдкреНрд░рд┐рдп рдорд┐рддреНрд░!
рд╣рдорд╛рд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдХреНрд╡рд╛рд░реНрдХрд╕ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЖрдзреБрдирд┐рдХ рдмрдирд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐, рдЬрд┐рд╕рдХреА рдЪрд░реНрдЪрд╛ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдХреА рдЧрдИ рд╣реИ (рдпрджреНрдпрдкрд┐ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП), рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЛ рд╕рдВрднрд╡рддрдГ рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░ рд╣рдо рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА, рдЬреЛ рдХрд┐ рд╕рдВрдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдкрдЧреНрд░реЗрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
рд╕реНрд░реЛрдд: www.habr.com
