Reduciendo el tamaño de Java SE

El tamaño de la plataforma Java ha ido creciendo con cada release. Sun y la comunidad ha ido añadiendo nuevas características al conjunto con el fin de mejorarlo. Por ejemplo se incluye JavaDB (basado en Apache Derby). Es algo muy útil para alguien que necesite utilizar una base de datos pequeña para una aplicación Java. Sin embargo, para aquellos que no quieran utilizarlo, el tamaño que requiere estas adicciones pueden ser contraproducentes.

Hay formas de reducir el impacto del tamaño de Java SE sin violar la licencia.

Si tomamos la release Java SE 1.5.0 Update 13 para Linux:

Tamaño: 88 MB

 lin:/tmp> du -sk ./jre1.5.0_13/
88185 ./jre1.5.0_13/

Si eliminamos los archivos opionales:

Tamaño: 77 MB

 lin:/tmp> cd jre1.5.0_13/

jimc@jalopy:/tmp/jre1.5.0_13> /bin/rm -rf lib/charsets.jar lib/ext/sunjce_provider.jar \
 lib/ext/localedata.jar lib/ext/ldapsec.jar lib/ext/dnsns.jar bin/rmid \
 bin/rmiregistry bin/tnameserv bin/keytool bin/kinit bin/klist bin/ktab \
 bin/policytool bin/orbd bin/servertool bin/javaws, lib/javaws/ and lib/javaws.jar

lin:/tmp/jre1.5.0_13> cd ..
lin:/tmp> du -sk ./jre1.5.0_13/
77227 ./jre1.5.0_13/

Y si comprimimos rt.jar :

Tamaño: 59 MB

 lin:/tmp> mkdir rtjar
lin:/tmp> cd rtjar/

lin:/tmp/rtjar> jar -xf /tmp/jre1.5.0_13/lib/rt.jar
lin:/tmp/rtjar> zip -q -r /tmp/rt .
lin:/tmp/rtjar> mv /tmp/rt.zip /tmp/jre1.5.0_13/lib/rt.jar

lin:/tmp/rtjar> du -sk /tmp/jre1.5.0_13/
59358 /tmp/jre1.5.0_13/ 

Por supuesto, Java 6 llega un paso más lejos reduciendo el uso de memoria y tamaño de la Java SE.

Para terminar decir que hay otras opciones para el uso de la Java SE en dispositivos de capacidad reducida donde la distribución de Java está reducida aún más (ver Java SE Embedded : http://java.sun.com/javase/embedded/index.jsp)

También existen soluciones comerciales, como Excelsior JET (http://www.excelsior-usa.com/java-download-size.html). Básicamente, se analiza la aplicación en cuestión y las librerías de las que depende, siendo únicamente estas las que se incluyen en un ejecutable. Con esta solución ni siquiera sería necesario tener instalada la JRE.

Si conocéis alguna otra solución, compartidla con nosotros… solo no puedo, con amigos sí :).

Respuesta

  1. Uy, Luismi sabe de esto fijo que fijo, el e·sole ha hecho pupa xD

Deja un comentario