ααααΆααα½αα’αααααΆααα’ααααααΆαα ααΎαααααααα αααααΆαααααΆαααΈαα½ααα αααα»ααααααΈ Quarkus!

ααΊα’αααΈααααααα Quarkus αα½ααααα
αΌαααααΆααΌα MicroProfile αα·α Spring α α
αΌαααΎαααααΉαααΏααααα ααααΌαααΆαααΆααααΆ "sutra-fast-fast subatomic Java" α α
ααΆααααΆ "ααα Java αααααααα·α Kubernetes αααααααΌαααΆααα
ααΆα‘αΎααααααΆαα GraalVM αα·α OpenJDK HotSpot α αΎααααααΌααααα»αααΈαααααΆααα αα·ααααααααΆαααα’αααα»αα" αααααααααΎαααΉααααα αΆαααΈααααααααΎααααΎααααααααααα·ααΈ Java αααααΆαααααΆαααααααααΎαααααααΆααααα Quarkus αααααααΎα§ααΆα ααα αααααααΎαα
αα
αααα·ααααΆ CDI αα·α Servlet 3 ααΆααααααα Quarkus α
ααΆααΆααΏαααααΆαααααα»αααΆαααααααααΆαααα
ααΈαααααΆααΆαα Quarkus αα·α JBoss EAP αααααααααααααΎααΆαααααΎααααΆααα§ααααααααααα’ααααΎαααααααΆαααΆααααα’αΆα
ααααΎαα
ααΆαα αα·αααΆααααααα·ααΈααααΎαααΆαααΎ 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/
ααΌαααΎαααΈααααααααααααα·ααΈ helloworld ααΎαααααΎαααΆα
ααΆααα·ααα ααααΉαααΆααααααααα·ααΈαααααΊα αααΆααααΆααααΈααααα ααα»ααααααΎαααΉαααααΎααααΎαααααααΌαααααααΆαααΆαααΉααααΉαααΆαααααα·ααααΆααΆαααααα ααΌα αααα ααΆααααΌα ααΌααααα‘ααααΎααααααα·ααΈααααααα»αααααααααΎαααααααΆα
ααΆαααΆαααααααΆα helloworld
1. ααΎα terminal α αΎαα αΌααα ααΆαα root αα JBoss EAP folder (α’αααα’αΆα ααΆαααααΆααΆα ) αααααΊαα ααΆαααα EAP_HOME α
2. ααΎαααααΎαααΆααααΆαααΈααα JBoss EAP ααΆαα½αααΉαααααααααααΆαααΎαα
$ EAP_HOME/bin/standalone.sh
α αααΆα: αα ααΎ Windows ααααααΈα EAP_HOMEbinstandalone.bat ααααΌαααΆαααααΎαααααΆααααΎαααααΎαααΆαα
αααααΆααααΈααΈαααΈαα·ααΆααΈ α’αααΈαα½αααΌα ααααα½αααααα α‘αΎααααα»ααααααα ααα»α
[org.jboss.as] (Controller Boot Thread) WFLYSRV0025: JBoss EAP 7.2.0.GA (WildFly Core 6.0.11.Final-redhat-00001) started in 3315ms - Started 306 of 527 services (321 services are lazy, passive or on-demand)
3. ααΎααα αααα»ααααααα·ααΈαα»ααα :8080 α αΎαααΎαααΎαααΆα

α’ααααα 1. αααααααΎα JBoss EAP α
4. α’αα»ααααααΆαααΆαααααΆααα αααα»αααααα ααααΆα α αααααΈα helloworld α αΎαααααΎαααΆα (ααΈααα―αααΆαααΎααααααα) ααΆααααααααΆααΆααααααα
$ mvn clean install wildfly:deploy
αααααΆααβααΈβααααα·ααααα·βααΆαααβαααααΆβαααβαααβαααααα ααΎαβααΉαβααΎαβα’αααΈβαα½αβααΌα βααΆαβαααααβαααα»αβαααααβα ααα»α
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.224 s
ααΌα αααα ααΆαααΆααα±ααααααΎααααΆααααααΌααααααααα·ααΈ helloworld αα ααΎ JBoss EAP α αααΆααααααααΉαααααΆα 8 αα·ααΆααΈααα»αααααα
ααΆααααα helloworld
α’αα»αααααααΆαααΉααααΉαααΆαααΆαααααΆα ααΎααα αααα»ααααααα·ααΈαα»ααα :8080/helloworld α αΎαααΎαααΎααααα

