рдХреНрд╡рд╛рд░реНрдХрд╕: JBoss рдИрдПрдкреА рдХреНрд╡рд┐рдХрд╛рд░реНрдЯ рд╕реЗ рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдкрдЧреНрд░реЗрдб

рдЗрд╕ рдмреНрд▓реЙрдЧ рдкрд░ рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдФрд░ рдЖрдкрдХреЗ рд╕рд╛рде рдХреНрд╡рд╛рд░реНрдХрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдЪреМрдереА рдкреЛрд╕реНрдЯ! (рд╡реИрд╕реЗ, рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рд╡реЗрдмрд┐рдирд╛рд░ рдкрд░ рдЬрд╛рдПрдВ " рдпрд╣ рдХреНрд╡рд╛рд░реНрдХрд╕ рд╣реИ - рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореВрд▓ рдЬрд╛рд╡рд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ ", рдЬреЛ 27 рдордИ рдХреЛ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рджрд┐рдЦрд╛рдПрдВрдЧреЗ рдХрд┐ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдпрд╛ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ)



рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рдХреНрд╡рд╛рд░реНрдХрд╕ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрдлрд╛рдЗрд▓ рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХреНрд╡рд╛рд░реНрдХрд╕ рдХреЛ "рдЕрд▓реНрдЯреНрд░рд╛рдлрд╛рд╕реНрдЯ рд╕рдмрдореЗрдЯреЛрдорд┐рдХ рдЬрд╛рд╡рд╛" рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ "рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕-рдЙрдиреНрдореБрдЦ рдЬрд╛рд╡рд╛-рд╕реНрдЯреИрдХ рд╣реИ, рдЬрд┐рд╕реЗ рдЧреНрд░реЗрд╡рд╛рд▓рдо рдФрд░ рдУрдкрдирдЬреЗрдбрдХреЗ рд╣реЙрдЯрд╕реНрдкреЙрдЯ рджреНрд╡рд╛рд░рд╛ рддреЗрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдорд╛рдирдХреЛрдВ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред" рдЖрдЬ рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ Red Hat JBoss рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (JBoss EAP) рдХреНрд╡рд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдЬрд░реНрдХрд╡рд░реНрд▓реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд╡рд╛рд░реНрдХрд╕ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореМрдЬреВрджрд╛ рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЙрдиреНрдирдд рдХрд┐рдпрд╛ рдЬрд╛рдПредрд╕реАрдбреАрдЖрдИ рдФрд░ рд╕рд░реНрд╡рд▓реЗрдЯ 3 рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд╡рд╛рд░реНрдХрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рддред

рдпрд╣рд╛рдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХреНрд╡рд╛рд░реНрдХрд╕ рдФрд░ рдЬреЗрдмреЙрд╕ рдИрдПрдкреА рджреЛрдиреЛрдВ рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдзрд┐рдХрддрдо рдорд╛рдирдХреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВред 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/

рджреЗрдЦреЗрдВ рдХрд┐ рдореВрд▓ рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


рджрд░рдЕрд╕рд▓, рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╕рд╛рд░ рдирд╛рдо рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕рдХреЗ рдХреЛрдб рдХреЛ рд╕рдЦреНрддреА рд╕реЗ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП, рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрд╕рдХреЗ рдореВрд▓ рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВред

Helloworld рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ

1. рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВ рдФрд░ JBoss EAP рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд░реВрдЯ рдкрд░ рдЬрд╛рдПрдВ (рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ), рдЬреЛ рдХрд┐ EAP_HOME рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИред

2. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде JBoss EAP рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░реЗрдВ:

$ EAP_HOME/bin/standalone.sh

рдиреЛрдЯ: рд╡рд┐рдВрдбреЛрдЬ рдкрд░, EAP_HOME \ bin \ standalone.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 рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рджреЗрдЦреЗрдВ:



рдЕрдВрдЬреАрд░ред 1. JBoss рдИрдПрдкреА рд╣реЛрдордкреЗрдЬред

4. рдмрд┐рд▓реНрдб рдореЗрдВ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдФрд░ рдХреНрд╡рд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ рдореИрдиреБрдЕрд▓ рдХреЛ рдирд┐рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ: рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдХреЛ рддреИрдирд╛рдд рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрдорд╛рдВрдб рдлреЛрд▓реНрдбрд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

