Кіріспе

Java компиляторы

GNU Compiler for Java (GCJ) – Java бағдарламалау тілі үшін тоқтатылған ашық бастапқы кодты компилятор. Ол GNU Compiler Collection жинағының бір бөлігі болған. GCJ Java бастапқы кодын Java виртуалды машинасының (JVM) байт-кодына немесе көптеген процессор архитектуралары үшін машина кодын құрастырады. Сондай-ақ, GCJ байт-кодты қамтитын сынып файлдарын және толық JAR файлдарын машина кодын құрастыра алады.

Тарих

GCJ орындалу уақыты кітапханаларының бастапқы коды GNU Classpath жобасынан алынған, бірақ libgcj кітапханалары арасында кодтағы айырмашылықтар бар. GCJ 4.3 Java үшін Eclipse компиляторын фронтенд ретінде пайдаланады. 2007 жылы GNU Classpath-та Java-ның екі графикалық API-ін қолдау үшін көп жұмыс істелді: AWT және Swing. AWT бағдарламалық қолдауы әлі де дамып жатыр. "AWT қолдауы жұмыс істей бастағаннан кейін Swing қолдауын қарастыруға болады. Swing-тің кемінде бір толық емес, ашық кодты нұсқасы бар, оны пайдалануға болады." GNU CLASSPATH тіпті Java 1.2 деңгейіне де жетпеді және қазір толығымен тоқтатылған сияқты. 2015 жылға қарай GCJ-ден жаңа әзірлемелер туралы хабарламалар жарияланбады және өнім техникалық қолдау режимінде болды, ашық кодты Java құралдар тізбегін дамыту көбінесе OpenJDK ішінде жүрді. GCJ 2016 жылдың 30 қыркүйегінде GCC негізгі кодыннан алынып тасталды. Оның алынып тасталуы GCC 7.1 нұсқасының шығарылымымен бірге жарияланды, ол GCJ-ді қамтымайды. GCJ әлі де GCC 6 құрамына кіреді.

Өнер көрсету

GCJ-дегі компиляция функциясы Java кодын машиналық кодқа аударғанда, JVM-де іске қосылатын балама байт-кодына қарағанда тезірек іске қосылу уақытына ие болуы тиіс.

Компиляцияланған жергілікті интерфейс (CNI)

Compiled Native Interface (CNI), бұрын "Cygnus Native Interface" деп аталған, GCJ үшін бағдарламалық құралдар жиынтығы болып табылады, ол Java кодын шақыруға, сондай-ақ жергілікті қолданбалар (нақты аппараттық және операциялық жүйе платформасына арналған бағдарламалар) мен C++ тілінде жазылған кітапханалардың Java кодын шақыруына мүмкіндік береді. CNI әртүрлі Java виртуалды машиналарымен бірге стандартты түрде келетін JNI (Java Native Interface) құрылғысына өте ұқсас.