α’ααααα 2. Original Hello World ααΈ JBoss EAP α
ααααΎααΆαααααΆααααααΌα
ααααΆααααααΌααααΆαααΆαααααααααα αΌα createHelloMessage(αααααααααα’αααα) ααΈαα·ααααααα ααΆ Marcoα
writer.println("<h1>" + helloService.createHelloMessage("Marco") + "</h1>");
ααααΎαααΆαααΆααααααααΆααΆαααααααααααααα
$ mvn clean install wildfly:deploy
αααααΆαααα ααΎαααααΎα±αααααααα‘αΎααα·ααα αααα»ααααααα·ααΈαα»ααα α αΎαααΎαααΆα’αααααααΆαααααΆααααααΌαα

α’ααααα 3. ααααΆααα½α Marco αα αααα»α JBoss EAP α
αααααααααα·αααΌαααΆαααΆαααααααΆα helloworld α αΎααα·α JBoss EAP
αααααΊααααα α α·ααα ααα»ααααααααα·αααΎα’αααα αααα»αα ααααΆαααΆαααααααΆα α’αααα’αΆα ααααΎααΌα ααααααΆααααααααΎααΆααααααααΆααΆααααααα
$ mvn clean install wildfly:undeploy
ααΎααααΈαα·αα§ααΆα ααα JBoss EAP ααααα’ααα ααααΆααααα α»α Ctrl+C αα αααα»ααααα’α½α ααααΆααΈαα
ααααΎα±αααααααΎαα‘αΎα helloworld
α₯α‘αΌαααα ααΌαααααΎααααΎααααααααααα·ααΈ helloworld ααΎαα
αααααΎαααΆααΆααααΈα
ααΎααααααΎαααΆααΆααααΈαααααΆααααΈααααααααΆαα αΆααααααΎααα ααααααΌαααΆααααα ααα
$ git checkout -b quarkus 7.2.0.GA
ααΆαααααΆααααααΌαα―αααΆα pom.xml
ααΎαααΉαα αΆααααααΎαααααΆααααααΌααααααα·ααΈααΈα―αααΆα pom.xml α ααΎααααΈα’αα»ααααΆαα±αα Quarkus αααα αΌααααα»α XML αα αααα»αααΆ ααΌαααααΎαααΆαααΆααααααααΆααΆαααααααα αααα»ααα helloworldα
$ mvn io.quarkus:quarkus-maven-plugin:0.23.2:create
αα ααααααααα’αααααααα αααα 0.23.2 ααααΌαααΆαααααΎααααΆααα ααΆααΏαα Quarkus α ααααααααααΈ α’αααα’αΆα ααααααααααΆααΎαααααα½αααΆααΆααααα α»αααααααααα»ααα ααΎααα ααααα .
ααΆααααααααΆααΆαααΎααΉααααα αΌαααΆαα»ααΆαααααααα αααα»α pom.xmlα
- αααααααααααααα· ααααααααΆαααααααααα Quarkus αααααααΌαααααΎα
- αααα»ααααααΆααααΆαααΆαα αΌα Quarkus BOM (αα·αααααααααααααΆαα) ααΎααααΈαα»αα±αααααααααααααααααΆααααΆαααΉαααα’αα Quarkus ααΈαα½ααα
- quarkus-maven-plugin ααα½ααα»αααααΌαα ααααααΆαααα ααα αααααααα·ααΈ αα·ααααααααΌαααααα’αα·ααααααα
- ααααααααΎααααααΆαααααααΎααααααα·ααΈαααα’αΆα ααααα·ααααα·ααΆαα
ααΎαααΈααα ααΎαααααΎααΆαααααΆααααααΌαααΆααααααααααααα pom.xmlα
- ααΎαααααααΆα α ααααΈαααα»α α αΎαααΆααααΆαα ααΆαααΎααααΆα α αααααΆααα ααα αΆααααααΆαα ααΎαααΉααα»ααααα»α ααΎαααααΌααααααΆαα»α α
- ααΎααααααα»α α αα ααΈααααααα αααααααΎααΆαααΆαα½α Quarkus αααααα·ααΈαααααΉααααααααΌαααΆα parent pom ααΈ JBoss αααα αΎαα
- ααααααααααΆα α αΎαααΆααααΆαα αααααααααΆα α α’αααα’αΆα αααααΆααααααααααααα’αααα ααααΆαα
- ααΎαααααααΆα α αα ααααααααααα·ααΈααααααααΆ WAR αααα αΎα ααα»ααααααΆ JAR ααααααΆα
- ααΎαααααααααΆαα’αΆαααααααΌα
ααΆααααααα
- ααΎαααααΆααααααΌα javax.enterprise:cdi-api dependency αα io.quarkus:quarkus-arc αααααα αα provided α αΆααααΆααααΈ (ααααα ααΆαα―αααΆα) ααααααααααα Quarkus ααααααααααΌαααΆαα αΆαααα ααΎ CDI dependenciesα
- ααΎαααααΆααααααΌαααΆαα’αΆααααα org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec αα ααΆ io.quarkus:quarkus-undertow αααααα αα ααααα α αΆααααΆααααΈ (αααααΆαα―αααΆα) ααααααααααα Quarkus ααα αααααααΆαααΆαααα servlet 'ov.
- ααΎααα org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec dependency α αα αααααΆαααΆααααΆααααααΆαα½αααΆαα’αΆααααααααααΎαααΎαααααΆαααααΆααααααΌαα
ααααααα―αααΆα pom.xml ααΆαα½αααΉαααΆαααααΆααααααΌαααΆααα’ααααΆαααΈααΆαααα .
ααΌαα αααΆαααΆ mvn io.quarkus:quarkus-maven-plugin:0.23.2:create command ααΆαααΎαα·αααααΉαααααααΆααααααΌαα―αααΆα pom.xml ααα»ααααααα ααα»αααααααααΆαααααααααααΆαααΆαα»αα½αα ααα½ααα αααα»ααααααα αααααΊα―αααΆα αα·αααααΆααααααα
- α―αααΆα mvnw αα·α mvnw.cmd αα·ααα .mvnα Maven Wrapper α’αα»ααααΆαα±ααα’αααααααΎαααΆααααααα Maven αααααα Maven αααααΆααααααα±ααααααα·αα αΆαααΆα αααα‘αΎααααααααα
- ααα―αααΆα Docker (αααα»α src/main/ directory): ααΆααΆαα§ααΆα ααα Dockerfiles αααααΆααααααααΎα αα·α jvm (αα½αααΆαα½αα―αααΆα .dockerignore)α
- ααα―αααΆα (αααα»α src/main/ directory)α ααΆααΆαα―αααΆα application.properties ααα αα·ααααααα αΆααααααΎα Quarkus index.html ααααΌ (ααΌαααΎα Run the modern helloworld αααααΆααααααααΆααααα’α·ααααααα)α
ααΎαααααΎαααΆα helloworld
ααΎααααΈααΆααααααααααα·ααΈ ααΎαααααΎ quarkus:dev αααααΎαααααΎαααΆα Quarkus αα
αααα»αααααα’αα·αααααα (αααααΆααααααααΆααααα’α·α ααΌαααΎααααααααααα
αααα»αααααα
αα ).
α αααΆα: ααα αΆααααααααΉαααΆααΉαααΆαααα α»α αααααΆαααΎααα·αααΆααααΆαααααΎααΆαααααΆααααααΌαα αΆαααΆα αααΆααα’ααα
α₯α‘αΌαβααΎαβαααβααΆαααβαααααΆβααΎααααΈβααΎαβααΈβααααβαααβααΆβααααΎαααΆαα
$ ./mvnw compile quarkus:dev
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------< org.jboss.eap.quickstarts:helloworld >----------------
[INFO] Building Quickstart: helloworld quarkus
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- quarkus-maven-plugin:0.23.2:dev (default-cli) @ helloworld ---
Listening for transport dt_socket at address: 5005
INFO [io.qua.dep.QuarkusAugmentor] Beginning quarkus augmentation
INFO [org.jbo.threads] JBoss Threads version 3.0.0.Final
ERROR [io.qua.dev.DevModeMain] Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.jboss.as.quickstarts.helloworld.HelloService and qualifiers [@Default]
- java member: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService
- declared on CLASS bean [types=[javax.servlet.ServletConfig, java.io.Serializable, org.jboss.as.quickstarts.helloworld.HelloWorldServlet, javax.servlet.GenericServlet, javax.servlet.Servlet, java.lang.Object, javax.servlet.http.HttpServlet], qualifiers=[@Default, @Any], target=org.jboss.as.quickstarts.helloworld.HelloWorldServlet]
at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:841)
at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:214)
at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:106)
at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:249)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at io.quarkus.deployment.ExtensionLoader$1.execute(ExtensionLoader.java:780)
at io.quarkus.builder.BuildContext.run(BuildContext.java:415)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426)
at java.lang.Thread.run(Thread.java:748)
at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.jboss.as.quickstarts.helloworld.HelloService and qualifiers [@Default]
- java member: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService
- declared on CLASS bean [types=[javax.servlet.ServletConfig, java.io.Serializable, org.jboss.as.quickstarts.helloworld.HelloWorldServlet, javax.servlet.GenericServlet, javax.servlet.Servlet, java.lang.Object, javax.servlet.http.HttpServlet], qualifiers=[@Default, @Any], target=org.jboss.as.quickstarts.helloworld.HelloWorldServlet]
at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:428)
at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:371)
at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:206)
... 14 more
ααΌα ααααααΆαα·αααααΎαααΆααα ... α ααα»α’αααΈ?
UnsatisfiedResolutionException α ααα’α»ααα ααααΆαα HelloService αααααΆαααΆαα·αααααααΆαα HelloWorldServlet (αααΆαα·α java: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService)α αααα αΆααΊααΆ HelloWorldServlet ααααΌαααΆα injected instance of HelloService α αΎαααΆαα·αα’αΆα ααααΌαααΆαααααΎα (αααααΈααΆααααΆααααΆααααΈαααααααα·ααα αααα»ααααα αααααα½αααααα)α
ααΆαααααααααααααΌααααααααα α αΎαα’αΆαααΈαααααααααΆααααΎαααΆααα αααα»α Quarkus , α αΎαβααΌα αααα (CDI) α ααΌα αααα ααΌαβααΎαβααΆαααααΆαβα’αααΈβααα·αα αα·αβααΆαβααΉαααα’αα αα·αβαααα»αβααααα ααΎαα’αΆαααΆ "ααααΆααααααααααααα·αααΆαα αααΆαααααααααααααααααααα·αααααΌαααΆααααααααααα"
ααΌααααα‘ααααΎαααααΆαα HelloService - ααΆαα·αααΆαα·αααΆαα αααΆαααααααααααααααα ααΌα ααααααΆααααΌαααααααααααΎααααΈα±αα Quarkus α’αΆα ααααααααα·ααααααααααααααα α αΎααααααΆααααααΆααααα»ααααΆααααα ααΎαα’αΆα ααααααα αααΆααααααα @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]
α₯α‘αΌααααα’αααΈαααααΎαααΆααααααααΆαααα α»αα
ααΎαααααΎαααΆα helloworld ααααΎα
ααΌα
αααααΆαααααααα
αααα»ααααααα ααα»ααΌαααΎαααΆαα
αααα»ααααααα·ααΈαα»ααα :8080 (αααααα
αΆααααααΎα Quarkus ααααΆαααΎα) α αΎαααΎαααΎαααΆα

