GNU Compiler for Java
GNU Compiler for Java | ||
---|---|---|
Parte de GNU Compiler Collection | ||
![]() | ||
![]() GCJ ejecutado en una consola dentro de gnome-terminal | ||
Información general | ||
Tipo de programa | compilador anticipado | |
Autor | Cygnus Solutions | |
Desarrollador | Proyecto GNU | |
Lanzamiento inicial | 1998 | |
Licencia | GPL | |
Información técnica | ||
Plataformas admitidas | máquina virtual Java | |
Versiones | ||
Última versión estable | 6.526 de octubre de 2018 | |
Enlaces | ||
GNU Compiler for Java (en español Compilador de java de GNU), cuyo acrónimo es GCJ, es un compilador para el lenguaje de programación Java que forma parte del proyecto GCC.
GCJ no es solo un compilador, sino que también proporciona las bibliotecas y herramientas relacionadas con la implementación de Java de GNU.
Historia
Anthony Green, a fecha de 30 de Junio de 1998, publicó el documento original de diseño con el cual empezó GCJ, la idea inicial fue crear un compilador clásico que compilase java a binarios normales del sistema, que no requiriesen un interprete JIT para funcionar, ahorrando así muchísimos recursos en el software compilado con CGJ.
Sin embargo, para hacer a GCJ más compatible con las aplicaciones java existentes, se agregó a libgcj (la librería de gcj) soporte para interpretar archivos .class y .jar en tiempo de ejecución.
Con el tiempo, surgieron dos formas de ver java dentro de GNU, la forma tradicional, compilandolo a código nativo del sistema operativo y haciéndolo compatible con todo gcc, o interpretando archivos .class y .jar, el problema es que para compilarlo, en algunos casos, hay que hacer modificaciones al programa a compilar, lo cual es un impedimento.
Una de las metas de gcj es conseguir compilar a código nativo software java sin modificar nada de su código.
En el 2004 Tom Tromey inicio el proyecto GNU Gcjx, una implementación alternativa y experimental de GCJ, la cual pretende ser más clara y sencilla
Implementación
Actualmente GCJ es un compilador de java a código nativo y un interprete en tiempo de ejecucion, lo que lo convierte en una Maquina virtual de Java.
Está integrado dentro ecj, el compilador de java para Eclipse.
CNI
CNI son las siglas de Compilad Java Native inferface, en Español Interfaz nativo para java compilado, es un Framework para hacer posibles las llamadas a librerias comunes del sistema operativo desde java y hacer llamadas desde las librerías, a librerías java.
Esto permite utilizar código java como librería en programas en C++, por ejemplo.
GIJ
GIJ, GNU interpreter for Java o en Español Interprete de Java para GNU, es parte del proyecto GCJ y es quien interpreta código java en tiempo de ejecución.
Classpath
java dispone un conjunto de clases que el programador puede utilizar cuando desarrolla en dicho lenguaje, GCJ se unio con el proyecto GNU Classpath que es una implementación libre de dichas clases, para asi disponer esas clases en GCJ.
Arquitecturas
En la versión 4.2 se incluye soporte para:
Referencias
- Carl Albing; Michael Schwarz: Java Application Development on Linux, Prentice Hall, 978-0-13-143697-8