Различия при компиляции Java с помощью компилятора GNU для Java вместо Sun JDK
-
18-09-2019 - |
Вопрос
Я работаю над школьным проектом, в котором мне необходимо использовать компилятор GNU для Java.Я всегда работал с официальным Sun JDK, и теперь меня беспокоят различия, которые могут усложнить мою работу.
Меня особенно интересует, какая версия Java поддерживается последней версией компилятора GCJ.
Может ли кто-нибудь пролить свет на различия между одним и другим?
ПС:Я искал в Google, но не смог найти недавний ответ
Другие советы
Если этот ответ станет ответом с наибольшим количеством голосов, это означает, что вам следует попросить своего профессора еще раз подумать, почему он заставляет вас использовать такую необычную платформу.В реальном мире люди преимущественно используют Sun JDK.Я не вижу, чтобы это сильно изменилось в ближайшем будущем.По большей части это качественный продукт.
Может ли это действительно помочь вам учиться?
Ну с домашней страницы:
Compiled applications are linked with the GCJ runtime, libgcj, which provides the core
class libraries, a garbage collector, and a bytecode interpreter. libgcj can dynamically
load and interpret class files, resulting in mixed compiled/interpreted applications. It
has been merged with GNU Classpath and supports most of the 1.4 libraries plus some 1.5
additions.
С сайта GCJ.Похоже, что компилятор GNU — это опережающий компилятор, а не компилятор «точно в срок», как у Sun.Итак, есть одно отличие.Первая страница немного расплывчата и указывает на то, что в среду выполнения libgcj встроены некоторые средства интерпретации байт-кода.
Я бы с осторожностью относился к любой библиотеке, которая охватывает БОЛЬШИНСТВО библиотек версий 1.4 и 1.5.Если вы нацелены на 1.4, то, вероятно, все в порядке.1.6, и вас, вероятно, ждет мир страданий.
Имейте в виду, что если GCJ может только ИНТЕРПРЕТИРОВАТЬ файлы классов, то выполнение некомпилированного кода может быть намного медленнее, чем JIT-компилятор Sun.
В прошлый раз, когда я смотрел, я столкнулся с тонкими различиями в синтаксическом анализе даты.
Поскольку GNU JVM не прошла Java TCK, вы должны относиться к ней как к новой платформе, требующей полного тестирования.