 |
Java Binary (Puntuación: 6)
Contribución de ggc el Lunes, 20 agosto a las 16:38:56
|
|
 |
Java(tm) Binary Kernel Support for Linux
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::xcaxfexbaxbe::/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
PD Si deseamos tener una entrada en /etc/fstab agrega lo siguiente:
.
.
.
none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0
| |
 |
Votos del Artículo |
 |
Puntuación Promedio: 3 votos: 2

|
|




|