雲原生時代高效能Java框架—Quarkus(二)
阿新 • • 發佈:2020-07-24
——— *構建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
生成本地可執行檔案
生成本地可執行檔案的步驟如下圖:
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資料夾
可以看到其中有個重要的檔案:XXX-runner,它是一個對JVM不依賴的本地可執行檔案,我們可以執行他來啟動應用程式。
$ ./target/untitled-1.0-SNAPSHOT-runner
成功啟動應用程式,並且啟動速度非常快