探索jrecreate

2025/04/02

1. EJDK介绍

EJDK(嵌入式Java开发工具包)是由Oracle推出的,用于解决为所有可用的嵌入式平台提供二进制文件的问题。我们可以从此处的Oracle站点下载最新的EJDK。

简而言之,它包含用于创建特定于平台的JRE的工具。

2. jrecreate

EJDK为Windows提供了jrecreate.bat,为Unix/Linux平台提供了jrecreate.sh。该工具有助于为我们希望使用的平台组装自定义JRE,并被引入到:

  • 尽量减少Oracle为每个平台发布的二进制文件
  • 使为其他平台创建自定义JRE变得容易

在Unix/Linux中,使用以下语法执行jrecreate命令:

$jrecreate.sh -<option>/--<option> <argument-if-any>

在Windows中:

$jrecreate.bat -<option>/--<option> <argument-if-any>

请注意,我们可以为单个JRE创建添加多个选项。现在,让我们看一下该工具可用的一些选项。

3. jrecreate选项

3.1 Destination

destination选项是必需的,它指定应该在其中创建目标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

从上面的结果可以看出,目标JRE已在指定的目标目录下创建,所有其他选项均采用默认值。

3.2 Profile

profile选项用于管理目标JRE的大小,profile定义要包含的API的功能。如果未指定profile选项,则该工具将默认包含所有JRE API:

$jrecreate.sh -d /SampleJRECompact1/ -p compact1

将会创建一个具有compact1 profile的JRE,我们也可以在命令中使用––profile代替-p,命令行输出将显示以下结果:

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的大小略低于11MB,低于上一个示例中的55MB。

profile设置有3个可用选项:compact1、compact2和compact3。

3.3 JVM

jvm选项用于根据用户的需要使用特定的JVM自定义目标JRE,默认情况下,如果未指定profile和jvm选项,则它包括所有可用的JVM(客户端、服务器和最小):

$jrecreate.sh -d /SampleJREClientJVM/ --vm client

将创建一个带有client jvm的JRE,命令行输出将显示以下结果:

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

在上面的结果中,请注意vm选项的值为Client。我们还可以使用此选项指定其他JVM,如server和minimal。

3.4 Extension

extension选项用于包含对目标JRE的各种允许的扩展,默认情况下,不添加任何扩展:

$jrecreate.sh -d /SampleJRESunecExt/ -x sunec

将创建带有扩展名sunec(椭圆曲线密码安全提供程序)的JRE。我们也可以在命令中使用––extension代替-x,命令行输出将显示以下结果:

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

在上面的结果中,请注意extension选项的值为sunec,使用此选项可以添加多个扩展。

3.5 其他选项

除了上面讨论的主要选项之外,jrecreate还为用户提供了更多选项:

  • ––help:显示jrecreate工具的命令行选项摘要
  • ––debug:创建具有调试支持的JRE
  • ––keep-debug-info:保留类和未签名的JAR文件中的调试信息
  • ––dry-run:执行试运行,但不实际创建JRE
  • ––no-compression:使用未签名的JAR文件以未压缩格式创建JRE
  • ––verbose:显示所有jrecreate命令的详细输出

4. 总结

在本教程中,我们学习了EJDK的基础知识,以及如何使用jrecreate工具生成特定于平台的JRE。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章