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