Java Nativo con GCJ


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.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.

Posted in

2 responses to “Java Nativo con GCJ”

  1. Posted October 13, 2010 at 5:52 pm | Permalink

    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?

  2. Posted February 1, 2011 at 7:12 am | Permalink

    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.

Leave a Reply