Java Binary

java-binary

Java(tm) Binary Kernel Support for Linux v1.03
———————————————-

Linux beats them ALL! While all other OS’s are TALKING about direct
support of Java Binaries in the OS, Linux is doing it!

¡Linux le gana a todos!, Mientras todos los demás Sistemas Operativos están hablando del soporte directo de binarios Java en su Sistema, ¡Linux ya lo está haciendo!

Leyendo la documentación del Kernel Linux, me encontré con la novedad de poder ejecutar ficheros java o mejor dicho ficheros con extensión class, jar y ficheros html, donde en este último existe una lí­nea que ubica al fichero class compilado con javac.

Bien, lo primero que debes tener son las fuentes del Kernel Linux (http://www.kernel.org), para destarearlo en /usr/src. Una vez hecho esto escoge tus opciones pertinentes para hacer un Kernel personalizable (lo que con lleva a que debes saber o haber compilado uno al menos :-) , pero con la novedad que dentro de — Executable File formats — escojas la opcion:

<*> Kernel support for MISC binaries

Casi por lo regular las distros tienen marcado estas opciones dentro de Executable File formats y se compilan como parte del núcleo, no como módulos integrados. Si optas como módulo debes cargarlo manualmente con modprobe/insmod (ver man de modprobe e insmod) o una alternativa que cargue el módulo en el arranque del sistema.

Una vez que tu kernel se ha iniciado correctamente, como root haz lo siguiente:

# mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc

Esto sirve para registrar un nuevo tipo de binario, por lo que habrá que escribir en él con echo (binfmt_misc significa binary format miscellaneous :-) :

# echo ‘:Java:M::\xca\xfe\xba\xbe::/usr/local/bin/javawrapper:’ > /proc/sys/fs/binfmt_misc/register

para ficheros java

# echo ‘:ExecutableJAR:E::jar::/usr/local/bin/jarwrapper:’ > /proc/sys/fs/binfmt_misc/register

para los jar y para finalizar

# echo ‘:Applet:E::html::/usr/java/j2sdk1.4.2_08/bin/appletviewer:’ > /proc/sys/fs/binfmt_misc/register

para los applets como podrás notar el PATH de java lo tengo en /usr/java/ pero faltan tres ficheros restantes.

* javawrapper (Shell script)
* jarwrapper (Shell script)
* javaclassname (que sale de un fichero con el mismo nombre con extensión .c compilado con GCC)

Esos vienen adjuntos en /usr/src/linux/Documentation/java.txt solo habrá que copiar y pegar :-O en /usr/local/bin por que es la ruta donde se ubican al escribir con echo.

Y por fin la cúspide de todo esto, hagamos el canónico hola mundo en java.

// HelloWorld.java

class HelloWorld {
public static void main(String args[]) {
System.out.println(”A ver si esto realmente funciona!”);
System.out.println(”Hii World …. :-P ”);
}
}

Lo compilamos con:
javac HelloWorld.java

Fijamos permisos de ejecución en el archivo binario, con:
chmod 755 HelloWorld.class

Y lo ejecutamos:
./HelloWorld.class

Para más información consulta la documentación adjunta con los fuentes del Kernel Linux.

Fácil no? de igual forma podemos hacerlo con ficheros .exe que genera MONO. Probado en Gentoo Linux 2005.1 con el Kernel 2.6.13

Atte GGC gerardogc2378@yahoo.com.mx

PD Si deseamos tener una entrada en /etc/fstab agrega lo siguiente:

.
.
.
none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0


Deja un comentario