$ mvn clean install wildfly:deploy

рд▓реЙрдЧ рдореЗрдВ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рд╕рдлрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреБрдЫ рджреЗрдЦреЗрдВрдЧреЗ:

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

рддреЛ, JBoss EAP рдкрд░ рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкрд╣рд▓реА рддреИрдирд╛рддреА рдХреЛ рд╕рд┐рд░реНрдл 8 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛ред

рд╣рдо рдПрдХреНрд╕реЗрд╕

рдЧрд╛рдЗрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдЦреНрддреА рд╕реЗ рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдЕрднрд┐рдирдп рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ , рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ 127.0.0.1 : 8080 / рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рджреЗрдЦреЗрдВ:



рдЕрдВрдЬреАрд░ред 2. JBoss рдИрдПрдкреА рд╕реЗ рдореВрд▓ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдбред

рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ

рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ createHelloMessage (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо) рдХреЛ рд╡рд┐рд╢реНрд╡ рд╕реЗ рдорд╛рд░реНрдХреЛ рдореЗрдВ рдмрджрд▓реЗрдВ:

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 рджрдмрд╛рдПрдВред

рдЬрд╣рдиреНрдиреБрдо рдХрд╛ рдЙрдиреНрдирдпрди


рдЕрдм рд╣рдо рдореВрд▓ рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВред

рдПрдХ рдирдИ рд╢рд╛рдЦрд╛

рдмрдирд╛рдПрдБ Quickstart рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рдирдИ рдХрд╛рд░реНрдп рд╢рд╛рдЦрд╛ рдмрдирд╛рдПрдБ:

$ git checkout -b quarkus 7.2.0.GA

Pom.xml рдлрд╝рд╛рдЗрд▓ рдмрджрд▓рдирд╛

рд╣рдо pom.xml рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрджрд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗред рддрд╛рдХрд┐ рдХреНрд╡рд╛рд░реНрдХрд╕ рдПрдХреНрд╕рдПрдордПрд▓ рдмреНрд▓реЙрдХ рдХреЛ рдЗрд╕рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХреЗ, рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

$ mvn io.quarkus:quarkus-maven-plugin:0.23.2:create

рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп, рд╕рдВрд╕реНрдХрд░рдг 0.23.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреНрд╡рд╛рд░реНрдХрд╕ рдХреЗ рдЕрдХреНрд╕рд░ рдирдП рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрддреЗ рд╣реИрдВ; рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг github.com/quarkusio/quarkus/releases/latest рдкрд░ рдирд╡реАрдирддрдо рд╣реИ ред

