1. 程式人生 > 實用技巧 >雲原生時代高效能Java框架—Quarkus(二)

雲原生時代高效能Java框架—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

生成本地可執行檔案

生成本地可執行檔案的步驟如下圖:

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

成功啟動應用程式,並且啟動速度非常快