1. 什么是 JLink?
JLink 是 JDK 自带的一个工具,用于创建和操纵自包含的运行时镜像。这意味着你可以将你的 Java 应用程序、依赖项和 JRE 打包成一个独立的可执行文件夹,里面自带java所需的东西,而无需依赖外部的 JRE。
2. 入门篇
2.1 安装 JDK
首先,确保你的系统上已经安装了 JDK。你可以从 Oracle 或 OpenJDK 下载并安装最新的 JDK 版本。
2.2 编写一个简单的 Java 程序
创建一个简单的 Java 程序,例如 HelloWorld.java
:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
2.3 编译 Java 程序
使用 javac
编译你的程序:
javac HelloWorld.java
2.4 使用 JLink 创建运行时镜像
执行以下命令创建运行时镜像:
jlink --module-path $JAVA_HOME/jmods --add-modules java.base --output HelloWorldImage
这个命令会创建一个包含了 java.base
模块的运行时镜像,并将其输出到 HelloWorldImage
目录中。
2.5 运行应用程序
进入 HelloWorldImage/bin
目录,执行生成的可执行文件:
./java -m HelloWorld
你将看到输出:Hello, World!
3. 进阶篇
3.1 添加模块
如果你的应用程序有其他模块依赖,可以通过 --add-modules
选项将它们添加到运行时镜像中:
jlink --module-path $JAVA_HOME/jmods --add-modules java.base,java.logging,java.sql --output HelloWorldImage
3.2 自定义运行时镜像
通过 --launcher
选项可以为你的应用程序创建一个自定义启动器:
jlink --module-path $JAVA_HOME/jmods --add-modules java.base --output HelloWorldImage --launcher start=java.base/java
这将创建一个名为 start
的启动器,使你可以运行应用程序:
./start -m HelloWorld
3.3 压缩运行时镜像
使用 --compress
选项可以压缩运行时镜像,减小镜像的大小:
jlink --module-path $JAVA_HOME/jmods --add-modules java.base --output HelloWorldImage --compress 2
这里的 2
表示使用 ZIP 压缩,可以根据需要选择其他级别。
4. 高级篇
4.1 自定义运行时参数
使用 --vm
选项可以为运行时环境指定自定义参数:
jlink --module-path $JAVA_HOME/jmods --add-modules java.base --output HelloWorldImage --vm "args=-Xmx256m"
4.2 配置文件
通过创建一个配置文件(jlink.conf
)可以进一步配置 JLink 的行为:
--module-path $JAVA_HOME/jmods
--add-modules java.base
--output HelloWorldImage
--launcher start=java.base/java
--compress 2
--vm "args=-Xmx256m"
然后运行:
jlink @jlink.conf
结语
通过本教程,你应该能够入门并掌握 JLink 工具的基本使用。随着你的实践和深入研究,你可以更灵活地使用 JLink 以满足特定项目的需求。希望这个教程能帮助你更好地利用 JLink 来创建自包含的 Java 应用程序。