Բարև ձեզ այս բլոգում, և հետ դուք չորրորդ գրառումն է Quarkus-ի մասին շարքի:

պատմում էր, թե ինչպես է Quarkus-ը միավորում MicroProfile և Spring-ը: Հիշեցնենք, որ այն ներկայացվում է որպես «արագ ենթաբարդ Java», ինչը նշանակում է «Kubernetes-երին միացված Java-Stacks, ով պատրաստված է GraalVM և OpenJDK HotSpot-ից և ստեղծված լավագույն գրադարաններից ու ստանդարտներից»։ Այսօր կցուցադրենք, թե ինչպես արդիականացնել արդեն առկա Java ծրագրերը, կիրառելով Quarkus-ի հնարավորությունները՝ հենվելով , որտեղ օգտագործվում են Quarkus-ի կողմից աջակցվող տեխնոլոգիաներ CDI և Servlet 3:
Այստեղ կարևոր է նշելը, որ Quarkus-ը և JBoss EAP-ն կենտրոնանում են այնպիսի գործիքներ օգտագործելու վրա, որոնք առավելագույնս հիմնված են ստանդարտների վրա: Ունեք JBoss EAP-ում աշխատող ծրագիր? Խնդիր չկա, այն հեշտությամբ կարելի է տեղափոխել ներկայիս ծրագրային սերվերից JBoss EAP, օգտագործելով -ի միջոցով: Դրանից հետո արդիականացված կոդի վերջնական և աշխատող տարբերակը հասանելի կլինի -ի մոդուլում: .
Այս գրառումը գրելիս օգտագործվել են , հիմնականում և Building a .
Արդյունք ստանալ
Նախ առաջինը ստեղծենք տեղական կլոն JBoss EAP quickstarts-ին: :
Նայենք, թե ինչպես է աշխատում օրիգինալ helloworld-ը:
Ինքը՝ այս ծրագրի էությունն ու շարժումը պարզ է անվանումից, սակայն մենք կարդիականացնենք դրա կոդը խստորեն գիտականորեն: Ուստի նախ նայենք այս ծրագրին սկզբնական իր վիճակում:
Արդիականացնենք 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) սկսվել է 3315ms ընթացքում - Սկսվել է 306-ի 527 ծառայությունների (321 ծառայություններն են ձգված, ծPasiv և պահանջագրված)
3. Բացեք բրաուզերում
:8080 և տեսեք այսը: Նկար. 1. JBoss EAP-ի գլխավոր էջը:

4. Հետևեք ուղեցույցում
Build and Deploy the Quickstart $ mvn clean install wildfly:deploy
Սա կատարելուց հետո կհայտնվի այսպիսի մոտավորապես հետևյալը:
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 8.224 s
Ամեն դեպքում, առաջին անգամ է, երբ ծրագիրն առաջին անգամ գործում է JBoss EAP-ում, մի քիչ ավելի քան 8 վայրկյան:
Թեստավորում helloworld-ը:
Ուսումնասիրելով ուղեցույցով
Access the Application :8080/helloworld և տեսեք հետևյալը: :8080/helloworld и видим вот что:

Պ Տվյալներ 2. JBoss EAP-ի սկզբնական Hello World:
Մուտք ենք գործում փոփոխություններ
Փոխում ենք մուտքային պարամետրը createHelloMessage(String name) World-ից Marco-ի:
writer.println("<h1>" + helloService.createHelloMessage("Marco") + "</h1>");
ՄAgain կատարում ենք հաջորդ հանձնարարականը:
Սա կատարելուց հետո կհայտնվի այսպիսի մոտավորապես հետևյալը:
Այնուհետև թարմացնում ենք էջը զննարկչում և տեսնում, որ տեքստը փոխված է:

