[上一篇文章](http://blog.dongxishaonian.tech/?p=824)主要介绍了Quarkus以及给Quarkus提供“神力”的Java虚拟机GraalVM,并演示了如何安装GraalVM以及Quarkus的初步用法。本文将主要指向Quarkus的“亮点”——本地化应用程序。

——— *构建Quarkus本地镜像、容器化部署Quarkus项目*


Quarkus系列博文


概览

上一篇文章主要介绍了Quarkus以及给Quarkus提供“神力”的Java虚拟机GraalVM,并演示了如何安装GraalVM以及Quarkus的初步用法。本文将主要指向Quarkus的“亮点”——本地化应用程序。

以下是本文的两个目标:

  • 将Quarkus开发的Java应用程序编译成本地可执行文件。
  • 将本地可执行文件打包到容器中。

注:在本文中本地可执行文件又称本地镜像,二者意思相同。

环境准备

以下为本文所演示时的环境配置

  • Intellij IDEA
  • Maven
  • GraalVM 20.1.0
  • Docker

接下来需要安装GraalVM的一个扩展——“native-image“,此扩展用于将Java程序编译成本地可执行文件,我们执行以下命令:

gu install native-image

运行以下命令,查看扩展是否已安装:

$ native-image --version

img

生成本地可执行文件

生成本地可执行文件的步骤如下图:

img

IDEA打开上一篇文章创建的项目,并打开控制台,执行maven命令:

./mvnw package -Pnative

控制台输出以下内容:

[INFO] Scanning for projects...
...
[INFO] Building untitled 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
... 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.example.ExampleResourceTest
2020-07-19 22:24:08,962 INFO  [io.quarkus] (main) Quarkus 1.6.0.Final on JVM started in 1.085s. Listening on: http://0.0.0.0:8081
...
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
...
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] Running Quarkus native-image plugin on GraalVM Version 20.1.0 (Java Version 11.0.7)
...
[INFO] [io.quarkus.deployment.QuarkusAugmentor] Quarkus augmentation completed in 93802ms
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:45 min
[INFO] Finished at: 2020-07-19T22:25:44+08:00
[INFO] ------------------------------------------------------------------------

打开项目中的target文件夹

img

可以看到其中有个重要的文件:XXX-runner,它是一个对JVM不依赖的本地可执行文件,我们可以运行他来启动应用程序。

$ ./target/untitled-1.0-SNAPSHOT-runner

img

成功启动应用程序,并且启动速度非常快

版权声明:本文为dongxishaonian原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/dongxishaonian/p/13370901.html