GNU -Compiler für Java
Entwickler (en) | Das GNU -Projekt |
---|---|
Erstveröffentlichung | 6. September 1998[1] |
Endgültige Veröffentlichung | 6.5[2] / 26. Oktober 2018 |
Betriebssystem | Unix-artig |
Typ | Compiler |
Lizenz | Gnu gpl |
Webseite | GCC |
Das GNU -Compiler für Java (GCJ) ist ein frei Compiler für die Java -Programmiersprache. Es war Teil der GNU Compiler -Sammlung Seit über zehn Jahren ist es jedoch nicht mehr aufrechterhalten und wird nicht Teil von zukünftigen Veröffentlichungen sein.[3][4]
GCJ kompiliert Java Quellcode zu Java virtuelle Maschine (JVM) Bytecode oder zu Maschinensprache für eine Reihe von CPU -Architekturen. Es könnte auch kompilieren Klassendateien und ganz Gläser Das enthalten Bytecode in den Maschinencode.[5][6]
Geschichte
Die ursprüngliche Quelle der GCJ Runtime-Library stammt aus GNU -Klassenpfad Projekt, aber es gibt einen Codeunterschied zwischen dem libgcj
Bibliotheken. GCJ 4.3 verwendet die Finsternis Compiler für Java als Front-End.[7]
Im Jahr 2007 wurde viel Arbeit geleistet, um die Unterstützung für die beiden grafischen Javas umzusetzen Apis in GNU -Klassenpfad: Awt und Schwingen. Software -Unterstützung für Awt ist noch in der Entwicklung. "Sobald die AWT-Unterstützung funktioniert, kann der Swing-Support in Betracht gezogen werden. Es gibt mindestens eine Teilwaren-Teilwahrscheinlichkeit von freien Software von Schwingen das kann nutzbar sein. ".[8] Der GNU -Klassenpfad wurde nie zum Status von Java 1.2 abgeschlossen und scheint nun vollständig aufgegeben worden zu sein.
Ab 2015 wurden keine neuen Entwicklungen von GCJ angekündigt und das Produkt war in Wartungsmodus, mit Open-Source Java Toolchain-Entwicklung hauptsächlich in der Entwicklung OpenJDK.[9] GCJ wurde aus dem GCC entfernt Rüssel Am 30. September 2016.[10][11] Die Ankündigung der Entfernung wurde mit der Veröffentlichung des GCC 7.1 erstellt, der es nicht enthält.[12] GCJ bleibt Teil von GCC 6.
Leistung
Die Kompilierungsfunktion in GCJ sollte eine schnellere Startzeit haben als der äquivalente Bytecode, der beim Kompilieren von Java-Code in Maschinencode in einem JVM gestartet wurde.[13]
Kompilierte native Schnittstelle (CNI)
Das Kompilierte native Schnittstelle (CNI), zuvor als "Cygnus Native Interface" bezeichnet, ist a Software -Framework für den GCJ, der es Java Code zulässt Anruf, und sei sein genannt durch native Anwendungen (Programme, die für eine Hardware- und Betriebssystemplattform spezifisch sind) und Bibliotheken in geschriebenen Bibliotheken C ++.
CNI ähnelt stark dem Jni (Java Native Interface) Framework, das mit verschiedenen Standards einhergeht Java virtuelle Maschinen.
Vergleich des Sprachgebrauchs
Die Autoren des CNI -Anspruchs auf verschiedene Vorteile gegenüber JNI:[14]
Wir verwenden CNI, weil wir der Meinung sind, dass dies eine bessere Lösung ist, insbesondere für eine Java -Implementierung, die auf der Idee basiert, dass Java nur eine weitere Programmiersprache ist, die mit Standard -Kompilierungstechniken implementiert werden kann. Angesichts der Tatsache und der Idee, dass Sprachen, die mit GCC implementiert sind Teilmenge von C ++. CNI ist nur eine Reihe von Helferfunktionen und Konventionen, die auf der Idee basieren, dass C ++ und Java das * gleiche * aufgerufene Konvention und das Objektlayout haben. Sie sind binär kompatibel. (Dies ist eine Vereinfachung, aber nah genug.)
CNI hängt von Java -Klassen ab, die als C ++ - Klassen erscheinen. Zum Beispiel,[15] gegeben eine Java -Klasse,
Öffentlichkeit Klasse Int { Öffentlichkeit int i; Öffentlichkeit Int(int i) { Dies.i = i; } Öffentlichkeit statisch Int Null = Neu Int(0); }
Man kann die Klasse also verwenden:
#enthalten #enthalten Int *mult(Int *p, int k) { wenn (k == 0) Rückkehr Int::Null; // statischer Mitgliederzugriff. Rückkehr Neu Int(p->i * k); }
Siehe auch
- Excelsior Jet (Excelsior Java Native Code Compiler)
- Eistee
- Kaffe
- Sablevm
- Jamvm
- Apache -Harmonie
- Jikes
- Graalvm -Die native Bildfunktionalität von Graalvm ist eine kompilierende Technologie vor der Zeit, die ausführbare Binärdateien von Klassendateien erzeugt.
- C zu Java Virtual Machine Compilern
- Kostenlose Java -Implementierungen
- Kotlin - Kotlin/Native ist eine Technologie zum Zusammenstellen von Kotlin zu nativen Binärdateien, die ohne JVM laufen. Es umfasst a Llvm-Basierend Backend für den Kotlin -Compiler und eine native Implementierung der Kotlin Runtime Library.
Verweise
- ^ Anthony Green, Cygnus Solutions. "GCJ -Ankündigung".
- ^ "GCC -Veröffentlichungen - GNU -Projekt".
- ^ "Archivierte Kopie". Archiviert von das Original Am 2007-05-09. Abgerufen 2010-04-22.
{{}}
: CS1 Wartung: Archiviertes Kopie als Titel (Link) - ^ Campbell, Bill (2013). Einführung in den Compiler -Bau in einer Java -Welt. CRC Press Taylor & Francis Group. ISBN 978-1-4398-6088-5. Abgerufen 2014-02-06.
- ^ "Zusammenstellung von Java mit GCJ | Linux Journal".
- ^ "GNU -Compiler für Java".
- ^ "GCJ, um den Eclipse -Compiler als Frontend zu verwenden". 2007-01-08. Archiviert von das Original Am 2007-05-09. Abgerufen 2007-05-20.
- ^ Die GCJ -FAQ
- ^ GCC versucht Java auszuschalten, durch Go oder ADA zu ersetzen
- ^ Andrew Haley (30. September 2016). "[GCC] Revision 240661".
- ^ Tromey, Tom (2. Oktober 2016). "Die Löschung von GCJ". Die Klippen der Unanheit. Abgerufen 3. Oktober, 2016.
- ^ "GCC 7 Release -Serie: Änderungen, neue Funktionen und Fixes". Abgerufen 9. Mai, 2017.
- ^ "GCJ: Der GNU statische Java -Compiler" (PDF). Archiviert von das Original (PDF) Am 2011-06-07. Abgerufen 2009-08-02.
- ^ Das GCJ FAQ - GNU -Projekt - Free Software Foundation (FSF)
- ^ Das Beispiel kommt von: https://gcc.gnu.org/onlinedocs/gcj/objects-and-classes.html#objects-and-classes Archiviert 2016-10-20 bei der Wayback -Maschine
Externe Links
- "Offizielle Website". GCC. GNU. 30. März 2007. archiviert von das Original am 9. Mai 2007.
- "GCJ Maual". Archiviert von das Original am 22. August 2016.
- "Über CNI". GCJ -Handbuch. Archiviert von das Original am 28. Juli 2016.
- Wielaard, Mark (6. April 2005). "GCJ - Vergangenheit, Gegenwart und Zukunft". Lwn. Archiviert Aus dem Original am 2. August 2019.