Компилятор Java GCJ: История и прекращение разработки
GNU Compiler for Java
GCJ: компилятор Java из GNU Compiler Collection. Компилировал в байт-код JVM или машинный код. Основан на GNU Classpath, но имеет отличия в библиотеках.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Компилятор Java
Java compiler
GNU Compiler for Java (GCJ) — это устаревший свободный компилятор для языка программирования Java. Он входил в состав GNU Compiler Collection. GCJ компилирует исходный код Java в байт-код виртуальной машины Java (JVM) или в машинный код для ряда архитектур процессоров. Он также мог компилировать файлы классов и целые JAR-архивы, содержащие байт-код, в машинный код.
The GNU Compiler for Java (GCJ) is a discontinued free compiler for the Java programming language. It was part of the GNU Compiler Collection. GCJ compiles Java source code to Java virtual machine (JVM) bytecode or to machine code for a number of CPU architectures. It could also compile class files and whole JARs that contain bytecode into machine code.
История
Оригинальный исходный код библиотек времени выполнения GCJ происходит из проекта GNU Classpath, но существует различие в коде между библиотеками libgcj. GCJ 4.3 использует Eclipse Compiler for Java в качестве фронтенда. В 2007 году была проделана значительная работа по реализации поддержки двух графических API Java в GNU Classpath: AWT и Swing. Программная поддержка AWT все еще находится в стадии разработки. "Как только поддержка AWT будет реализована, можно будет рассмотреть поддержку Swing. Существует как минимум одна свободная частичная реализация Swing, которую можно использовать". GNU CLASSPATH так и не был доведен до уровня Java 1.2 и теперь, по всей видимости, полностью заброшен. По состоянию на 2015 год новые разработки для GCJ не анонсировались, и продукт находился в режиме поддержки, в то время как разработка Java с открытым исходным кодом в основном велась в рамках OpenJDK. GCJ был удален из основного репозитория GCC 30 сентября 2016 года. Объявление об этом было сделано с выпуском GCC 7.1, который не включает его. GCJ остается частью GCC 6.
The GCJ runtime libraries original source is from GNU Classpath project, but there is a code difference between the libgcj libraries. GCJ 4.3 uses the Eclipse Compiler for Java as a front end. In 2007, a lot of work was done to implement support for Java's two graphical APIs in GNU Classpath: AWT and Swing. Software support for AWT is still in development. "Once AWT support is working then Swing support can be considered. There is at least one free software partial implementations of Swing that may be usable.". The GNU CLASSPATH was never completed to even Java 1.2 status and now appears to have been abandoned completely. As of 2015, there were no new developments announced from GCJ and the product was in maintenance mode, with open source Java toolchain development mostly happening within OpenJDK. GCJ was removed from the GCC trunk on September 30, 2016. Announcement of its removal was made with the release of the GCC 7.1, which does not contain it. GCJ remains part of GCC 6.
Выступление
Функция компиляции в GCJ должна запускаться быстрее, чем эквивалентный байт-код, выполняемый в JVM, при компиляции Java-кода в машинный код.
The compilation function in GCJ should have a faster start up time than the equivalent bytecode launched in a JVM when compiling Java code into machine code.
Компилированный интерфейс (CNI)
Compiled Native Interface (CNI), ранее известный как "Cygnus Native Interface", — это программный каркас для GCJ, позволяющий Java-коду вызывать и быть вызываемым из нативных приложений (программ, предназначенных для конкретной аппаратной и операционной платформы) и библиотек, написанных на C++. CNI тесно соответствует JNI (Java Native Interface), который является стандартным компонентом различных виртуальных машин Java.
The Compiled Native Interface (CNI), previously named "Cygnus Native Interface", is a software framework for the GCJ that allows Java code to call, and be called by, native applications (programs specific to a hardware and operating system platform) and libraries written in C++. CNI closely resembles the JNI (Java Native Interface) framework which comes as a standard with various Java virtual machines.