GNU-kompilator för Java
Utvecklare | GNU-projektet |
---|---|
Initial release | 6 september 1998 |
Slutlig utgåva | |
Operativ system | Unix-liknande |
Typ | Kompilator |
Licens | GNU GPL |
Hemsida |
GNU Compiler for Java ( GCJ ) är en nedlagd gratis kompilator för programmeringsspråket Java . Det var en del av GNU Compiler Collection .
GCJ kompilerar Java- källkod till Java Virtual Machine (JVM) bytecode eller till maskinkod för ett antal CPU-arkitekturer . Det kan också kompilera klassfiler och hela JAR som innehåller bytekod till maskinkod.
Historia
GCJ runtime-libraries originalkälla är från GNU Classpath- projektet, men det finns en kodskillnad mellan libgcj
-biblioteken. GCJ 4.3 använder Eclipse Compiler för Java som front-end.
Under 2007 gjordes mycket arbete för att implementera stöd för Javas två grafiska API:er i GNU Classpath : AWT och Swing . Programvarustöd för AWT är fortfarande under utveckling. "När AWT-stödet fungerar kan Swing-stöd övervägas. Det finns åtminstone en delimplementering av Swing med fri programvara som kan vara användbar." GNU CLASSPATH slutfördes aldrig till ens Java 1.2-status och verkar nu ha övergivits helt.
Från och med 2015 tillkännagavs inga nya utvecklingar från GCJ och produkten var i underhållsläge , med Java-verktygskedjeutveckling med öppen källkod som mestadels skedde inom OpenJDK . GCJ togs bort från GCC- stammen den 30 september 2016. Tillkännagivandet om borttagandet gjordes i och med lanseringen av GCC 7.1, som inte innehåller den. GCJ förblir en del av GCC 6.
Prestanda
Kompileringsfunktionen i GCJ bör ha en snabbare uppstartstid än motsvarande bytekod som lanseras i en JVM när Java-kod kompileras till maskinkod.
Compiled Native Interface (CNI)
The Compiled Native Interface ( CNI ), tidigare kallat "Cygnus Native Interface", är ett mjukvaruramverk för GCJ som tillåter Java-kod att anropa och anropas av inbyggda applikationer (program specifika för en hårdvaru- och operativsystemplattform) och bibliotek skrivna i C++ .
CNI påminner mycket om JNI- ramverket (Java Native Interface) som kommer som standard med olika virtuella Java-maskiner .
Jämförelse av språkanvändning
Författarna till CNI hävdar olika fördelar jämfört med JNI:
Vi använder CNI för att vi tycker att det är en bättre lösning, speciellt för en Java-implementering som bygger på tanken att Java bara är ytterligare ett programmeringsspråk som kan implementeras med standardkompileringstekniker. Med tanke på det, och tanken att språk som implementeras med Gcc bör vara kompatibla där det är meningsfullt, följer det att Java-anropskonventionen bör vara lika lik som praktisk den som används för andra språk, särskilt C++, eftersom vi kan tänka på Java som en delmängd av C++. CNI är bara en uppsättning hjälpfunktioner och konventioner byggda på idén att C++ och Java har *samma* anropskonvention och objektlayout; de är binärt kompatibla. (Detta är en förenkling, men tillräckligt nära.)
CNI beror på att Java-klasser visas som C++-klasser. Till exempel, givet en Java-klass,
0
public class Int { public int i ; public Int ( int i ) { detta . i = i ; } offentlig statisk Int noll = ny Int ( ); }
man kan använda klassen så här:
0
#include <gcj/cni.h> #include <Int> Int * mult ( Int * p , int k ) { if ( k == ) returnera Int :: noll ; // Statisk medlemsåtkomst. returnera ny Int ( p -> i * k ); }
Se även
- Excelsior JET (Excelsior Java native code compiler)
- IcedTea
- Kaffe
- SableVM
- JamVM
- Apache Harmony
- Jikes
- GraalVM - GraalVM:s Native Image-funktion är en kompileringsteknik i förväg som producerar körbara binärfiler av klassfiler.
- Java virtuell maskin
- Gratis Java-implementationer
- Kotlin - Kotlin/Native är en teknik för att kompilera Kotlin till inbyggda binärer som körs utan JVM. Den består av en LLVM -baserad backend för Kotlin-kompilatorn och en inbyggd implementering av Kotlins runtime-bibliotek.
externa länkar
- "Officiell webbplats" . GCC . GNU. 30 mars 2007. Arkiverad från originalet den 9 maj 2007.
- "GCJ Maual" . Arkiverad från originalet den 22 augusti 2016.
- "Om CNI" . GCJ manual . Arkiverad från originalet den 28 juli 2016.
- Wielaard, Mark (6 april 2005). "GCJ - dåtid, nutid och framtid" . LWN. Arkiverad från originalet den 2 augusti 2019.