α’ααααα 4. Quarkus dev αααααα αΆααααααΎαα
α αααΆααααααα WebServlet αααααΆαααααααα·ααΈαααααΆααα·αααααααα·ααααΆααααααα
@WebServlet("/HelloWorld")
public class HelloWorldServlet extends HttpServlet {
ααΌα ααααααΎαα αΌααα αααα»ααααααα·ααΈαα»ααα :8080/HelloWorld α αΎαααΎαααΎαααΌα ααΆααααααα

α’ααααα 5: ααααα Quarkus dev αααααΆαααααααα·ααΈ Hello World α
ααΆααΆααααααΎαααΆαα α’αααΈααααααααΆαααααΎαααΆαα
α₯α‘αΌαβααΎαβααααΎβααΆαβααααΆααβααααΌαβααΌαα α αααΆαααΆααΆααααααααΆ ./mvnw compile quarkus:dev αα ααααααΎαααΆα α αΎαααΎαααααΆαα ααααΆααααααααΆααα α₯α‘αΌααααααΌαααααΆααΆαα’αα»ααααααΌα ααααΆ - αα·αααΌαααααΆαα - ααααΆααααααΌαααΌαααααααα½αα―α α αΎαααΎαααΈααααααα Quarkus ααααΎα±ααααΈαα·αααΆααααααΆααααα½ααααααΆααα’αααα’αα·ααααααα
writer.println("<h1>" + helloService.createHelloMessage("Marco") + "</h1>");
αααααΆβαα»αβα―αααΆα α αΎαβαααααΆααβααβαααα»αβαααααβαααααΆαβα‘αΎαβαα·α ααΎααααΈβααΎα Hello Marco ααΌα βαααα αΆαβαααα»αβααΌαααβα’ααααααβααΆαβαααααα

α’ααααα 6. Hello Marco page in Quarkus dev.
α₯α‘αΌααααααΌααα·αα·αααααΎααααααααα αααα»αααααΆααΈαα
INFO [io.qua.dev] (vert.x-worker-thread-3) Changed source files detected, recompiling [/home/mrizzi/git/forked/jboss-eap-quickstarts/helloworld/src/main/java/org/jboss/as/quickstarts/helloworld/HelloWorldServlet.java]
INFO [io.quarkus] (vert.x-worker-thread-3) Quarkus stopped in 0.003s
INFO [io.qua.dep.QuarkusAugmentor] (vert.x-worker-thread-3) Beginning quarkus augmentation
INFO [io.qua.dep.QuarkusAugmentor] (vert.x-worker-thread-3) Quarkus augmentation completed in 232ms
INFO [io.quarkus] (vert.x-worker-thread-3) Quarkus 0.23.2 started in 0.257s. Listening on: http://0.0.0.0:8080
INFO [io.quarkus] (vert.x-worker-thread-3) Profile dev activated. Live Coding activated.
INFO [io.quarkus] (vert.x-worker-thread-3) Installed features: [cdi]
INFO [io.qua.dev] (vert.x-worker-thread-3) Hot replace total time: 0.371s
ααΆαααααΎα±αααααααα‘αΎααα·αααΆαααααΎα±ααααΆαααΆαααααΎαααΆαααααΆααααααΌααα αααα»αααΌαααααα α αΎα Quarkus α’αα»ααααααΈαα·αα·ααΈαααααααααααααααααααααα·α α αΎαα’αααΈαααΆααα’αααααααααΌαααΆααααα αααααα»αααααααααααΉααα 0.371 αα·ααΆααΈααα»ααααα (αααααΊααΆ "sutra-fast subatomic Java")α
ααΆααααΆα helloworld αα
αααα»ααααα
αα JAR
α₯α‘αΌαααα ααΌαααααΎαααΆαααΌα
αααααΆαα½α ααΎαααα
ααααΆααΆαα½αααΆααααααααΆααΆααααααα
$ ./mvnw clean package
ααΆααααααααΆααααααααΎαα―αααΆα JAR ααΈααα αααα»ααα /targetα α―αααΆα helloworld-.jar αααααΆααααα»αα»ααΆααααααααΆαααααααααΌααααα»αααααααα»α Maven αα½αααΆαα½αααΉαααααΆαα αα·αααααΆαααααααααααα αα·αα―αααΆα helloworld-runner.jar αααααΆ JAR αααα’αΆα ααααα·ααααα·ααΆαα
ααΌαα
αααΆαααΆααααα·ααααααΆ uber-jar αα αααααΆαααΆαα’αΆαααααααΆααα’ααααααΌαααΆαα
αααααααΆαααΆαααααα
αααα»ααα /target/lib (αα·αααααΌαααΆαααα
αααα
αααα»αα―αααΆα JAR)α ααΌα
αααα ααΎααααΈααααΎαααΆα JAR αααααΈαααααααααα α¬αα
ααΎαααΆαααΈααααααααα α’αααααααΌαα
ααααααΆααα―αααΆα JAR αααα½αααΆ αα·ααα /lib αα
ααΈααα ααααααααα±ααααΆααΆαα» Class-Path αα
αααα»αα―αααΆα MANIFEST.MF αα
αααα»ααααα
αα JAR ααΆα ααΆαααΆααααααΈα
αααΆααααΆαααα JARs ααΈαα lib
ααΎααααΈαααααΈαααααααααΎααααααα·ααΈ uber-jar ααΌαααΎαααΆααααααα .
ααΎαααααΎαααΆα helloworld ααα αααααα»α JAR
α₯α‘αΌααααααΎαα’αΆα ααααΎαααΆα JAR ααααααΎααααααααΎααΆααααααααΆ java αααααααΆαα
$ java -jar ./target/helloworld-<version>-runner.jar
INFO [io.quarkus] (main) Quarkus 0.23.2 started in 0.673s. Listening on: http://0.0.0.0:8080
INFO [io.quarkus] (main) Profile prod activated.
INFO [io.quarkus] (main) Installed features: [cdi]
αααααΆααααΈα’αααΈαααΆααα’ααααααα½α ααΆαα ααΌαα αΌααα ααΆαα browser ααααα’ααααα :8080 α αΎααα·αα·αααααΎαααΆα’αααΈαααααΎαααΆαααΌα αααααΆαα½αααα
ααΆαα ααααα helloworld αα ααΆα―αααΆααααα’αΆα ααααα·ααααα·ααΆαααΎα
ααΌα αααα helloworld ααααααΎαααααΎαααΆαααΆαααααα·ααΈ Java α―αααΆααααααααααΎ Quarkus dependencies α ααα»ααααβα’αααβα’αΆα βαα βααααααβααα α αΎαβααααααααΆαβααΆβαα βααΆβα―αααΆαβαααβα’αΆα βααααα·ααααα·βααΆαβααΎαα
ααΆαααα‘αΎα 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)
αααααΆααααααααΆααααααα αα·αααΆαααααΆαα’αααΈααΆαααα‘αΎααα ααΎ OS αααααααα ααΌαααΎαααααα ααααΆα .
ααΆααααΆα helloworld αα
ααΆα―αααΆααααα’αΆα
ααααα·ααααα·ααΆαααΎα
ααΆαα’αΆαααααα
ααααΆα : βα₯α‘αΌαααα ααΌααααααΎαα―αααΆααααα’αΆα
ααααα·ααααα·ααΆαααΎααααααΆαααααααα·ααΈααααααΎα ααΎααααΈααΆααααααααααααααΆααΎαααααΎαααΆα αα·αααα αααΆαααααααΆα α―αααΆααααα’αΆα
ααααα·ααααα·ααΆαααΉαααΆαα’αααΈααααααααΆααααα
αΆαααΆα
ααααααΆααααααΎαααΆααααααα·ααΈ αα½αααΆαα JVM (α¬ααΆααααααΆααααααααΆαααααΆαααα’αααΈαααα
αΆαααΆα
ααααααΆααααααΎαααΆααααααα·ααΈ) αα·ααααααα·ααΈααααααΎαααααΆααα
ααΎααααΈαααααΎαα―αααΆααααα’αΆα ααααα·ααααα·ααΆαααΎα α’αααααααΌαααΎαααααΎαααΆααααααα Maven ααΎαα
$ ./mvnw package -Pnative
ααΆααααααΎαααααααΎαα αααΆαααααα½αααΆααΈ αα·α 10 αα·ααΆααΈ α αΎαα α»αααααα helloworld-runner f file ααααΌαααΆααααααΎαα‘αΎααα αααα»ααα /target α
ααααΎαααΆα helloworld ααΎααααα’αΆα ααααα·ααααα·ααΆαα
αα ααα αΆααα»α ααΎαααΆαααα½αα―αααΆααααα’αΆα ααααα·ααααα·ααΆα /target/helloworldβrunnerα α₯α‘αΌααααααΌαααααΎαααΆαααΆα
$ ./target/helloworld-<version>-runner
INFO [io.quarkus] (main) Quarkus 0.23.2 started in 0.006s. Listening on: http://0.0.0.0:8080
INFO [io.quarkus] (main) Profile prod activated.
INFO [io.quarkus] (main) Installed features: [cdi]
ααΎαααΆαα αααα»ααααααα·ααΈαα»αααααααααα :8080 α αΎααα·αα·αααααΎαααΆα’αααΈαααααΎαααΆαααΌα αααααΆαα½αααα
αα βααΆαβααΆβααααβααα!
ααΎαααΏααΆαα·ααΈααΆαααααααααΆαααααΎααααΎααααααααααα·ααΈ Java αααααααΎαααααααΆα Quarkus αααααΆααα·ααΆααααΆαα
αααα»αααΆααααααΆαααα (αααααΈααΆααααΎα§ααΆα αααααααααΆααααα) αα½αααααααΌαααΆαααααΎααααΆαααααΆαααααααααα»αααΈαα·ααα·αα αααα»αααΆαααααΎααΌα
αααα α’αααααααααΆααΉααα½αααααααααα αΆαα½αα
ααα½α αααααΎαααΉααααααααΆααα½αααααααα
αααα»αααΆαααααΆααααααΆαα αααααΎαααΉααα·ααΆαα’αααΈααααααΆαααααααααΆαααααΎααααΆααα’αααα
αα
αΆα ααΎααααΈααΆααααααααΆααααααα’ααΆαα’αα»αααα αααααΆαααααααααΆααααααααΎαααΆαααααΎααααααααααα·ααΈααΆααααΌαα
ααααα: www.habr.com
