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

雲原生時代高效能Java框架—Quarkus(二)

*[**——— \*構建Quarkus本地映象、容器化部署Quarkus專案\***](http://blog.dongxishaonian.tech/?p=898)* ------ ***Quarkus系列博文*** - *[Quarkus&GraalVM介紹、建立並啟動第一個專案](http://blog.dongxishaonian.tech/?p=824)* - *[構建Quarkus本地映象、容器化部署Quarkus專案](http://blog.dongxishaonian.tech/?p=898)* - *...* ------ ## 概覽 [上一篇文章](http://blog.dongxishaonian.tech/?p=824)主要介紹了Quarkus以及給Quarkus提供“神力”的Java虛擬機器GraalVM,並演示瞭如何安裝GraalVM以及Quarkus的初步用法。本文將主要指向Quarkus的“亮點”——本地化應用程式。 **以下是本文的兩個目標:** - 將Quarkus開發的Java應用程式編譯成本地可執行檔案。 - 將本地可執行檔案打包到容器中。 **注:在本文中本地可執行檔案又稱本地映象,二者意思相同。** ## 環境準備 以下為本文所演示時的環境配置 - Intellij IDEA - Maven - GraalVM 20.1.0 - Docker 接下來需要安裝GraalVM的一個擴充套件——“native-image“,此擴充套件用於將Java程式編譯成本地可執行檔案,我們執行以下命令: ```bash gu install native-image ``` 執行以下命令,檢視擴充套件是否已安裝: ```bash $ native-image --version ``` ![img](https://tva1.sinaimg.cn/large/007S8ZIlgy1ggwmx5le4fj30iw010dfr.jpg) ## 生成本地可執行檔案 生成本地可執行檔案的步驟如下圖: ![img](https://tva1.sinaimg.cn/large/007S8ZIlgy1ggwn0xie6tj30i909t0tf.jpg) IDEA開啟[上一篇文章](http://blog.dongxishaonian.tech/?p=824)建立的專案,並開啟控制檯,執行maven命令: ```bash ./mvnw package -Pnative ``` 控制檯輸出以下內容: ```bash [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](https://tva1.sinaimg.cn/large/007S8ZIlgy1ggwnnodweyj30l40eg0ub.jpg) 可以看到其中有個重要的檔案:XXX-runner,**它是一個對JVM不依賴的本地可執行檔案**,我們可以執行他來啟動應用程式。 ```bash $ ./target/untitled-1.0-SNAPSHOT-runner ``` ![img](https://tva1.sinaimg.cn/large/007S8ZIlgy1ggwnqr5rvej31ta096mzn.jpg) 成功啟動應用程式,並且啟動速度非常快