|如何在Quarkus 框架中使用 Native Image

|如何在Quarkus 框架中使用 Native Image

文章图片

|如何在Quarkus 框架中使用 Native Image

BellSoft 发布了Liberica Native Image Kit (NIK) 的新版本 ,22.0.0.2 , 在本文中 , 我们聊一下如何将Native Image Kit与 Quarkus 框架一起使用 。

【|如何在Quarkus 框架中使用 Native Image】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>