Reducing size of JRE

前端 未结 4 1150
无人及你
无人及你 2020-12-02 20:41

We bundle the Java 6 JRE with our application installer so that it can be run on any machine, but this makes the application a little bit heavier. So we are planning to red

相关标签:
4条回答
  • 2020-12-02 21:16

    For my Java 8 Update 144 desktop application I exclude the 2 big Java FX files:

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

    The zipped jre is 49 MB instead of 66 MB.

    For me this is an acceptable tradeoff between reduced size and added build complexity (and potential bugs).

    0 讨论(0)
  • 2020-12-02 21:19

    Some update info: since java 8 there is an official Oracle tool called jrecreate for creating of small embedded JRE packages.

    0 讨论(0)
  • 2020-12-02 21:22

    Look at the README file in the JRE directory. The 'Optional Files and Directories' section lists a number of files that can be removed from the Oracle/Sun JRE if you are packaging it with your application.

    I use an Ant buildfile to copy the JRE from the system install location to the package directory when creating an installation. Put the list of files you want excluded in a separate file and use the 'excludesfile' attribute to load this list:

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

    Sample jre_excludes.properties file:

    # 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
    
    0 讨论(0)
  • 2020-12-02 21:24

    You're trying to reduce a standard JRE's size? Don't do that. You can choose to bundle an alternative JRE which might be smaller. A list can be found on this Wikipedia page. As always, beware of compatibility issues and test your application thoroughly.

    An other, and safer, way is to just require an installation of a JRE on the target machine.

    0 讨论(0)
提交回复
热议问题