рдЙрдкрд░реЛрдХреНрдд рдХрдорд╛рдВрдб pom.xml рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрддреНрд╡ рдбрд╛рд▓реЗрдЧреА:

  • <Quarkus.version> рдЧреБрдг рдЬреЛ рдХреНрд╡рд╛рд░реНрдХрд╕ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
  • рдХреНрд╡рд╛рд░реНрдХрд╕ рдмреАрдУрдПрдо (рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдмрд┐рд▓) рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП <рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди> рдмреНрд▓реЙрдХ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡рд╛рд░реНрдХрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рди рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред
  • рдХреНрд╡рд╛рд░реНрдХрд╕-рдорд╛рд╡реЗрди-рдкреНрд▓рдЧрдЗрди рдкреНрд▓рдЧрдЗрди, рдЬреЛ рдЖрд╡реЗрджрди рдХреА рдкреИрдХреЗрдЬрд┐рдВрдЧ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ pom.xml рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ:

  1. <groupId> <parent> <artifactId>. <parent>, <groupId>.
  2. <parent>, Quarkus pom JBoss.
  3. <version> <artifactId>. .
  4. <packaging>, WAR, JAR.
  5. :
    1. javax.enterprise:cdi-api io.quarkus:quarkus-arc, <scope>provided</scope>, ( ) Quarkus- injection CDI.
    2. рд╣рдо org.jboss.spec.javax.servlet: jboss-servlet-api_4.0_spec рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ io.quarkus: quarkus-dow рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реБрдП <рд╕реНрдХреЛрдк </ рдЧреБрдВрдЬрд╛рдЗрд╢> рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ (рдбреЙрдХреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдпрд╣ рдХреНрд╡рд╛рд░реНрдХрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рд░реНрд╡рд▓реЗрдЯ рд╕рдкреЛрд░реНрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред 'рд╣реИред
    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 рдкрд░ рд╕реНрдерд┐рдд рд╣реИ ред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдорд╡рди io.quarkus: quarkus-maven-plugin: 0.23.2: рдХрдорд╛рдВрдб рдмрдирд╛рдПрдБ рди рдХреЗрд╡рд▓ pom.xml рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХрдИ рдШрдЯрдХреЛрдВ рдХреЛ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рд╛рдЗрд▓реНрд╕ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реНрд╕:

  • mvnw and mvnw.cmd .mvn: Maven Wrapper Maven Maven .
  • docker ( src/main/): Dockerfile native jvm ( .dockerignore).
  • resources ( src/main/): application.properties Quarkus index.html ( . Run the modernized helloworld ).

рд╣рдо
рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреНрд╡рд╛рд░реНрдХрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: рджреЗрд╡, рдЬреЛ рдХреНрд╡рд╛рд░реНрдХрд╕ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ (рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдореИрдиреБрдЕрд▓ рдореЗрдВ рджреЗрдЦреЗрдВ )ред

рдиреЛрдЯ: рдЗрд╕ рдХрджрдо рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЕрднреА рддрдХ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдХрд┐рдП рд╣реИрдВред

рдЕрдм рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╣ рдЬрд╛рдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:

$ ./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 рд╡рд░реНрдЧ (рдЬрд╛рд╡рд╛ рд╕рджрд╕реНрдп: org.jboss.as.quickstarts.helloworld.HelloWervServlet # helloService) рдХрд╛ рдПрдХ рд╕рджрд╕реНрдп рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ HelloWorldServlet рдХреЛ HelloService рдХрд╛ рдЗрдВрдЬреЗрдХреНрдЯреЗрдб рдЙрджрд╛рд╣рд░рдг рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпреЗ рджреЛрдиреЛрдВ рд╡рд░реНрдЧ рдПрдХ рд╣реА рдкреИрдХреЗрдЬ рдореЗрдВ рд╣реИрдВ)ред

рдпрд╣ рдкреНрд░рд▓реЗрдЦрди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдФрд░ рдкрдврд╝реЗрдВ рдХрд┐ рдХреНрд╡рд╛рд░реНрдХрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИрдЗрдВрдЬреЗрдХреНрд╖рдирдФрд░ рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╕рдВрдЧ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди (рд╕реАрдбреАрдЖрдИ)ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХреЙрдиреНрдЯреЗрдХреНрд╕ рдФрд░ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди рдЧрд╛рдЗрдб рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдмреАрди рдбрд┐рд╕реНрдХрд╡рд░реА рдЦрдВрдб рдореЗрдВ рдкрдврд╝рддреЗ рд╣реИрдВ: "рдПрдХ рдмреАрди рдХреНрд▓рд╛рд╕ рдЬрд┐рд╕рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдбрд┐рдлрд╛рдЗрдирд┐рдВрдЧ рдмреАрди рдХреА рдЦреЛрдЬ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред"

рд╣рдо 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 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд╡рд╛рд░реНрдХ рдкреНрд░рд╛рд░рдВрдн рдкреГрд╖реНрда) рдФрд░ рдЗрд╕реЗ рджреЗрдЦреЗрдВ:



рдЕрдВрдЬреАрд░ред 4. рдХреНрд╡рд╛рд░реНрдХрд╕ рджреЗрд╡ рдХрд╛ рдкреГрд╖реНрда рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред

рдЗрд╕ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП WebServlet рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрджрд░реНрдн рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ:

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

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ 0.0.0.0 : 8080 / HelloWorld рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦрддреЗ рд╣реИрдВ:



рдЕрдВрдЬреАрд░ред 5: рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреНрд╡рд╛рд░реНрдХрд╕ рджреЗрд╡ рдкреЗрдЬред

рдЦреИрд░, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдФрд░ рдЕрдм рд╣рдо рдХреЛрдб рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ ./Mvnw рд╕рдВрдХрд▓рди рдХреНрд╡рд╛рд░реНрдХрд╕: рджреЗрд╡ рдХрдорд╛рдВрдб рдЕрднреА рднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЖрдЗрдП рдЕрдм рдХреЛрдб рдореЗрдВ рд╣реА - рддреБрдЪреНрдЫ - рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрд╡рд╛рд░реНрдХ рдХреИрд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ:

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 рдкреИрдХреЗрдЬ рдореЗрдВ рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред
рдЕрдм рдХреЛрдб рдХреЛ рдЬреИрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдо рдЙрд╕реЗ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреИрдХ рдХрд░рддреЗ рд╣реИрдВ:

$ ./mvnw clean package

рдпрд╣ рдХрдорд╛рдВрдб / рд▓рдХреНрд╖реНрдп рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджреЛ JAR рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рддрд╛ рд╣реИ: Helloworld-injar рдлрд╝рд╛рдЗрд▓, рдЬреЛ рдПрдХ рдорд╛рдирдХ рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдорд╛рд╡реЗрди рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдлрд╝рд╛рдЗрд▓ runner.jar рд╣реИ, рдЬреЛ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп JAR рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдПрдХ uber-jar рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдмрд╕ / рд▓рдХреНрд╖реНрдп / рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХреА рдЬрд╛рддреА рд╣реИрдВ (рдФрд░ JAR рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреИрдХ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ)ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ JAR рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝реЛрд▓реНрдбрд░ рдпрд╛ рдХрд┐рд╕реА рднрд┐рдиреНрди рд╣реЛрд╕реНрдЯ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ JAR рдлрд╝рд╛рдЗрд▓ рдФрд░ / lib рдлрд╝реЛрд▓реНрдбрд░ рджреЛрдиреЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ JAR рдкреИрдХреЗрдЬ рдореЗрдВ MANIFEST.MF рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрд▓рд╛рд╕-рдкрд╛рде рддрддреНрд╡ рдореЗрдВ JAR рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╕реВрдЪреА рд╣реИ lib рдлрд╝реЛрд▓реНрдбрд░ред
рдЙрдмреЗрд░-рдЬрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдмрд░-рдЬрд╛рд░ рдХреНрд░рд┐рдПрд╢рди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рджреЗрдЦреЗрдВ ред

рдПрдХ 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. рд╣рдо рдЪрд░рдг 2 рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ GRAALVM_HOME рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ:

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

рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдХреЛ рдПрдХ рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп - рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ рджреЗрдЦреЗрдВ ред

рд╣рдо рдПрдХ рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдореЗрдВ рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред
рд╣рдордиреЗ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдХреЛ рдПрдХ рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдкрдврд╝рд╛ - рдПрдХ рджреЗрд╢реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдореИрдиреБрдЕрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг : "рдЕрдм рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рдПрдВ рддрд╛рдХрд┐ рдЗрд╕рдХреЗ рд▓реЙрдиреНрдЪ рд╕рдордп рдФрд░ рдбрд┐рд╕реНрдХ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЬреЗрд╡реАрдПрдо рдорд╢реАрди (рдпрд╛ рдмрд▓реНрдХрд┐, рдЗрд╕рдХрд╛ рдЫреЛрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ) рдФрд░ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рд╢рд╛рдорд┐рд▓ рд╣реИред тАЭ

рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдорд╛рд╡реЗрди рдореВрд▓ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

$ ./mvnw package -Pnative

рд╣рдорд╛рд░реА рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдПрдХ рдорд┐рдирдЯ рдФрд░ 10 рд╕реЗрдХрдВрдб рд▓рдЧреЗ, рдФрд░ рдЕрдВрддрд┐рдо рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдлрд╝рд╛рдЗрд▓ - рд░рдирд░ f / рд▓рдХреНрд╖реНрдп рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИред

рд╣рдо рдореВрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ 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 рдЦреЛрд▓реЗрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдЙрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬрд╛рд░реА рд░рд╣рддреА рд╣реИ!

рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд╡рд╛рд░реНрдХрд╕ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЖрдзреБрдирд┐рдХ рдмрдирд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ (рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде) рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдЕрдЧрд▓реЗ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░, рдЖрд╡реЗрджрди рдЖрдзреБрдирд┐рдХреАрдХрд░рдг рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдХреА рдЦрдкрдд рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ред

All Articles