GCJ es el compilador de GCC para el lenguaje Java. Es bastante flexible, por lo que podemos compilar el código fuente a Java bytecode (archivos class) o directamente al código nativo, así como pasar el Java bytecode a código nativo.
Hello GCJ
En este primer ejemplo utilizaremos la compilación a código nativo desde el código Java.
public class Hello
{
public static void main(String[] args)
{
System.out.println("Hello GCJ !!!");
}
}
$ gcj -c Hello.java $ gcj --main=Hello -o Hello Hello.o $ ./Hello Hello GCJ !!!
Solo que en una buena práctica de programación, las clases se deben incluir en un paquete.
package org.snippetstricks.ejemplo;
public class Hello
{
public static void main(String[] args)
{
System.out.println("Hello GCJ !!!");
}
}
Tan solo hay que especificar el nombre del paquete en la opción --main.
$ gcj -c Hello.java $ gcj --main=org.snippetstricks.ejemplo.Hello -o Hello Hello.o $ ./Hello Hello GCJ !!!
Hello GIJ
GIJ es el interprete de los archivos .class y .jar. Es decir, podemos ejecutar un archivo .class o archivo jarcompilado con javac y ejecutarlo de forma nativa con gij.
Vemos un ejemplo con el Hello Java publicado anteriormente. Hay que compilar el ejemplo de forma normal conjavac
$ gij -jar HelloJava.jar Hello Java!!!
Pero… No todo es lo que parece… Veamos otro ejemplo, esta vez utilizando el ejemplos de Introducción a las Interfaces en Java.
$ gij -jar Geometria.jar Los datos de la figura Circulo son: El perimetro es: El area es: Los datos de la figura Cuadrado son: El perimetro es: El area es:
Se puede ver que no se ejecuto del todo, falto lo más importante; los perímetros y las áreas. Mmmmm, que mal plan!!!
En la siguiente documentación se especifica que se pueden implementar interfaces, pero con limitaciones: Interfaces – Guide to GNU gcj.
2 responses to “Java Nativo con GCJ”
Hola tengo una duda… no se si tenga que ver con algo JAVA nativo.
Es posible crear un String en el cual tenga una sentencia (ej: System.out.println(“hola”);) para después ejecutarlo como codigo java?
Hola, a mi tambien me gustaria saber si de alguna forma se puede convertir un string que contenga una seccion de codigo al lenguaje java y que despues lo interprete.