如何在Quarkus 框架中使用 Native Image
BellSoft 发布了Liberica Native Image Kit (NIK) 的新版本, 22.0.0.2,在本文中,我们聊一下如何将Native Image Kit与 Quarkus 框架一起使用。
Liberica NIK 基于开源项目 GraalVM(社区版),兼容多种平台,包括基于轻量级 musl 的 Alpine Linux。Liberica NIK 本质上是将基于 JVM 的应用程序转换为本机可执行文件(AOT 编译)的实用程序。
Liberica NIK 22.0.0.2 最新版本包括多项增强功能:
- 在 Liberica NIK for macOS 中添加了对 OpenJFX 的支持(已经支持 Windows 和 Linux)
- Native image默认包含在所有 NIK 风格中。安装不再需要运行 GU。
为什么要使用原生图像?
Native image技术优化了资源消耗,最大限度地减少了静态占用空间,并提供几乎实时的启动。Liberica NIK 旨在支持大量平台和编程语言,因此该套件支持多种语言程序。使用 Liberica NIK 可以降低成本并加速部署。
如何在 Quarkus 框架中使用 Liberica NIK?
Quarkus 是云原生的开源技术堆栈。虽然传统的 Java 堆栈是为单体应用程序而设计的,但 Quarkus 是一个新的浪潮框架,旨在减少云和容器主导行业中的大内存需求。它是一个 Kubernetes 原生 Java 框架,专为原生镜像量身定制,非常适合在云中部署和无服务器开发。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”应用程序。继续按照官方文档创建一个简单的 Quarkus 应用程序。
现在您已经准备好 Hello World 应用程序,让我们配置 Native Image Kit。
首先下载适合版本的Liberica NIK(该软件包已包含 Liberica VM 和本机映像工具)。下载完成后,通过在命令行中验证校验和来检查文件(校验和应与下载页面上链接旁边的校验和匹配)。
配置构建环境。对于 Linux 和 macOS,如果您有 TGZ/ZIP 存档,将JAVA_HOME环境变量设置为 NIK 安装目录:
export JAVA_HOME=$HOME/Development/bellsoft-liberica-vm-openjdk11-22.0.0.2
如果使用包(deb、pkg/dmg)进行安装,macOS 的安装路径是常规路径。
在 Windows 上,通过控制面板来设置环境变量。
注意,从 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>
应用程序的本机可执行文件将包含应用程序代码、必要的库、Java API 以及虚拟机的特殊简化版本。要创建它,请运行以下命令:
JAVA_HOME=$HOME/Development/bellsoft-liberica-vm-openjdk11-22.0.0.2./mvnw package -Pnative
注意,打包本机执行文件可能需要一些时间(通常几分钟),请耐心等待。JAVA_HOME如果您按照步骤 1 中的说明导出命令,也不需要在每个命令前面加上设置。
生成的可执行文件作为
target/getting-started-1.0.0-SNAPSHOT-runner.
为确保一切正常运行,启动应用程序。
如果您完成了这个简短的练习,您将能够使用最新的 Liberica Native Image Kit 22.0.0.2 达到令人难以置信的应用程序启动时间(仅 0.013 秒)。使用此实用程序享受您的开发体验!