GNU Compiler for Java
GNU Compiler for Java (GCJ или gcj) — это свободный компилятор языка Java, являющийся частью GNU Compiler Collection, но с 2017 года он больше не поддерживается и не будет частью будущих выпусков.
GNU Compiler for Java | |
---|---|
Тип | Компилятор |
Автор | Cygnus Solutions[1] |
Разработчик | Проект GNU |
Операционная система | Unix-like |
Первый выпуск | 1998[1][2] |
Аппаратная платформа | Java Virtual Machine |
Последняя версия | 6.5 / October 26, 2018 (4 декабря 2015) |
Лицензия | GNU GPL |
Сайт | gcc.gnu.org/gcc-6/ |
Медиафайлы на Викискладе |
GCJ может компилировать исходный код Java в байткод виртуальной машины Java либо непосредственно в машинный код многих процессорных архитектур. Он также может компилировать файлы классов, содержащие байткод, или целые JAR, содержащие такие файлы, в машинный код.
Большинство runtime-библиотек, используемых gcj, взято из проекта GNU Classpath (ср. библиотеку libgcj
). По состоянию на gcj 4.3, gcj интегрируется ecj, Java-компилятором Eclipse.[3]
По состоянию на 2007 год много работы ушло на поддержку в GNU Classpath двух графических Java API: AWT и Swing. Работа по поддержке AWT продолжается, после чего последует поддержка Swing.[4]
По состоянию на 2009 год новые изменения в gcj почти остановлены.[5] Продукт в настоящее время находится в режиме обслуживания.
По состоянию на 2015 год от GCJ не было анонсировано никаких новых разработок, и продукт находился в режиме обслуживания, при этом разработка Java-инструментария с открытым исходным кодом в основном происходила в OpenJDK. GCJ был удален из ствола GCC 30 сентября 2016 года. Объявление о его удалении было сделано с выпуском GCC 7.1, который не содержит его. GCJ остается частью GCC 6.
Производительность
Java-код, скомпилированный в машинный код с помощью GCJ, должен иметь меньшее время запуска, чем эквивалентный байт-код, запущенный в JVM[6].
Однако, после запуска Java код, скомпилированный GCJ, не обязательно будет выполняться быстрее, чем байт-код, выполняемый современной JVM с включённым JIT. Это справедливо даже тогда, когда GCJ вызывается с продвинутыми опциями оптимизации, такими как -fno-bounds-check -O3 -mfpmath=sse -msse2 -ffast-math -march=native. Сможет ли скомпилированная программа превзойти по производительности JVM или нет, зависит от конкретных операций, выполняемых кодом[7].
Использующие GNU Compiler for Java программы
См. также
- GNU Interpreter for Java (GIJ)
- IcedTea
- Kaffe
- SableVM
- JamVM
- Apache Harmony
- Jikes
- C to Java Virtual Machine compilers
- Свободные реализация Java
Примечания
- https://gcc.gnu.org/wiki/GCJ
- https://gcc.gnu.org/news/gcj-announce.txt
- gcj to use Eclipse compiler as a front end (недоступная ссылка) (8 января 2007). Дата обращения: 20 мая 2007. Архивировано 2 мая 2012 года.
- The GCJ FAQ — GNU Project — Free Software Foundation (FSF)
- GCJ: News Архивировано 18 апреля 2008 года.
- GCJ: The GNU Static Java Compiler (недоступная ссылка). Дата обращения: 11 июля 2010. Архивировано 7 июня 2011 года.
- GCJ vs Java JIT Performance Comparison (недоступная ссылка). Дата обращения: 11 июля 2010. Архивировано 25 февраля 2017 года.
Ссылки
- gcc.gnu.org/java/ — официальный сайт GNU Compiler for Java
- GCJ Manual
- About CNI section of GCJ Manual
- GCJ Frequently Asked Questions
- LWN: GCJ — past, present, and future — the article discuss some history of GCJ.