rt.jar put on a Proguard diet losses 26 MB

Michael Hall mik3hall at gmail.com
Sat Dec 15 19:16:45 PST 2012


On Dec 15, 2012, at 4:08 PM, Jeff Palmer wrote:

> rt.jar went from 50,469 KB to 24,207 KB

The following would probably tell you if ProGuard is compressing on you despite the settings

>           -dontshrink
>            -dontobfuscate

If it doesn't compress and doesn't obfuscate I don't see how the decrease is possible.

import java.io.IOException;
import java.util.Date;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

public class JarList {

  public static void main(String[] args) throws IOException {
	int count = -1;
    JarFile jf = new JarFile(args[0]);
    if (args.length > 1) 
    	count = new Integer(args[1]).intValue();
    Enumeration e = jf.entries();
    int curr = 0;
    while (e.hasMoreElements()) {
      if (count != -1) {
      	if (curr > count) break;
      	curr++;
      }
      JarEntry je = (JarEntry) e.nextElement();
      String name = je.getName();
      Date lastModified = new Date(je.getTime());
      long uncompressedSize = je.getSize();
      long compressedSize = je.getCompressedSize();
	  System.out.println("(" + uncompressedSize + "/" + compressedSize + ")\t" + lastModified + "\t" + name);
    }
  }
}

getting for example…
java JarList /Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/rt.jar 10
(0/0)	Wed Nov 28 08:06:30 CST 2012	META-INF/
(2332/2332)	Wed Nov 28 08:06:30 CST 2012	META-INF/MANIFEST.MF
(199/199)	Wed Nov 28 08:00:00 CST 2012	WrapperGenerator$1.class
(7717/7717)	Wed Nov 28 08:00:00 CST 2012	WrapperGenerator$AtomicType.class
(651/651)	Wed Nov 28 08:00:00 CST 2012	WrapperGenerator$BaseType.class
(1695/1695)	Wed Nov 28 08:00:00 CST 2012	WrapperGenerator$FunctionType.class
(3371/3371)	Wed Nov 28 08:00:00 CST 2012	WrapperGenerator$StructType.class
(22150/22150)	Wed Nov 28 08:00:00 CST 2012	WrapperGenerator.class
(6406/6406)	Wed Nov 28 08:02:28 CST 2012	apple/applescript/AppleScriptEngine.class
(898/898)	Wed Nov 28 08:02:28 CST 2012	apple/applescript/AppleScriptEngineFactory$1.class
(3495/3495)	Wed Nov 28 08:02:28 CST 2012	apple/applescript/AppleScriptEngineFactory.class

Mine isn't compressed and isn't showing name obfuscation, which if you were real clever might get you what amounted to compression by just shortening the names as part of the obfuscation.

I've never used ProGuard but from what I've seen of zip files I don't know of any other fat you could trim for that kind of savings.

Michael Hall


trz nio.2 for OS X http://www195.pair.com/mik3hall/index.html#trz

HalfPipe Java 6/7 shell app http://www195.pair.com/mik3hall/index.html#halfpipe

AppConverter convert Apple jvm to openjdk apps http://www195.pair.com/mik3hall/index.html#appconverter







More information about the macosx-port-dev mailing list