GNU Compiler for Java
Логотип программы GNU Compiler for Java
Скриншот программы GNU Compiler for Java
Тип Компилятор
Автор
Разработчик Проект GNU
Операционная система Unix-подобная операционная система
Дата выпуска 1998[1][2]
Аппаратная платформа Java Virtual Machine
Последняя версия
Состояние Разработка прекращена
Лицензия GNU GPL
Сайт gcc.gnu.org/wiki/… (англ.)
Логотип Викисклада Медиафайлы на Викискладе

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.[4]

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

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

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

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

править

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

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

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

править

См. также

править

Примечания

править
  1. 1 2 https://gcc.gnu.org/wiki/GCJ
  2. https://gcc.gnu.org/news/gcj-announce.txt
  3. Jelinek J. GCC 6.5 Released — 2018.
  4. gcj to use Eclipse compiler as a front end (8 января 2007). Дата обращения: 20 мая 2007. Архивировано из оригинала 2 мая 2012 года.
  5. The GCJ FAQ — GNU Project — Free Software Foundation (FSF). Дата обращения: 11 июля 2010. Архивировано 15 января 2016 года.
  6. GCJ: News Архивировано 18 апреля 2008 года.
  7. GCJ: The GNU Static Java Compiler. Дата обращения: 11 июля 2010. Архивировано из оригинала 7 июня 2011 года.
  8. GCJ vs Java JIT Performance Comparison. Дата обращения: 11 июля 2010. Архивировано из оригинала 25 февраля 2017 года.

Ссылки

править

📚 Artikel Terkait di Wikipedia

GNU Compiler Collection

GNU Compiler Collection (обычно используется сокращение GCC) — набор компиляторов для различных языков программирования, разработанный в рамках проекта

React

кода с помощью компилятора React Compiler, что позволяет переносить вычисления на сервер, а также минимизировать объём JavaScript кода передаваемому клиенту

Беллар, Фабрис

аппаратного обеспечения различных платформ с открытым исходным кодом; Tiny C Compiler — компактный компилятор C. До 2003 года являлся ведущим разработчиком FFmpeg —

JavaScript

JavaScript (англ. /ˈdʒɑːvəskrɪpt/; аббр. JS) — мультипарадигменный язык программирования. Поддерживает объектно-ориентированный, императивный и функциональный

OpenCV

Visual C++ (6.0, .NET 2003), Intel Compiler, Borland C++, Mingw (GCC 3.x)), Windows RT, Linux (GCC 2.9x, 3.x, Intel Compiler), macOS, Android, iOS. Поддерживаемые

C++

C++ Compiler, Embarcadero (Borland) C++ Builder и другие. C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#

История версий Java SE

openjdk.java.net. Дата обращения: 26 февраля 2020. Архивировано 18 ноября 2018 года. JEP 317: Experimental Java-Based JIT Compiler . openjdk.java.net. Дата

Модель памяти Java

Модель памяти Java (англ. Java Memory Model, JMM) описывает поведение потоков в среде исполнения Java. Модель памяти — часть семантики языка Java, и описывает