GNU kompilátor pro Javu - GNU Compiler for Java
![]() | |
Vývojáři | Projekt GNU |
---|---|
První vydání | 6. září 1998[1] |
Konečné vydání | 6.5[2] / 26. října 2018 |
Operační systém | Unixový |
Typ | Překladač |
Licence | GNU GPL |
webová stránka | gcc |
The GNU kompilátor pro Javu (GCJ) je volný, uvolnit překladač pro Programovací jazyk Java. Byla to součást Sbírka překladačů GNU již více než deset let, ale od roku 2017 již nebude udržován a nebude součástí budoucích verzí.[3][4]
GCJ kompiluje Javu zdrojový kód na Virtuální stroj Java bytecode nebo do strojový kód pro řadu Architektury CPU. Mohlo by to také sestavit soubory třídy a celé JAR které obsahují bytecode do strojového kódu.[5][6]
Dějiny
Původní zdroj běhových knihoven GCJ je z GNU Classpath projektu, ale existuje rozdíl v kódu mezi libgcj
knihovny. GCJ 4.3 používá Zatmění Kompilátor pro Javu jako front-end.[7]
V roce 2007 bylo vykonáno mnoho práce na implementaci podpory dvou grafických prostředí Java API v GNU Classpath: AWT a Houpačka. Softwarová podpora pro AWT je stále ve vývoji. „Jakmile podpora AWT funguje, lze uvažovat o podpoře Swing. Existuje alespoň jedna dílčí implementace svobodného softwaru Houpačka to může být použitelné. "[8] GNU CLASSPATH nebyl nikdy dokončen do stavu Java 1.2 a nyní se zdá, že byl zcela opuštěn.
Od roku 2015 nebyly od společnosti GCJ ohlášeny žádné nové novinky a produkt byl v údržbový mód, přičemž vývoj open-source nástrojů Java se většinou děje uvnitř OpenJDK.[9] GCJ byl odstraněn z GCC kmen dne 30. září 2016.[10][11] Oznámení o jeho odstranění bylo učiněno vydáním GCC 7.1, který jej neobsahuje.[12] GCJ zůstává součástí GCC 6.
Výkon
Funkce kompilace v GCJ by měla mít rychlejší čas spuštění než ekvivalentní bytecode spuštěný v JVM při kompilaci kódu Java do strojového kódu.[13]
Zkompilované nativní rozhraní (CNI)
The Zkompilované nativní rozhraní (CNI), dříve pojmenovaný „Nativní rozhraní Cygnus“, je a softwarový rámec pro GCJ, který umožňuje kód Java volání, a buď volala podle, nativní aplikace (programy specifické pro platformu hardwaru a operačního systému) a knihovny napsané v C ++.
CNI se velmi podobá JNI (Java Native Interface) framework, který se standardně dodává s různými Virtuální stroje Java.
Porovnání používání jazyků
Autoři CNI požadují oproti JNI různé výhody:[14]
Používáme CNI, protože si myslíme, že je to lepší řešení, zejména pro implementaci Java, která je založena na myšlence, že Java je jen další programovací jazyk, který lze implementovat pomocí standardních technik kompilace. Vzhledem k tomu a myšlence, že jazyky implementované pomocí Gcc by měly být kompatibilní tam, kde to dává smysl, vyplývá, že konvence volání Java by měla být stejně praktická jako ta, která se používá pro jiné jazyky, zejména C ++, protože si můžeme myslet na Javu jako na podmnožina C ++. CNI je jen sada pomocných funkcí a konvencí postavených na myšlence, že C ++ a Java mají * stejnou * konvenci volání a rozložení objektu; jsou binárně kompatibilní. (Jedná se o zjednodušení, ale dostatečně blízko.)
CNI závisí na třídách Java, které se objevují jako třídy C ++. Například,[15]dostal třídu Java,
veřejnost třída Int{ veřejnost int i; veřejnost Int(int i) { tento.i = i; } veřejnost statický Int nula = Nový Int(0);}
třídu lze použít takto:
#zahrnout <gcj/cni.h>#zahrnout <Int>Int *mult(Int *str, int k){ -li (k == 0) vrátit se Int::nula; // Statický přístup členů. vrátit se Nový Int(str->i * k);}
Viz také
- Excelsior JET (Excelsior Java native code compiler)
- Ledový čaj
- Kaffe
- SableVM
- JamVM
- Apache Harmony
- Jikes
- GraalVM - Funkce nativního obrazu GraalVM je předstihová kompilační technologie, která vytváří spustitelné binární soubory tříd.
- Překladače z C na Java Virtual Machine
- Zdarma implementace Java
- Kotlin - Kotlin / Native je technologie pro kompilaci Kotlin do nativních binárních souborů, které běží bez jakéhokoli JVM. Zahrnuje a LLVM backend založený na kompilátoru Kotlin a nativní implementace běhové knihovny Kotlin.
Reference
- ^ Anthony Green, Cygnus Solutions. „Oznámení GCJ“.
- ^ „Vydání GCC - GNU Project - Free Software Foundation (FSF)“.
- ^ „Archivovaná kopie“. Archivovány od originál dne 2007-05-09. Citováno 2010-04-22.CS1 maint: archivovaná kopie jako titul (odkaz)
- ^ Campbell, Bill (2013). Úvod do konstrukce kompilátorů ve světě Java. CRC Press Taylor & Francis Group. ISBN 978-1-4398-6088-5. Citováno 2014-02-06.
- ^ https://www.linuxjournal.com/article/4860
- ^ http://freecode.com/projects/gcj
- ^ "gcj použít kompilátor Eclipse jako rozhraní". 08.01.2007. Archivovány od originál dne 2007-05-09. Citováno 2007-05-20.
- ^ GCJ FAQ
- ^ GCC vypadá, že vypne Javu, nahradí ji Go nebo ADA
- ^ Andrew Haley (30. září 2016). „[gcc] Revize 240661“.
- ^ Tromey, Tom (2. října 2016). „Odstranění gcj“. The Cliffs of Inanity. Citováno 3. října 2016.
- ^ „Série vydání GCC 7: Změny, nové funkce a opravy“. Citováno 9. května 2017.
- ^ "GCJ: Statický kompilátor Java GNU" (PDF). Archivovány od originál (PDF) dne 07.06.2011. Citováno 2009-08-02.
- ^ GCJ FAQ - GNU Project - Free Software Foundation (FSF)
- ^ Příklad pochází z: https://gcc.gnu.org/onlinedocs/gcj/Objects-and-Classes.html#Objects-and-Classes Archivováno 2016-10-20 na Wayback Machine
externí odkazy
- "Oficiální webové stránky". GCC. GNU. 30. března 2007. Archivovány od originál 9. května 2007.
- „GCJ Maual“. Archivovány od originál dne 22. srpna 2016.
- „O CNI“. Manuál GCJ. Archivovány od originál dne 28. července 2016.
- Wielaard, Mark (6. dubna 2005). „GCJ - minulost, přítomnost a budoucnost“. LWN. Archivováno od originálu 2. srpna 2019.