El compilador GNU para Java ( GCJ ) es un compilador gratuito para el lenguaje de programación Java . Fue parte de la Colección de compiladores GNU durante más de diez años, pero a partir de 2017 ya no se mantiene y no formará parte de versiones futuras. [3] [4]
Desarrollador (es) | El proyecto GNU |
---|---|
Versión inicial | 6 de septiembre de 1998 [1] |
Lanzamiento final | 6.5 [2] / 26 de octubre de 2018 |
Sistema operativo | Tipo Unix |
Tipo | Compilador |
Licencia | GNU GPL |
Sitio web | gcc |
GCJ compila Java código fuente de Java Virtual Machine código de bytes o al código de máquina para un número de arquitecturas de CPU . También podría compilar archivos de clase y JAR completos que contienen código de bytes en código de máquina. [5] [6]
Historia
La fuente original de las bibliotecas en tiempo de ejecución de GCJ es del proyecto GNU Classpath , pero hay una diferencia de código entre las libgcj
bibliotecas. GCJ 4.3 utiliza el compilador Eclipse para Java como interfaz. [7]
En 2007, se trabajó mucho para implementar el soporte para las dos API gráficas de Java en GNU Classpath : AWT y Swing . El soporte de software para AWT aún está en desarrollo. "Una vez que la compatibilidad con AWT esté funcionando, se puede considerar la compatibilidad con Swing. Hay al menos una implementación parcial de software libre de Swing que puede ser utilizable". [8] El GNU CLASSPATH nunca se completó ni siquiera en el estado de Java 1.2 y ahora parece haber sido abandonado por completo.
A partir de 2015, GCJ no anunció nuevos desarrollos y el producto estaba en modo de mantenimiento , y el desarrollo de la cadena de herramientas Java de código abierto se realiza principalmente dentro de OpenJDK . [9] GCJ fue retirado del tronco del GCC el 30 de septiembre de 2016. [10] [11] El anuncio de su retiro se hizo con el lanzamiento del GCC 7.1, que no lo contiene. [12] GCJ sigue siendo parte de GCC 6.
Actuación
La función de compilación en GCJ debería tener un tiempo de inicio más rápido que el código de bytes equivalente lanzado en una JVM al compilar código Java en código de máquina. [13]
Interfaz nativa compilada (CNI)
La Interfaz nativa compilada ( CNI ), anteriormente denominada "Interfaz nativa Cygnus", es un marco de software para GCJ que permite que el código Java llame y sea llamado por aplicaciones nativas (programas específicos de una plataforma de hardware y sistema operativo) y bibliotecas escritas en C ++ .
CNI se parece mucho al marco JNI (Java Native Interface) que viene como estándar con varias máquinas virtuales Java .
Comparación del uso del lenguaje
Los autores de CNI afirman varias ventajas sobre JNI: [14]
Usamos CNI porque creemos que es una mejor solución, especialmente para una implementación de Java que se basa en la idea de que Java es solo otro lenguaje de programación que se puede implementar mediante técnicas de compilación estándar. Dado que, y la idea de que los lenguajes implementados usando Gcc deben ser compatibles donde tenga sentido, se deduce que la convención de llamada de Java debe ser tan similar como práctica a la que se usa para otros lenguajes, especialmente C ++, ya que podemos pensar en Java como un subconjunto de C ++. CNI es solo un conjunto de funciones auxiliares y convenciones basadas en la idea de que C ++ y Java tienen * la misma * convención de llamada y diseño de objeto; son binarios compatibles. (Esta es una simplificación, pero lo suficientemente cerca).
CNI depende de las clases de Java que aparecen como clases de C ++. Por ejemplo, [15] dada una clase Java,
public class Int { public int i ; public Int ( int i ) { esto . i = yo ; } public static Int zero = new Int ( 0 ); }
uno puede usar la clase así:
#include #include Int * mult ( Int * p , int k ) { if ( k == 0 ) return Int :: cero ; // Acceso de miembros estáticos. return new Int ( p -> i * k ); }
Ver también
- Excelsior JET (compilador de código nativo Java Excelsior)
- Te helado
- Kaffe
- SableVM
- JamVM
- Apache Harmony
- Jikes
- GraalVM : la funcionalidad de imagen nativa de GraalVM es una tecnología de compilación avanzada que produce binarios ejecutables de archivos de clase.
- Compiladores de C a Java Virtual Machine
- Implementaciones Java gratuitas
- Kotlin : Kotlin / Native es una tecnología para compilar Kotlin en binarios nativos que se ejecutan sin JVM. Comprende un backend basado en LLVM para el compilador de Kotlin y una implementación nativa de la biblioteca de tiempo de ejecución de Kotlin.
Referencias
- ^ Anthony Green, Cygnus Solutions. "Anuncio de GCJ" .
- ^ "Lanzamientos de GCC - Proyecto GNU - Free Software Foundation (FSF)" .
- ^ "Copia archivada" . Archivado desde el original el 9 de mayo de 2007 . Consultado el 22 de abril de 2010 .CS1 maint: copia archivada como título ( enlace )
- ^ Campbell, Bill (2013). Introducción a la construcción de compiladores en un mundo Java . CRC Press Taylor & Francis Group. ISBN 978-1-4398-6088-5. Consultado el 6 de febrero de 2014 .
- ^ https://www.linuxjournal.com/article/4860
- ^ http://freecode.com/projects/gcj
- ^ "gcj para usar el compilador Eclipse como interfaz" . 2007-01-08. Archivado desde el original el 9 de mayo de 2007 . Consultado el 20 de mayo de 2007 .
- ^ Las preguntas frecuentes de GCJ
- ^ GCC busca apagar Java, reemplazar con Go o ADA
- ^ Andrew Haley (30 de septiembre de 2016). "[gcc] Revisión 240661" .
- ^ Tromey, Tom (2 de octubre de 2016). "La eliminación de gcj" . Los acantilados de la locura . Consultado el 3 de octubre de 2016 .
- ^ "Serie de versiones GCC 7: cambios, nuevas funciones y correcciones" . Consultado el 9 de mayo de 2017 .
- ^ "GCJ: El compilador de Java estático GNU" (PDF) . Archivado desde el original (PDF) el 7 de junio de 2011 . Consultado el 2 de agosto de 2009 .
- ^ Las preguntas frecuentes de GCJ - Proyecto GNU - Free Software Foundation (FSF)
- ^ El ejemplo proviene de: https://gcc.gnu.org/onlinedocs/gcj/Objects-and-Classes.html#Objects-and-Classes Archivado 2016-10-20 en Wayback Machine
enlaces externos
- "Sitio web oficial" . GCC . ÑU. 30 de marzo de 2007. Archivado desde el original el 9 de mayo de 2007.
- "GCJ Maual" . Archivado desde el original el 22 de agosto de 2016.
- "Acerca de CNI" . Manual de GCJ . Archivado desde el original el 28 de julio de 2016.
- Wielaard, Mark (6 de abril de 2005). "GCJ - pasado, presente y futuro" . LWN. Archivado desde el original el 2 de agosto de 2019.