Պ Տվյալներ 3. Hello Marco JBoss EAP-ում:
Պատասխանում ենք helloworld-ի իռելևիտը և ավարտում ենք JBoss EAP-ի աշխատանքը:
Սա պարտադիր չէ, բայց եթե ցանկանում եք չեղյալ հայտարարել լայնումը, ապա դա կարելի է անել հետևյալ հանձնարարականով:
$ mvn clean install wildfly:undeploy
Որպեսզի ավարտվի JBoss EAP-ի խնդիրն, պարզապես սեղմեք Ctrl+C տերմինալի պատուհանում:
Թարմացնում ենք helloworld-ը
Հիմա զբաղվում ենք helloworld նախնական հավելվածի թարմացմամբ:
Ստեղծում ենք նոր մասնաճյուղ
Ստեղծում ենք նոր աշխատանքային մասնաճյուղ այն բանից հետո, երբ վերջանանք quickstart նախագծի կատարումը:
$ git checkout -b quarkus 7.2.0.GA
Փոխում ենք pom.xml ֆայլը
Հավելվածը սկսելու ենք փոխելով pom.xml ֆայլը: Quarkus-ի XML բլոկներն ընդգրկելու համար կատարվում է հետևյալ հանձնարարականը helloworld թղթապանակում:
$ mvn io.quarkus:quarkus-maven-plugin:0.23.2:create
Այս հոդվածը գրում էինքում օգտագործվում էր 0.23.2 տարբերակը: Quarkus-ի փոփոխություններն հաճախ են տեղի ունենում, կա վերջին տեսակի մանրամասներին տեղեկանալու համար գնացեք կայք .
Վերը նշված հանձնարարականն insert pom.xml ֆայլում հետևյալ տարրերը:
- հատկությունը, որը նշում է օգտագործվող Quarkus-ի տարբերակը:
- բլոկը Quarkus BOM (bill of materials) ներմուծելու համար, որպեսզի Quarkus-ի յուրաքանչյուր կախվածության համար տարբերակ ավելացնելիս:
- quarkus-maven-plugin պլագինը, որը պատասխանատու է հավելվածի փաթեթավորման և զարգացած նորարարություն տրամադրելու համար:
- native պրոֆիլ, որը թույլ է տալիս ստեղծել հավելվածի կատարվող ֆայլեր:
Բացի այդ, pom.xml-ում ձեռքով ներդնում ենք հետևյալ փոփոխությունները:
- Վերահսկում ենք պիտակն բլոկից և տեղադրում այն պիտակից բարձր: Որպեսզի հաջորդ քայլում բլոկը ջնջենք, անհրաժեշտ է պահպանել :
- Ջնջում ենք բլոկը, քանի որ Quarkus-ի հետ աշխատելու ժամանակ այս հավելվածին այլևս JBoss-ի ծնող pom պետք չէ:
- Ավելացնում ենք պիտակն ու տեղադրում այն պիտակի տակ: Դուք կարող եք նշել ցանկացած տարբերակ:
- Ջնջում ենք պիտակը, քանի որ այս հավելվածը այլևս WAR չէ, այլ սովորական JAR:
- Փոփոխում ենք հետևյալ կախվածությունները:
- Փոխում ենք javax.enterprise:cdi-api կախվածությունը io.quarkus:quarkus-arc-ի, provided ջնջելով, քանի որ (փաստաթղթերում համաձայն) այս Quarkus ընդլայնումը ապահովում է CDI կախվածության ներարկումը:
- Փոխում ենք org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec կախվածություն io.quarkus:quarkus-undertow, provided ջնջելով, քանի որ (փաստաթղթերում համաձայն) այս Quarkus ընդլայնումը ապահովում է Servlet աջակցություն:
- Ջնջում ենք org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec կախվածությունը, քանի որ դրանք գալիս են այն կախվածություններից, որոնք刚刚修改ել ենք:
Պոմ.xml ֆայլի տարբերակը բոլոր փոփոխություններով գտնվում է հասցեում .
Հակառակ ուշադրության ուշադրություն հատկացրեք, որ վերևում ներկայացված mvn io.quarkus:quarkus-maven-plugin:0.23.2:create հրամանը ոչ միայն փոփոխում է pom.xml ֆայլը, այլ նաև project-ին ավելացնում մի շարք բաղադրիչներ, մասնավորապես, հետևյալ ֆայլերն ու թղթապանակները՝
- mvnw և mvnw.cmd ֆայլը և .mvn թղթապանակը: Maven Wrapper-ը թույլ է տալիս գործարկել Maven project-ներ որոշակի Maven տարբերակով առանց այդ տարբերակի տեղադրման:
- docker թղթապանակը (src/main/-ում): այստեղ գտնվում են native և jvm ռեժիմների Dockerfile ֆայլերի օրինակները (միասին .dockerignore ֆայլի հետ):
- resources թղթապանակը (src/main/-ում): այստեղ գտնվում է application.properties դատարկ ֆայլը և Quarkus-ի index.html стартային աշխատանքի էջի օրինակ (հավաստանման համար տեսեք Run the modernized helloworld):
Կհրավիրենք helloworld
Ընդեղքելու համար application-ը, օգտագործում ենք quarkus:dev հրամանը, որը запускает Quarkus-ը development mode ռեժիմով (միասին տեսեք այս բաժինը ցուցումների մեջ) ).
注释: այս քայլը ակնկալվում է, որ կհանգեցնի սխալի, քանի որ մենք դեռ չենք կատարել բոլոր անհրաժեշտ փոփոխությունները:
Հիմա запускаем команду, чтобы проверить, как это сработает:
$ ./mvnw compile quarkus:dev
[INFO] Projekte scanning...
[INFO]
[INFO] --------------------------------
[INFO] Quickstart-ის აშენება: helloworld quarkus
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---
[INFO] ფილტრირებული მონაცემების ასლი 'UTF-8' დაშიფრვით.
[INFO] 2 რესურსის ასლის გადმოცემა
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---
[INFO] კომპილაციისთვის არაფერი არაა - ყველა კლასები აპდატებულია
[INFO]
[INFO] --- quarkus-maven-plugin:0.23.2:dev (default-cli) @ helloworld ---
გაიგზავნება ტრანსპორტ dt_socket მისამართზე: 5005
INFO [io.qua.dep.QuarkusAugmentor] დაწყება quarkus-ის გაფართოება
INFO [org.jbo.threads] JBoss Threads ვერსია 3.0.0.Final
ERROR [io.qua.dev.DevModeMain] quarkus-ის დაწყება ვერ მოხერხდა: java.lang.RuntimeException: io.quarkus.builder.BuildException: აშენების შეცდომა: აშენება სრულყოფილად ვერ განხორციელდა შეცდომების გამო
[error]: აშენების ნაბიჯი io.quarkus.arc.deployment.ArcProcessor#validate მოიტანა გამონაკლისი: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: არასაკმარისი დამოკიდებულება org.jboss.as.quickstarts.helloworld.HelloService ტიპისთვის და შემოღებული [@Default]
- java წევრი: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService
- გაწვდილი CLASS bean [types=[javax.servlet.ServletConfig, java.io.Serializable, org.jboss.as.quickstarts.helloworld.HelloWorldServlet, javax.servlet.GenericServlet, javax.servlet.Servlet, java.lang.Object, javax.servlet.http.HttpServlet], qualifiers=[@Default, @Any], target=org.jboss.as.quickstarts.helloworld.HelloWorldServlet]
at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:841)
at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:214)
at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:106)
at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:249)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at io.quarkus.deployment.ExtensionLoader$1.execute(ExtensionLoader.java:780)
at io.quarkus.builder.BuildContext.run(BuildContext.java:415)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426)
at java.lang.Thread.run(Thread.java:748)
at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Причина: javax.enterprise.inject.UnsatisfiedResolutionException: არასაკმარისი დამოკიდებულება org.jboss.as.quickstarts.helloworld.HelloService ტიპისთვის და შემოღებული [@Default]
- java წევრი: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService
- გაწვდილი CLASS bean [types=[javax.servlet.ServletConfig, java.io.Serializable, org.jboss.as.quickstarts.helloworld.HelloWorldServlet, javax.servlet.GenericServlet, javax.servlet.Servlet, java.lang.Object, javax.servlet.http.HttpServlet], qualifiers=[@Default, @Any], target=org.jboss.as.quickstarts.helloworld.HelloWorldServlet]
at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:428)
at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:371)
at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:206)
... 14 more
აბა, რატომ არ მუშაობს?
UnsatisfiedResolutionException გამონაკლისი აღნიშნავს HelloService კლასზე, რომელიც HelloWorldServlet კლასის წევრია (java member: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService). პრობლემა ისაა, რომ HelloWorldServlet-ს ინექცირებული HelloService სჭირდება, მაგრამ მისი ნახვა ვერ მოხერხდება (თუმცა ეს ორი კლასი ერთ და იგივე პატერნშია).
ყველაზე სწორი დროა დაბრუნდეთ და წაიკითხოთ, როგორ მუშაობს Quarkus-ში , შესაბამისად არის (CDI). ამიტომ ვხსნით Contexts and Dependency Injection-ის სახელმძღვანელოს და მუხლში ვკითხულობთ: «Bean კლასი, რომელსაც არ აქვს განსაზღვრული bean ანოტაცია, არ საძიებლი».
Փորձարկում ենք HelloService դասը՝ առանց այդAnnotations: Դրան ընդառաջ, հարկավոր է ավելացնել, որպեսզի Quarkus-ը կարողանա որոնել և գտնել bean-ը: Քանի որ սա stateless օբյեկտ է, կարող ենք ավելացնել @ApplicationScoped annotation-ը հետևյալ կերպ:
@ApplicationScoped
public class HelloService {
注释: այստեղ մշակման միջավայր կարող է խնդրել ձեզ ավելացնել անհրաժեշտ փաթեթը (տես ստորև նշված տողի), և դա պետք է անեք ձեռքով, հետևյալ կերպ:
import javax.enterprise.context.ApplicationScoped;
Եթե չեք վստահում, թե որն է հարկավոր օգտագործել scope, երբ սկզբնական bean-ը այն ամբողջովին չկա, ուսումնասիրեք փաստաթղթաբանությունը: .
Այժմ կրկին փորձում ենք գործարկել ծրագիրը հրամանով .\mvnw compile quarkus:dev:
$ .\mvnw compile quarkus:dev
[INFO] Projects are being scanned...
[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.qua.quarkus] (main) Installed features: [cdi]
Այժմ ամեն ինչ անցնում է առանց սխալների:
Սկսում ենք արդիականացված helloworld-ը:
Ինչպես նշված է լոգում, բացում ենք տեսbrowser-ում: :8080 (Quarkus-ի իսկական էջը) և տեսնում ենք հետևյալ.

Պատ. 4. Quarkus dev-ի սկրին;
Այս ծրագրի WebServlet annotation-ում նշված է հետևյալ կոնտեքստի սահմանումը:
@WebServlet("/HelloWorld")
public class HelloWorldServlet extends HttpServlet {
Ուրեմն գնանք browser-ում՝ :8080/HelloWorld և տեսնում ենք հետևյալ:

Պատ. 5: Quarkus dev-ի էջը Hello World-ի համար:
Դե, ամեն ինչ աշխատում է:
Այժմ կատարում ենք փոփոխություններ կոդում: Գիտեք, որ հրամանի .\mvnw compile quarkus:dev-ն դեռևս աշխատում է, և մենք չենք պատրաստվում այն կանգնեցնել: Այժմ փորձելու ենք նույնպիսի պարզ փոփոխություններ կատարել կոդի վրա և տեսնենք, թե ինչպես Quarkus-ը օգնում է ծրագրավորողներին:
writer.println("<h1>" + helloService.createHelloMessage("Marco") + "</h1>");
Պահպանեք ֆայլը և ապա թարմացրեք վեբ էջը՝ տեսնելու համար Hello Marco գրառումը, ինչպես նշված է ներքևի սքանչարժան էջում:

Պատ. 6. Hello Marco էջը Quarkus dev-ում:
Այժմ ստուգենք ելքը տերմինալում:
INFO [io.qua.dev] (vert.x-worker-thread-3) Դիտարկվել են աղբյուրի ֆայլերի փոփոխություն, վերակազմված է [\/home\/mrizzi\/git\/forked\/jboss-eap-quickstarts\/helloworld\/src\/main\/java\/org\/jboss\/as\/quickstarts\/helloworld\/HelloWorldServlet.java]
INFO [io.quarkus] (vert.x-worker-thread-3) Quarkus-ը կանգնած է 0.003 сек.
INFO [io.qua.dep.QuarkusAugmentor] (vert.x-worker-thread-3) Հաջորդում Quarkus աճեցման գործընթացը
INFO [io.qua.dep.QuarkusAugmentor] (vert.x-worker-thread-3) Quarkus աճեցումը ավարտվել է 232մս
INFO [io.quarkus] (vert.x-worker-thread-3) Quarkus 0.23.2 սկսվեց 0.257 сек պասն։ Ակնկալվում է՝ http:\/\/0.0.0.0:8080
INFO [io.quarkus] (vert.x-worker-thread-3) dev պրոֆիլը միացված է։ Լիարժեք կոդային մշակումը միացված է։
INFO [io.quarkus] (vert.x-worker-thread-3) Տեղադրված ֆունկցիաներ: [cdi]
INFO [io.qua.dev] (vert.x-worker-thread-3) Տաք փոխարինման ընդհանուր ժամանակ: 0.371сек
Զուգահեռի էջը դիտարկել է փոփոխություններ աղբյուրի կոդում, և Quarkus-ը ավտոմատ կերպով անցել է «կանգնելու-սկսելու» ընթացակարգին։ Եվ այս ամենը կատարվել է միայն 0.371 վայրկյանում (այս է, այնպիսի «արտասովոր արագ սուբատոմային Java»-ն):
Մեծացնում ենք helloworld-ը JAR փաթեթի մեջ
Այժմ, երբ կոդն աշխատում է այնպես, ինչպես պետք է, մենք այն կփաթեթավորենք հետևյալ հրամանով:
$ .\/mvnw clean package
Այս հրամանով արկղում ստեղծվում է երկու JAR ֆայլեր՝ /target/ папке՝ helloworld-.jar файл, որը ներկայացնում է ստանդարտ արգենտ, որը ստեղծվել է Maven հրամանով, ինչպես նաև նախագծի դասերի և ռեսուրսների միասին։ Եվ helloworld—runner.jar ֆայլ, որը ներկայացնում է կիրառում JAR։
Նշենք, որ սա չի լինի uber-jar, քանի որ բոլոր կախվածությունները պարզապես պատճենվել են /target/lib папке (այսինքն՝ JAR ֆայլի մեջ չեն փաթեթավորված)։ Այնպես որ, որպեսզի կարողանաք այս JAR-ը գործարկել այլ папке կամ ուրիշ հոսում, անհրաժեշտ է պատճենել ինչպես JAR ֆայլը, այնպես էլ /lib папքը, հաշվի առնելով, որ MANIFEST.MF ֆայլի Class-Path բաղադրիչում միարձակ կա JAR-ի բացահայտ նկարագրություն lib папկում։
Ուսումնասիրեք, թե ինչպես ստեղծել uber-jar ծրագրեր, տարբերանշման համար .
Լավել փորձում ենք helloworld-ը, փաթեթավորված JAR-ում
Այժմ կարող ենք ջրել մեր JAR-ը ստանդարտ java հրամանով:
$ java -jar .\/target\/helloworld-<version>-runner.jar
INFO [io.quarkus] (main) Quarkus 0.23.2 սկսվեց 0.673 վայրկյանում։ Ակնկալվում է՝ http:\/\/0.0.0.0:8080
INFO [io.quarkus] (main) պրոֆիլն ակտիվացվեց:
INFO [io.quarkus] (main) Տեղադրված ֆունկցիաներ: [cdi]
Այս ամենը կատարելուց հետո, մուտք գործեք բրաուզերում՝ :8080 և ստուգեք, որ ամեն ինչ աշխատում է ինչպես հարկավոր։
Միասնորեն helloworld-ը բնիկ գործարկման ֆայլի վերածելու գործընթացը
Այժմ մեր helloworld-ը աշխատում է որպես անկախ Java ծրագիր, օգտագործելով Quarkus-ի կախվածություններ։ Բայց կարելի է գնալ ավելի հեռու և վերածել այն բնիկ գործարկման ֆայլի։
Հիմնավոր GraalVM համակարգը հաստատ չեն
Առաջինը, այս մասին պետք է հաստատել անհրաժեշտ գործիքները:
1. Դնում ենք GraalVM 19.2.0.1-ը ակտիվացնում .
2. Տեղադրեք ներբեռնված արխիվը:
$ tar xvzf graalvm-ce-linux-amd64-19.2.0.1.tar.gz
3. Գնացինք untar папке:
4. Գործարկենք հետևյալ հրամանով, որպեսզի ներբեռնեք և ավելացնենք բնիկ պատկեր:
$ .\/bin\/gu install native-image
5. Ազատ տեղադրեք քայլի 2 կատարած папքը GRAALVM_HOME միջավայրի փոփոխականը:
$ export GRAALVM_HOME={untar-folder}\/graalvm-ce-19.2.0.1)
Լրացուցիչ տեղեկություններ և հրահանգներ այլ ОСներ ստանալը կարելի է գտնել ձեռնարկում: .
Միասնորեն helloworld-ը բնիկ գործարկման ֆայլի վերածել
Ուսումնասիրեք ձեռնարկ : «Այդպես, ստեղծենք մեր application's համար տեղական կատարման ֆայլ, որպեսզի կրճատենք դրա բեռնման ժամանակն ու տեղը սկավառակում: Կատարման ֆայլը կունենա ամեն անհրաժեշտ բան application's աշխատելու համար, ներառյալ JVM մեքենան (точнее, դրա կրճատված տարբերակը, որը պարունակում է միայն այն, ինչ անհրաժեշտ է application's իրականացնելու համար) և մեր application»-ը։
Մանրակրկիտ կատարման ֆայլ ստեղծելու համար պետք է ընդգրկել native պրոֆիլ Maven-ում.
$ ./mvnw package -Pnative
Մեր հավաքումը տևեց մեկ րոպե և 10 վայրկյան, իսկ վերջնական ֆայլ helloworld—runner ստեղծվել է `/target` ֆոլդերում.
Հասարակուծս տեղական կատարման ֆայլ helloworld-ը։
Առաջին քայլում ստացել ենք կատարման ֆայլ `/target/helloworld—runner`. Այժմ թողնենք այն սկսել.
$ ./target/helloworld-<version>-runner
INFO [io.quarkus] (main) Quarkus 0.23.2 սկսվեց 0.006 վրկ-ում: Ակնհայտ: http://0.0.0.0:8080
INFO [io.quarkus] (main) Պրոֆիլ prod ակտիվացված.
INFO [io.quarkus] (main) Տեղադրված առանձնահատկություններ: [cdi]
Իրականում բացում ենք բրաուզերում :8080 և ստուգում ենք, որ ամեն ինչ աշխատում է ինչպես հարկն է.
Շարունակությունը գալիս է!
Մենք կարծում ենք, որ այս հոդվածում քննարկված (հաշված պարզ օրինակ) Java հավելվածների արդիականացման մեթոդը, օգտագործելով Quarkus-ի հնարավորությունները, պետք է ակտիվորեն կիրառվի իրական կյանքում: Այս գործընթացում, դուք հավանաբար, հանդիպելու եք մի շարք խնդիրների, որոնց լուծումը մասնակիորեն քննարկելու ենք հաջորդ հոդվածում, որտեղ խոսելու ենք, թե ինչպես չափել հիշողության օգտագործումը `կատարողականության բարելավումը գնահատելու համար`, ամբողջական առաջադիմության կարևոր մասը:
Ընտանիք: habr.com
