gcj4e: making Java meets native world
gcj4e es un proyecto cuyo objetivo es poder compilar código Java de un proyecto Java a código nativo con gcj. Concretamente, los tres objetivos del proyecto son:
- Compilar el código Java a código antivo con gcj
- Poder utilizar todas las herramientas de JDT
- Poder cambiar entre gcj y el compilador de JDT
Desarrollo
Preliminares:
CDTMaster e instrucciones de instalación: http://download.eclipse.org/tools/cdt/builds/6.0.2/I.I201001150607/index.html
Fase 1
En esta fase se desarrollan los siguientes plug-ins:
- es.sidelab.gcj4e.cdtinterface -> org.eclipse.cdt.core.language
- es.sidelab.gcj4e.ui -> org.eclipse.ui.newWizards
- es.sidelab.gcj4e-feature -> Agrupar los dos plug-ins.
A partir de este momento es posible crear un nuevo proyecto de tipo "Java GCJ Project".
[Poner aquí los pasos seguidos y capturas de pantalla con el resultado final]
Fase 2
Incorporar el Toolchain para gcj (requiere instalar MinGW en Windows/gcj en Linux)
Enlaces relacionados
Vamos a comenzar mirando un poco las diferentes opciones que tenemos. Básicamente son tres (es posible que más adelante determinemos que no todas son factibles):
- Añadir una nature a un proyecto Java para permitir compilarlo con gcj ¿Cómo podemos integrar la elección del compilador a utilizar?
- Añadir una especificación de Java a las especificaciones existentes (como CDC 1.0, o Java 5.0) ¿Podemos especificar también el compilador o sólo la API?
- Utilizar facetas (facets) ¿Pueden dos facetas operar sobre el mismo conjunto de ficheros?
Estos son algunos enlaces relacionados:
- Sobre Java Nature, y cómo obtener el modelo con JavaCore: http://publib.boulder.ibm.com/infocenter/rtnlhelp/v6r0m0/index.jsp?topic=/org.eclipse.jdt.doc.isv/guide/jdt_int_model.htm
- Sobre facetas: http://blog.eclipse-tips.com/2008/10/faceted-project-framework.html
- Java y C con JDT y CDT: http://cdtdoug.blogspot.com/2009/07/project-navigator-apologies-to-all.html
El tema de las facetas parece poco viable. Nosotros querríamos tener las facetas JDT y GCJ aplicadas a un proyecto. El problema es que el código sólo debería compilarse con una de ellas. Podría pensarse en desactivar JDT para que compile GCJ, pero entonces dejaríamos de disponer de todo lo demás que nos ofrece JDT: editores, outline, etc.
Referencias
- En http://help.eclipse.org/galileo/topic/org.eclipse.jdt.doc.isv/guide/jdt_api_classpath.htm se muestra cómo cambiar programáticamente el Classpath del projecto.