GNU -Compiler für Java

GNU -Compiler für Java
Gcj2.png
Entwickler (en) Das GNU -Projekt
Erstveröffentlichung 6. September 1998; Vor 23 Jahren[1]
Endgültige Veröffentlichung
6.5[2] Edit this on Wikidata / 26. Oktober 2018
Betriebssystem Unix-artig
Typ Compiler
Lizenz Gnu gpl
Webseite GCC.Gnu.org

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

Verweise

  1. ^ Anthony Green, Cygnus Solutions. "GCJ -Ankündigung".
  2. ^ "GCC -Veröffentlichungen - GNU -Projekt".
  3. ^ "Archivierte Kopie". Archiviert von das Original Am 2007-05-09. Abgerufen 2010-04-22.{{}}: CS1 Wartung: Archiviertes Kopie als Titel (Link)
  4. ^ 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.
  5. ^ "Zusammenstellung von Java mit GCJ | Linux Journal".
  6. ^ "GNU -Compiler für Java".
  7. ^ "GCJ, um den Eclipse -Compiler als Frontend zu verwenden". 2007-01-08. Archiviert von das Original Am 2007-05-09. Abgerufen 2007-05-20.
  8. ^ Die GCJ -FAQ
  9. ^ GCC versucht Java auszuschalten, durch Go oder ADA zu ersetzen
  10. ^ Andrew Haley (30. September 2016). "[GCC] Revision 240661".
  11. ^ Tromey, Tom (2. Oktober 2016). "Die Löschung von GCJ". Die Klippen der Unanheit. Abgerufen 3. Oktober, 2016.
  12. ^ "GCC 7 Release -Serie: Änderungen, neue Funktionen und Fixes". Abgerufen 9. Mai, 2017.
  13. ^ "GCJ: Der GNU statische Java -Compiler" (PDF). Archiviert von das Original (PDF) Am 2011-06-07. Abgerufen 2009-08-02.
  14. ^ Das GCJ FAQ - GNU -Projekt - Free Software Foundation (FSF)
  15. ^ 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