GNU Compiler for Java

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
GNU Compiler for Java
Логотип программы GNU Compiler for Java
Тип Компилятор
Разработчик Проект GNU
Операционная система Unix-like
Последняя версия 6.5 / October 26, 2018 (4 декабря 2015)
Лицензия GNU GPL
Сайт gcc.gnu.org/gcc-6/

GNU Compiler for Java (GCJ или gcj) — это свободный компилятор языка Java, являющийся частью GNU Compiler Collection, но с 2017 года он больше не поддерживается и не будет частью будущих выпусков.

GCJ может компилировать исходный код Java в байткод виртуальной машины Java либо непосредственно в машинный код многих процессорных архитектур. Он также может компилировать файлы классов, содержащие байткод, или целые JAR, содержащие такие файлы, в машинный код.

Большинство runtime-библиотек, используемых gcj, взято из проекта GNU Classpath (ср. библиотеку libgcj ). По состоянию на gcj 4.3, gcj интегрируется ecj, Java-компилятором Eclipse.[1]

По состоянию на 2007 год много работы ушло на поддержку в GNU Classpath двух графических Java API: AWT и Swing. Работа по поддержке AWT продолжается, после чего последует поддержка Swing.[2]

По состоянию на 2009 год новые изменения в gcj почти остановлены.[3] Продукт в настоящее время находится в режиме обслуживания.

По состоянию на 2015 год от GCJ не было анонсировано никаких новых разработок, и продукт находился в режиме обслуживания, при этом разработка Java-инструментария с открытым исходным кодом в основном происходила в OpenJDK. GCJ был удален из ствола GCC 30 сентября 2016 года. Объявление о его удалении было сделано с выпуском GCC 7.1, который не содержит его. GCJ остается частью GCC 6.

Производительность

Java-код, скомпилированный в машинный код с помощью GCJ, должен иметь меньшее время запуска, чем эквивалентный байт-код, запущенный в JVM[4].

Однако, после запуска Java код, скомпилированный GCJ, не обязательно будет выполняться быстрее, чем байт-код, выполняемый современной JVM с включённым JIT. Это справедливо даже тогда, когда GCJ вызывается с продвинутыми опциями оптимизации, такими как -fno-bounds-check -O3 -mfpmath=sse -msse2 -ffast-math -march=native. Сможет ли скомпилированная программа превзойти по производительности JVM или нет, зависит от конкретных операций, выполняемых кодом[5].

Использующие GNU Compiler for Java программы

См. также

Примечания

  1. gcj to use Eclipse compiler as a front end (недоступная ссылка) (8 января 2007). Дата обращения: 20 мая 2007. Архивировано 2 мая 2012 года.
  2. The GCJ FAQ — GNU Project — Free Software Foundation (FSF). Дата обращения: 11 июля 2010. Архивировано 15 января 2016 года.
  3. GCJ: News Архивировано 18 апреля 2008 года.
  4. GCJ: The GNU Static Java Compiler (недоступная ссылка). Дата обращения: 11 июля 2010. Архивировано 7 июня 2011 года.
  5. GCJ vs Java JIT Performance Comparison (недоступная ссылка). Дата обращения: 11 июля 2010. Архивировано 25 февраля 2017 года.

Ссылки