Компилятор GNU для Java
Разработчик(и) | Проект GNU |
---|---|
Первоначальный выпуск | 6 сентября 1998 г [1] |
Финальный выпуск | 6.5 [2]
/ 26 октября 2018 г. |
Операционная система | Unix-подобный |
Тип | Компилятор |
Лицензия | GNU GPL |
Веб-сайт | GCC |
Компилятор GNU для Java ( GCJ ) — это бесплатный компилятор языка программирования Java , выпуск которого прекращен . Он был частью коллекции компиляторов GNU . [3] [4]
GCJ компилирует исходный код Java в виртуальной машины Java (JVM) байт-код или в машинный код для ряда архитектур ЦП . Он также может компилировать файлы классов и целые JAR-файлы , содержащие байт-код, в машинный код. [5] [6]
История
[ редактировать ]Исходный код библиотек времени выполнения GCJ взят из проекта GNU Classpath , но между ними есть разница в коде. libgcj
библиотеки. GCJ 4.3 использует компилятор Eclipse для Java в качестве внешнего интерфейса. [7]
В 2007 году была проделана большая работа по реализации поддержки двух графических API Java в GNU Classpath : AWT и Swing . Программная поддержка AWT все еще находится в разработке. «Как только поддержка AWT заработает, можно будет рассмотреть возможность поддержки Swing. Существует по крайней мере одна частичная реализация Swing в свободном программном обеспечении , которую можно использовать». [8] GNU CLASSPATH так и не был доведен до статуса Java 1.2, и теперь, похоже, от него полностью отказались.
По состоянию на 2015 год от GCJ не было анонсировано никаких новых разработок, и продукт находился в режиме обслуживания , при этом разработка цепочки инструментов Java с открытым исходным кодом в основном происходила в рамках OpenJDK . [9] GCC GCJ был удален из ствола 30 сентября 2016 г. [10] [11] Объявление об его удалении было сделано с выпуском GCC 7.1, который его не содержит. [12] GCJ остается частью GCC 6.
Производительность
[ редактировать ]Функция компиляции в GCJ должна иметь более быстрое время запуска, чем эквивалентный байт-код, запускаемый в JVM при компиляции кода Java в машинный код. [13]
Скомпилированный собственный интерфейс (CNI)
[ редактировать ]Скомпилированный собственный интерфейс ( CNI ), ранее называвшийся «Cygnus Native Interface», представляет собой программную среду для GCJ, которая позволяет Java-коду вызывать вызываться ими собственные приложения (программы, специфичные для аппаратной платформы и платформы операционной системы) и . библиотеки, написанные на C++ .
CNI очень похож на структуру JNI (Java Native Interface), которая входит в стандартную комплектацию различных виртуальных машин Java .
Сравнение использования языков
[ редактировать ]Авторы CNI заявляют о различных преимуществах перед JNI: [14]
Мы используем CNI, потому что считаем, что это лучшее решение, особенно для реализации Java, основанной на идее, что Java — это просто еще один язык программирования, который можно реализовать с использованием стандартных методов компиляции. Учитывая это, а также идею о том, что языки, реализованные с использованием Gcc, должны быть совместимы там, где это имеет смысл, из этого следует, что соглашение о вызовах Java должно быть максимально похоже на то, которое используется для других языков, особенно C++, поскольку мы можем думать о Java как о подмножество C++. CNI — это всего лишь набор вспомогательных функций и соглашений, основанных на идее, что C++ и Java имеют *одинаковые* соглашения о вызовах и структуру объектов; они двоично совместимы. (Это упрощение, но достаточно близкое.)
CNI зависит от классов Java, представленных как классы C++. Например, [15] учитывая класс Java,
public class Int
{
public int i;
public Int(int i) { this.i = i; }
public static Int zero = new Int(0);
}
можно использовать класс таким образом:
#include <gcj/cni.h>
#include <Int>
Int *mult(Int *p, int k)
{
if (k == 0)
return Int::zero; // Static member access.
return new Int(p->i * k);
}
См. также
[ редактировать ]- Excelsior JET (компилятор собственного кода Excelsior Java)
- ХолодныйЧай
- Кофе
- СаблеВМ
- ДжемВМ
- Апач Гармония
- Джайкс
- GraalVM — функция Native Image GraalVM — это передовая технология компиляции, которая создает исполняемые двоичные файлы файлов классов.
- виртуальная машина Java
- Бесплатные реализации Java
- Kotlin — Kotlin/Native — это технология компиляции Kotlin в собственные двоичные файлы, которые работают без JVM. Он включает в себя серверную часть на основе LLVM для компилятора Kotlin и собственную реализацию библиотеки времени выполнения Kotlin.
Ссылки
[ редактировать ]- ^ Энтони Грин, Cygnus Solutions. «Объявление GCJ» .
- ^ «Релизы GCC — проект GNU» .
- ^ «GCJ: Компилятор GNU для Java — Проект GNU — Фонд свободного программного обеспечения (FSF)» . Архивировано из оригинала 9 мая 2007 г. Проверено 22 апреля 2010 г.
- ^ Кэмпбелл, Билл (2013). Введение в создание компиляторов в мире Java . CRC Press Taylor & Francisco Group. ISBN 978-1-4398-6088-5 . Проверено 6 февраля 2014 г.
- ^ «Компиляция Java с помощью GCJ | Linux Journal» .
- ^ «Компилятор GNU для Java» .
- ^ «gcj использовать компилятор Eclipse в качестве внешнего интерфейса» . 08 января 2007 г. Архивировано из оригинала 9 мая 2007 г. Проверено 20 мая 2007 г.
- ^ Часто задаваемые вопросы GCJ
- ^ GCC планирует отключить Java, заменить его на Go или ADA
- ^ Эндрю Хейли (30 сентября 2016 г.). «[gcc] Редакция 240661» .
- ^ Троми, Том (2 октября 2016 г.). «Удаление gcj» . Скалы Безумия . Проверено 3 октября 2016 г.
- ^ «Серия выпусков GCC 7: изменения, новые функции и исправления» . Проверено 9 мая 2017 г.
- ^ «GCJ: Статический компилятор Java GNU» (PDF) . Архивировано из оригинала (PDF) 7 июня 2011 г. Проверено 2 августа 2009 г.
- ^ Часто задаваемые вопросы GCJ - Проект GNU - Фонд свободного программного обеспечения (FSF)
- ^ Пример взят из: https://gcc.gnu.org/onlinedocs/gcj/Objects-and-Classes.html#Objects-and-Classes. Архивировано 20 октября 2016 г. на Wayback Machine.
Внешние ссылки
[ редактировать ]- «Официальный сайт» . ССЗ . ГНУ. 30 марта 2007 г. Архивировано из оригинала 9 мая 2007 г.
- «Руководство GCJ» . Архивировано из оригинала 22 августа 2016 года.
- «О ЦНИ» . Руководство ГКЖ . Архивировано из оригинала 28 июля 2016 года.
- Вилаард, Марк (6 апреля 2005 г.). «GCJ – прошлое, настоящее и будущее» . ЛВН. Архивировано из оригинала 2 августа 2019 года.