Отличия при компиляции Java с помощью GNU Compiler для Java вместо Sun JDK
Я работаю над школьным проектом, где мне нужно использовать компилятор GNU для Java. Я всегда работал, используя официальный Sun JDK, и теперь я обеспокоен различиями, которые могут осложнить мою работу.
Меня особенно интересует какая версия Java поддерживается последней компилятором GCJ
Может ли кто-то пролить свет на различия между одним или другим?
PS: я искал в Google, но не смог найти недавний ответ
5 ответов
Если этот ответ станет самым популярным, это означает, что вы должны попросить своего профессора пересмотреть, почему он заставляет вас использовать такую необычную платформу. В реальном мире люди используют Sun JDK преимущественно. Я не вижу, чтобы это сильно изменилось в ближайшем будущем. По большей части это качественный продукт.
Может ли это действительно помочь вам учиться?
С сайта GCJ. Похоже, что компилятор GNU - это опережающий компилятор, а не компилятор, который работает точно так же, как Sun. Так что тут есть одно отличие. Первая страница немного расплывчата и указывает на то, что она имеет некоторые средства интерпретации байт-кода, встроенные в среду выполнения libgcj.
Я бы с осторожностью относился к любой библиотеке, которая охватывает большинство из библиотек 1.4 и 1.5. Если вы нацелились на 1.4, то, вероятно, все в порядке. 1.6, и вы, вероятно, в мире боли.
Имейте в виду, что если GCJ может только файлы классов INTERPRET, то выполнение некомпилированного кода может быть намного медленнее, чем JIT-компилятором Sun.
Я столкнулся с тонкими различиями в разборе даты в прошлый раз, когда я искал.
Так как JVM GNU не прошла Java TCK, вы должны рассматривать его как новую платформу с полным тестированием.
Ну с домашней страницы:
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.