Jump to content

Компилятор GNU для Java

Компилятор GNU для Java
Разработчик(и) Проект GNU
Первоначальный выпуск 6 сентября 1998 г .; 25 лет назад ( 1998-09-06 ) [1]
Финальный выпуск
6.5 [2]  Отредактируйте это в Викиданных / 26 октября 2018 г.
Операционная система Unix-подобный
Тип Компилятор
Лицензия GNU GPL
Веб-сайт GCC .gnu .org

Компилятор 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);
}

См. также

[ редактировать ]
  1. ^ Энтони Грин, Cygnus Solutions. «Объявление GCJ» .
  2. ^ «Релизы GCC — проект GNU» .
  3. ^ «GCJ: Компилятор GNU для Java — Проект GNU — Фонд свободного программного обеспечения (FSF)» . Архивировано из оригинала 9 мая 2007 г. Проверено 22 апреля 2010 г.
  4. ^ Кэмпбелл, Билл (2013). Введение в создание компиляторов в мире Java . CRC Press Taylor & Francisco Group. ISBN  978-1-4398-6088-5 . Проверено 6 февраля 2014 г.
  5. ^ «Компиляция Java с помощью GCJ | Linux Journal» .
  6. ^ «Компилятор GNU для Java» .
  7. ^ «gcj использовать компилятор Eclipse в качестве внешнего интерфейса» . 08 января 2007 г. Архивировано из оригинала 9 мая 2007 г. Проверено 20 мая 2007 г.
  8. ^ Часто задаваемые вопросы GCJ
  9. ^ GCC планирует отключить Java, заменить его на Go или ADA
  10. ^ Эндрю Хейли (30 сентября 2016 г.). «[gcc] Редакция 240661» .
  11. ^ Троми, Том (2 октября 2016 г.). «Удаление gcj» . Скалы Безумия . Проверено 3 октября 2016 г.
  12. ^ «Серия выпусков GCC 7: изменения, новые функции и исправления» . Проверено 9 мая 2017 г.
  13. ^ «GCJ: Статический компилятор Java GNU» (PDF) . Архивировано из оригинала (PDF) 7 июня 2011 г. Проверено 2 августа 2009 г.
  14. ^ Часто задаваемые вопросы GCJ - Проект GNU - Фонд свободного программного обеспечения (FSF)
  15. ^ Пример взят из: https://gcc.gnu.org/onlinedocs/gcj/Objects-and-Classes.html#Objects-and-Classes. Архивировано 20 октября 2016 г. на Wayback Machine.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 7013b490e71ea08dac2e374d30d8c139__1721858640
URL1:https://arc.ask3.ru/arc/aa/70/39/7013b490e71ea08dac2e374d30d8c139.html
Заголовок, (Title) документа по адресу, URL1:
GNU Compiler for Java - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)