JDK-6612006 : Use UPX for Java Kernel .exe file compression
  • Type: Enhancement
  • Component: deploy
  • Sub-Component: deployment_toolkit
  • Affected Version: 6u5
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: windows
  • CPU: generic
  • Submitted: 2007-10-02
  • Updated: 2010-09-17
  • Resolved: 2008-05-16
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
6u10 b08Fixed 7Fixed
Related Reports
Relates :  
Relates :  
The "Ultimate Packer for eXecutables" aka "UPX" described at http://upx.sourceforge.net/ offers totally transparent .exe compression such that the compressed .exe expands itself into its process: there are no separate compressed vs uncompressed files, and there is no user interaction involved with the uncompression. The size of the compressed .exe could be significantly less than 1/2 of the original .exe size with no loss of functionality.

Decompression for executables the size of the current Java Kernel online installer is "instantaneous" on a medium speed Pentium 4 computer, adding no noticeable delay to program startup. 

The UPX documentation gives explicit permission to commercial organizations (and anybody else) to distribute compressed binaries without charge, suggesting Sun legal approval to use this utility may be straight forward. 

Use of this utility should be prototyped and tested and legal approval should be gotten to enable use for publicly available version of Java Kernel.

Wider use of UPX for .exe compression should be tempered by the (current) relative difficulty of validating that decompression is faithfully reproducing the original .exe bits. The functionality of the installer is so constrained that proper validation seems straight forward, but this might not be true for other executables (e.g. java.exe) until/unless a tools is made to inspect a process created from a UPX-compressed .exe and confirm the "bits are all correct."

SUGGESTED FIX webrev: http://sa.sfbay.sun.com/projects/deployment_data/6u5/6612006.1/

EVALUATION Conditional use of UPX can be added to the installer build process.