• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

reducing the size of rt.jar

 
Greenhorn
Posts: 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
In the rt.jar file I dont require some of the packages like corba and rmi. To solve this problem what I did was I unjarred the rt.jar file , removed those packages and again jarred into new-rt.jar. The size of rt.jar was 11MB and the size of new-rt.jar was 5MB. now i tried to zip both the jar files, the results were like this . The size of rt.zip was 3.6MB and the size of new-rt.zip was 4.8MB. I am not able to understand why this 5MB file is not getting compreseed much compared to the 11MB file. Is there any way I am doing wrong while I unjar the rt.jar and again jar into new-rt.jar.These are the statements I am using for doing that
UnJar
jar -xvf rt.jar
Jar
jar -cvf new-rt.jar <dir1><dir2><dir3>
please let me know if there is any suggestion...
Thanks
Srikanth
 
Sheriff
Posts: 7001
6
Eclipse IDE Python C++ Debian Java Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
For some reason it looks like your original rt.jar was not a compressed jar file, but your new one is.
By default the "jar" command compresses the output. I reckon that the major size reduction you saw was mainly due to that. I can't believe that half of rt.jar was taken up by just corba and rmi. There's a whole lot of other stuff (like the Java compiler) in there!
 
Bartender
Posts: 2205
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
IANAL (I am not a lawyer) but I suggest you read the licensing agreement from Sun about the use of their Java (tm) Technology products! What you are doing is specifically prohibited! You are creating a "custom" distribution, and this is basically what MS tried to do with their "dirty" java and that's why Sun sued them.
Besides that little fact, you should be aware of a few things:
1) jar files = gzip archives
2) gzip archives use LZW compression, and one of the results of this is that in order to sequentially access any element of the archive, the entire archive must be uncompressed first. Think about that for a moment.
Not *every* class in rt.jar needs to be loaded during the execution of your java app, and the system class loader loads classes as needed. If it needs to load a class file from rt.jar and it's compressed, the entire file must first be uncompressed in order for the Class file to be located and loaded.
That's why you should NOT compress your jar files, unless you're using them for an applet. That's really the only valid use of compressing jar files (or other network distributed uses where bandwith is limited). If you're including your own libraries in jar files for an app you are distributing say via a CD-ROM, you still won't compress the Jar files. If you are using an installer, the *entire* installation package might be compressed but the individual jar files themselves should not be.
I hope this clears things up for you.
[ July 23, 2002: Message edited by: Rob Ross ]
reply
    Bookmark Topic Watch Topic
  • New Topic