Отличия при компиляции Java с помощью GNU Compiler для Java вместо Sun JDK

Я работаю над школьным проектом, где мне нужно использовать компилятор GNU для Java. Я всегда работал, используя официальный Sun JDK, и теперь я обеспокоен различиями, которые могут осложнить мою работу.

Меня особенно интересует какая версия Java поддерживается последней компилятором GCJ

Может ли кто-то пролить свет на различия между одним или другим?

PS: я искал в Google, но не смог найти недавний ответ

5 ответов

Решение

Поскольку gcj - это компилятор поверх GNU Classpath, вам нужны различия между официальным JDK и GNU Classpath. Для SUN JDK 1.4 смотрите это для SUN JDK 1.5 смотрите это вместо этого.

Если этот ответ станет самым популярным, это означает, что вы должны попросить своего профессора пересмотреть, почему он заставляет вас использовать такую ​​необычную платформу. В реальном мире люди используют Sun JDK преимущественно. Я не вижу, чтобы это сильно изменилось в ближайшем будущем. По большей части это качественный продукт.

Может ли это действительно помочь вам учиться?

С сайта GCJ. Похоже, что компилятор GNU - это опережающий компилятор, а не компилятор, который работает точно так же, как Sun. Так что тут есть одно отличие. Первая страница немного расплывчата и указывает на то, что она имеет некоторые средства интерпретации байт-кода, встроенные в среду выполнения libgcj.

Я бы с осторожностью относился к любой библиотеке, которая охватывает большинство из библиотек 1.4 и 1.5. Если вы нацелились на 1.4, то, вероятно, все в порядке. 1.6, и вы, вероятно, в мире боли.

Имейте в виду, что если GCJ может только файлы классов INTERPRET, то выполнение некомпилированного кода может быть намного медленнее, чем JIT-компилятором Sun.

Я столкнулся с тонкими различиями в разборе даты в прошлый раз, когда я искал.

Так как JVM GNU не прошла Java TCK, вы должны рассматривать его как новую платформу с полным тестированием.

Ну с домашней страницы:

http://gcc.gnu.org/java/

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. 
Другие вопросы по тегам