GNU Compiler for Java

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая 178.125.156.125 (обсуждение) в 13:05, 23 августа 2011 (удалил повторяющийся абзац). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску
GNU Compiler for Java
Скриншот программы GNU Compiler for Java
Тип Компилятор
Автор Cygnus Solutions[1]
Разработчик Проект GNU
Операционная система Unix-like
Первый выпуск 1998[1][2]
Аппаратная платформа Java Virtual Machine
Последняя версия 4.5.0 (4 апреля 2010)
Лицензия GNU GPL
Сайт gcc.gnu.org/java
Логотип Викисклада Медиафайлы на Викискладе

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

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] Продукт в настоящее время находится в режиме обслуживания.

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

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

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

См. также

Примечания

Ссылки