1. EJDK 简介
EJDK(嵌入式 Java 开发工具包)是 Oracle 推出的解决方案,旨在解决为所有嵌入式平台提供二进制文件的问题。我们可以从 Oracle 官网 下载最新版 EJDK。
简单来说,它包含创建平台特定 JRE 的核心工具。
2. jrecreate 工具
EJDK 提供了两个平台适配的脚本:
- Windows 系统:
jrecreate.bat
- Unix/Linux 系统:
jrecreate.sh
这个工具的核心价值在于: ✅ 减少 Oracle 官方发布的二进制包数量 ✅ 简化自定义 JRE 创建流程
命令执行语法:
# Unix/Linux
$jrecreate.sh -<option>/--<option> <argument-if-any>
# Windows
$jrecreate.bat -<option>/--<option> <argument-if-any>
⚠️ 支持在单次命令中组合多个选项。下面我们重点解析常用选项。
3. jrecreate 核心选项
3.1. 目标目录 (-d
)
这是必选参数,用于指定 JRE 的生成路径:
$jrecreate.sh -d /SampleJRE
执行后会创建默认配置的 JRE,控制台输出示例:
Building JRE using Options {
ejdk-home: /installDir/ejdk1.8.0/bin/..
dest: /SampleJRE
target: linux_i586
vm: all
runtime: jre
debug: false
keep-debug-info: false
no-compression: false
dry-run: false
verbose: false
extension: []
}
Target JRE Size is 55,205 KB (on disk usage may be greater).
Embedded JRE created successfully
从输出可见,所有未显式指定的选项都采用了默认值。
3.2. 配置文件 (-p
)
用于控制 JRE 体积,通过预定义的 Profile 限制包含的 API 范围:
$jrecreate.sh -d /SampleJRECompact1/ -p compact1
将创建包含 compact1
配置的轻量级 JRE,输出示例:
Building JRE using Options {
ejdk-home: /installDir/ejdk1.8.0/bin/..
dest: /SampleJRECompact1
target: linux_i586
vm: minimal
runtime: compact1 profile
debug: false
keep-debug-info: false
no-compression: false
dry-run: false
verbose: false
extension: []
}
Target JRE Size is 10,808 KB (on disk usage may be greater).
Embedded JRE created successfully
关键变化:
runtime
值变为compact1
- JRE 体积从 55MB 锐减至 11MB
可用 Profile 级别:
compact1
(最小集)compact2
(扩展集)compact3
(完整集)
3.3. JVM 类型 (--vm
)
按需定制 JVM 实现:
$jrecreate.sh -d /SampleJREClientJVM/ --vm client
输出示例:
Building JRE using Options {
ejdk-home: /installDir/ejdk1.8.0/bin/..
dest: /SampleJREClientJVM
target: linux_i586
vm: Client
runtime: jre
debug: false
keep-debug-info: false
no-compression: false
dry-run: false
verbose: false
extension: []
}
Target JRE Size is 46,217 KB (on disk usage may be greater).
Embedded JRE created successfully
支持的 JVM 类型:
client
(客户端优化)server
(服务端优化)minimal
(极简实现)
3.4. 扩展组件 (-x
)
用于添加预定义的扩展模块:
$jrecreate.sh -d /SampleJRESunecExt/ -x sunec
输出示例:
Building JRE using Options {
ejdk-home: /installDir/ejdk1.8.0/bin/..
dest: /SampleJRESunecExt
target: linux_i586
vm: all
runtime: jre
debug: false
keep-debug-info: false
no-compression: false
dry-run: false
verbose: false
extension: [sunec]
}
Target JRE Size is 55,462 KB (on disk usage may be greater).
Embedded JRE created successfully
示例中添加了 sunec
(椭圆曲线加密安全提供程序),支持通过逗号分隔添加多个扩展。
3.5. 其他实用选项
选项 | 功能 |
---|---|
--help |
显示命令帮助 |
--debug |
创建包含调试支持的 JRE |
--keep-debug-info |
保留类文件和未签名 JAR 的调试信息 |
--dry-run |
模拟运行不实际生成 JRE |
--no-compression |
禁用未签名 JAR 的压缩 |
--verbose |
显示详细执行日志 |
4. 总结
本文介绍了 EJDK 的基本概念,以及如何使用 jrecreate
工具构建平台特定的 JRE。关键要点:
- 通过
-p
选项可显著减少 JRE 体积(最高减少 80%) - 组合
--vm
和-x
选项能精准控制功能集 --dry-run
选项在预演阶段尤其实用
这些功能在嵌入式开发和容器化部署中能有效解决资源占用问题,避免全量 JRE 的臃肿开销。