Pack200 Compression MethodPack200 is a method to compress JAR files very efficiently. The
compression ratio depends on the density and size of the class files in
the JAR. Pack200 compression IS NOT lossless. The redundant class
attributes are removed, the constant-pool data in the class files is
merged, sorted and co-located in the archive. The Pack200 compression method requires JRE v1.5 or later installed
on the target machine or bundled within your application. In case you
don't use only the package with bundle JRE, you should have such a JRE
as Prerequisite Software.
Being a lossy data compression, Pack200 requires all JAR files,
packed and unpacked, be tested for correctness.
Packing signed JAR filesBecause the pack/unpack process rearranges the contents of the
resultant JAR, the file signature can be broken. Therefore, the JAR file
must be normalized first and thereafter signed. Steps for signing JAR files in order to be packed with Pack200: - Normalize a JAR file you must use the pack200.exe application from
the JAVA_HOME\bin folder. The command line you should use when you
normalize the JAR file depends on the compression level specified in
the Media page:
- Fastest:
pack200 --repack --effort=2 --segment-limit=0 file.jar
- Fast: pack200 --repack --effort=4
--segment-limit=500000 file.jar
- Normal:
pack200 --repack file.jar
- Good:
pack200 --repack --effort=7 --segment-limit=10000000
--modification-time=latest file.jar
- Best:
pack200 --repack --effort=9 --segment-limit=-1
--modification-time=latest --strip-debug file.jar
- Sign the JAR file using your signing tool.
It is not recommended to use the packing compression method on
obfuscated signed JAR files.
Reducing JAR size In order to obtain higher compression rates, the following options
are used: - the files modification time is set the same for all the files
inside a JAR only when the "Good" or "Best" levels are used in the
Media page.
- debugging attributes (SourceFile, LineNumber...) are stripped only
when the "Best" compression level is used in the Media page.
|