如何在 Quarkus 框架中使用 Native Image Kit
BellSoft 發(fā)布了Liberica Native Image Kit (NIK) 的新版本, 22.0.0.2,在本文中,我們聊一下如何將Native Image Kit與 Quarkus 框架一起使用。
Liberica NIK 基于開源項目 GraalVM(社區(qū)版),兼容多種平臺,包括基于輕量級 musl 的 Alpine Linux。Liberica NIK 本質上是將基于 JVM 的應用程序轉換為本機可執(zhí)行文件(AOT 編譯)的實用程序。
Liberica NIK 22.0.0.2 最新版本包括多項增強功能:
- 在 Liberica NIK for macOS 中添加了對 OpenJFX 的支持(已經(jīng)支持 Windows 和 Linux)
- Native image默認包含在所有 NIK 風格中。安裝不再需要運行 GU。
為什么要使用原生圖像?
Native image技術優(yōu)化了資源消耗,最大限度地減少了靜態(tài)占用空間,并提供幾乎實時的啟動。Liberica NIK 旨在支持大量平臺和編程語言,因此該套件支持多種語言程序。使用 Liberica NIK 可以降低成本并加速部署。
如何在 Quarkus 框架中使用 Liberica NIK?
Quarkus 是云原生的開源技術堆棧。雖然傳統(tǒng)的 Java 堆棧是為單體應用程序而設計的,但 Quarkus 是一個新的浪潮框架,旨在減少云和容器主導行業(yè)中的大內(nèi)存需求。它是一個 Kubernetes 原生 Java 框架,專為原生鏡像量身定制,非常適合在云中部署和無服務器開發(fā)。Quarkus 支持 Jakarta EE/MicroProfile 實施的幾種流行標準。
通過將 Liberica NIK 與 Quarkus 框架一起使用,可以進一步提高其效率。
構建一個原生鏡像
因此,讓我們以 Hello World 應用程序為例,使用 Quarkus 和 Liberica NIK 構建本機映像。首先,您需要準備工具和軟件。
設置一個 C 編譯器工具鏈。在 Linux 上,GCC 以及 glibc 和 zlib 頭文件是必需的。
# dnf (rpm-based)
sudo dnf install gcc glibc-devel zlib-devel libstdc++-static
# Debian-based distributions:
sudo apt install build-essential libz-dev zlib1g-dev
在 Windows 上,安裝Visual Studio 2017 Visual C++ Build Tools。
在 MacOS 的情況下,依賴項由 XCode 提供:xcode-select --install.
為了演示如何將 Liberica NIK 集成到 Quarkus 中,我們將使用最基本的 Quarkus “Hello World”應用程序。繼續(xù)按照官方文檔創(chuàng)建一個簡單的 Quarkus 應用程序。
現(xiàn)在您已經(jīng)準備好 Hello World 應用程序,讓我們配置 Native Image Kit。
首先下載適合版本的Liberica NIK(該軟件包已包含 Liberica VM 和本機映像工具)。下載完成后,通過在命令行中驗證校驗和來檢查文件(校驗和應與下載頁面上鏈接旁邊的校驗和匹配)。
配置構建環(huán)境。對于 Linux 和 macOS,如果您有 TGZ/ZIP 存檔,將JAVA_HOME環(huán)境變量設置為 NIK 安裝目錄:
<profiles>
<profile>
<id>native</id>
<properties>
<quarkus.package.type>native</quarkus.package.type>
</properties>
</profile>
</profiles>
如果使用包(deb、pkg/dmg)進行安裝,macOS 的安裝路徑是常規(guī)路徑。
在 Windows 上,通過控制面板來設置環(huán)境變量。
注意,從 21.3.1 開始的所有 Liberica NIK 版本都默認包含原生鏡像,允許您跳過 gu install 步驟。我們不在這里描述這個步驟。
如果您按照說明構建了 Quarkus 應用程序,您將在 pom.xml 找到以下配置文件:
<profiles>
<profile>
<id>native</id>
<properties>
<quarkus.package.type>native</quarkus.package.type>
</properties>
</profile>
</profiles>
應用程序的本機可執(zhí)行文件將包含應用程序代碼、必要的庫、Java API 以及虛擬機的特殊簡化版本。要創(chuàng)建它,請運行以下命令:
JAVA_HOME=$HOME/Development/bellsoft-liberica-vm-openjdk11-22.0.0.2./mvnw
package -Pnative
注意,打包本機執(zhí)行文件可能需要一些時間(通常幾分鐘),請耐心等待。JAVA_HOME如果您按照步驟 1 中的說明導出命令,也不需要在每個命令前面加上設置。
生成的可執(zhí)行文件作為
target/getting-started-1.0.0-SNAPSHOT-runner.
為確保一切正常運行,啟動應用程序。
如果您完成了這個簡短的練習,您將能夠使用最新的 Liberica Native Image Kit 22.0.0.2 達到令人難以置信的應用程序啟動時間(僅 0.013 秒)。使用此實用程序享受您的開發(fā)體驗!