Kompilator GNU dla Javy
Deweloperzy | Projekt GNU |
---|---|
Pierwsze wydanie | 6 września 1998 |
Ostateczne wydanie | |
System operacyjny | Uniksopodobny |
Typ | Kompilator |
Licencja | GNU GPL |
Strona internetowa |
Compiler for Java ( GCJ ) jest wycofanym darmowym kompilatorem języka programowania Java . Był częścią kolekcji kompilatorów GNU .
kod źródłowy Java do kodu bajtowego maszyny wirtualnej Java (JVM) lub do kodu maszynowego dla wielu architektur procesorów . Może również kompilować pliki klas i całe pliki JAR zawierające kod bajtowy do kodu maszynowego.
Historia
Oryginalne źródło GCJ runtime-libraries pochodzi z projektu GNU Classpath , ale istnieje różnica w kodzie między bibliotekami libgcj
. GCJ 4.3 używa Eclipse Compiler for Java jako front-end.
W 2007 roku wykonano wiele pracy, aby zaimplementować obsługę dwóch graficznych interfejsów API Javy w GNU Classpath : AWT i Swing . Wsparcie oprogramowania dla AWT jest wciąż w fazie rozwoju. „Kiedy obsługa AWT działa, można rozważyć obsługę Swing. Istnieje co najmniej jedna częściowa implementacja Swing w wolnym oprogramowaniu , która może być użyteczna”. ŚCIEŻKA GNU CLASSPATH nigdy nie została ukończona nawet do stanu Java 1.2, a teraz wydaje się, że została całkowicie porzucona.
Począwszy od 2015 r., nie ogłoszono żadnych nowych rozwiązań ze strony GCJ, a produkt był w trybie konserwacji , a rozwój łańcucha narzędzi Java typu open source odbywał się głównie w ramach OpenJDK . GCJ został usunięty z pnia GCC 30 września 2016 r. Ogłoszenie jego usunięcia nastąpiło wraz z wydaniem GCC 7.1, które go nie zawiera. GCJ pozostaje częścią GCC 6.
Wydajność
Funkcja kompilacji w GCJ powinna mieć szybszy czas uruchamiania niż równoważny kod bajtowy uruchamiany w JVM podczas kompilacji kodu Java do kodu maszynowego.
Skompilowany interfejs natywny (CNI)
Compiled Native Interface ( CNI ), poprzednio nazywany „Cygnus Native Interface”, jest strukturą programową dla GCJ, która umożliwia kodowi Java wywoływanie i bycie wywoływanym przez natywne aplikacje (programy specyficzne dla sprzętu i platformy systemu operacyjnego) oraz biblioteki napisane w C++ .
CNI bardzo przypomina platformę JNI (Java Native Interface), która jest standardem w różnych wirtualnych maszynach Java .
Porównanie użycia języka
Autorzy CNI twierdzą, że mają różne zalety w stosunku do JNI:
Używamy CNI, ponieważ uważamy, że jest to lepsze rozwiązanie, zwłaszcza w przypadku implementacji języka Java, która opiera się na założeniu, że Java jest po prostu kolejnym językiem programowania, który można zaimplementować przy użyciu standardowych technik kompilacji. Biorąc to pod uwagę oraz pomysł, że języki zaimplementowane przy użyciu Gcc powinny być kompatybilne tam, gdzie ma to sens, wynika z tego, że konwencja wywoływania w Javie powinna być tak samo praktyczna, jak konwencja używana w innych językach, zwłaszcza w C++, ponieważ możemy myśleć o Javie jako o podzbiór C++. CNI to po prostu zestaw funkcji pomocniczych i konwencji opartych na założeniu, że C++ i Java mają *taką samą* konwencję wywoływania i układ obiektów; są kompatybilne binarnie. (Jest to uproszczenie, ale wystarczająco bliskie.)
CNI zależy od klas Java pojawiających się jako klasy C++. Na przykład, biorąc pod uwagę klasę Java,
0
klasa publiczna Int { publiczna int i ; public Int ( int i ) { this . ja = ja ; } public static Int zero = new Int ( ); }
można użyć klasy w ten sposób:
0
#include <gcj/cni.h> #include <Int> Int * mult ( Int * p , int k ) { if ( k == ) return Int :: zero ; // Statyczny dostęp członka. zwróć nowy Int ( p -> i * k ); }
Zobacz też
- Excelsior JET (natywny kompilator kodu Excelsior Java)
- Mrożona herbata
- Kawa
- SableVM
- JamVM
- Harmonia Apaczów
- Żarty
- GraalVM — funkcjonalność GraalVM Native Image to technologia kompilacji z wyprzedzeniem, która tworzy wykonywalne pliki binarne plików klas.
- Maszyna wirtualna Java
- Darmowe implementacje Javy
- Kotlin - Kotlin/Native to technologia kompilacji Kotlina do natywnych plików binarnych, które działają bez JVM. Obejmuje LLVM dla kompilatora Kotlin i natywną implementację biblioteki wykonawczej Kotlin.
Linki zewnętrzne
- „Oficjalna strona internetowa” . GCC . GNU ANTYLOPA. 30 marca 2007 r. Zarchiwizowane od oryginału w dniu 9 maja 2007 r.
- „GCJ Maual” . Zarchiwizowane od oryginału w dniu 22 sierpnia 2016 r.
- „O CNI” . Podręcznik GCJ . Zarchiwizowane od oryginału w dniu 28 lipca 2016 r.
- Wielaard, Mark (6 kwietnia 2005). „GCJ - przeszłość, teraźniejszość i przyszłość” . LWN. Zarchiwizowane od oryginału w dniu 2 sierpnia 2019 r.