减少JRE的大小

时间:2010-12-08 12:11:53

标签: jvm java

我们将Java 6 JRE与我们的应用程序安装程序捆绑在一起,以便它可以在任何计算机上运行,​​但这会使应用程序变得更重一些。所以我们计划减少JRE的规模。如果有人做过这样的任务,你能否提供指导以推进这个任务?

4 个答案:

答案 0 :(得分:24)

查看JRE目录中的README文件。 “可选文件和目录”部分列出了一些文件,如果您将其与应用程序打包在一起,可以从Oracle / Sun JRE中删除这些文件。

在创建安装时,我使用Ant构建文件将JRE从系统安装位置复制到包目录。将要排除的文件列表放在单独的文件中,并使用'excludesfile'属性加载此列表:

<copy todir="${deployed_jre_dir}">
  <fileset dir="${system_jre_dir}" excludesfile="jre_excludes.properties" 
</copy>

示例jre_excludes.properties文件:

# per the README from the JRE, these files are for the browser plugin and are not needed otherwise
#bin/javaw.exe
bin/javaws.exe
bin/javacpl.exe
bin/jucheck.exe
bin/jusched.exe
bin/wsdetect.dll
bin/NPJPI*.dll
bin/NPJava*
bin/NPOJI610.dll
bin/RegUtils.dll
bin/axbridge.dll
bin/deploy.dll
bin/jpicom.dll
bin/javacpl.cpl
bin/jpiexp.dll
bin/jpinscp.dll
bin/jpioji.dll
bin/jpishare.dll
lib/deploy.jar
lib/plugin.jar
lib/javaws.jar
lib/javaws/messages*
lib/javaws/miniSplash.jpg
bin/new_plugin**
bin/jureg*
bin/ssv*
bin/jqs*
bin/jp2*
lib/deploy/**/*

# if you do not need any RMI stuff
# wildcard to catch .exe files on Windows
# note rmi.dll is not excluded, which is needed by jconsole; add rmi.dll if you do not need jsonsole
bin/jbroker*
bin/java-rmi*
bin/rmid*
bin/rmiregistry*
bin/tnameserv*
bin/orbd*
bin/servertool*

# do not include QuickTime
# this will be in the jre dir for machines that have QT installed
lib/ext/QTJava.zip

答案 1 :(得分:3)

一些更新信息:从java 8开始,有一个名为jrecreate的官方Oracle工具,用于创建小型嵌入式JRE包。

答案 2 :(得分:1)

您是否正在尝试降低标准JRE的尺寸?不要那样做。您可以选择捆绑可能更小的备用JRE。列表可以在this Wikipedia page上找到。与往常一样,要注意兼容性问题并彻底测试您的应用程序。

另一种更安全的方法是只需要在目标机器上安装JRE。

答案 3 :(得分:1)

对于我的Java 8 Update 144桌面应用程序,我排除了两个大的Java FX文件:

   bin/jfxwebkit.dll // ~34 MB unpacked
   lib/ext/jfxrt.jar // ~17 MB unpacked

压缩的jre是49 MB而不是66 MB。

对我而言,这是在缩小尺寸和增加构建复杂性(以及潜在错误)之间的可接受的权衡。