4 de noviembre de 2005

bienvenido gcjwebplugin, adios VM Java de Sun

Pues acabo de descubrir que en debian tengo el plugin de la implementación de java de classpath/gcj.

Eso significa, que con un apt-get install gcjwebplugin y tan solo 5 megas de descarga, puedo ejecutar applets java sin tener que recurrir a tocar la VM de sun. Y por unos pocos megas mas, java-gcj-compat te instala el resto de programas y enlaces simbolicos y scripts necesarios para que al ejecutar "java" o cualquier comando de java, como si tuvieras instalado la VM de sun

Y lo más importante: Es libre. Y las ventajas de ser libre no son solo filosóficas. Gracias a ser libre, gcj permite que java sea realmente multiplataforma, porque gcj permite usar java en literalmente cualquiera de las plataformas que soporta GCC. A diferencia de la de sun, que aplica el cuento de la "multiplataforma" solo a las plataformas que a ellos les da la gana soportar, entre las cuales no se incluye sin ir mas lejos linux para ppc o sparc, o los BSD.

Classpath tiene un 95% de la api de Java 1.4 implementada (ya tienen el soporte de generics de 1.5 y demas implementado tammbien), que no está mal. Por supuesto, eso no implica que este correctamente implementado o que sea rápido, pero la idea es que está bastante bastante avanzado. De hecho no es ningún secreto que en fedora lo utilizan para compilar nativamente eclipse y la parte de java que usa openoffice. Y a diferencia de sun, que implementa su propia interfaz, classpath utiliza gtk. Lo cual permite que a diferencia de sun, me salga el dialogo de texto de gtk al hacer click con el boton derecho y que en la de sun no me salga nada

Y lo de la rapidez, puedo confirmar (gracias a uno de los pocos benchmarks online que me han funcionado) que es mucho más lento. Cosa que no debería sorprender a nadie, no es raro que un proyecto (que por cierto está apoyado y pagado principalmente por redhat) que ha empezado hace poco y que está ocupado en replicar la api sea mas lento que una máquina virtual que ha sido el niño mimado de una de las multinacionales mas importantes del sector con millones de dolares a sus espaldas y más de 10 años de desarrollo (y que a pesar de eso, consume mas memoria que un viper gasolina). La mayor lentitud en el benchmark que he probado ha sido el lanzar y recoger 1.000.000 excepciones: 36 soberanos segundos frente a 0.36 segundos. Sin embargo, es el doble de rápido que el java de sun en lanzar 3 threads y cambiar de contexto 10000 veces cada uno: 0.029 frente a los 0.043 de sun. Tambien parece ser más rapido algo relacionado con el recolector de memoria.

1 comentario:

  1. Anónimo9:01 a. m.

    Magnifico que se tenga todo esto en tan poco tiempo (comparado con el que ha dedicado Sun).

    Yo ya utilizo Azureus con el gji (que es el interprete para las clases de java incluido con el GCJ).

    Página del proyecto:
    http://gcc.gnu.org/java/

    Josue Abarca
    ---------------------------------------
    Tu Mereces Software Libre.
    RMS.

    ResponderEliminar