2009-11-06 4 views
0

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

Я специально интересовался, какая версия Java является одна поддерживается последней GCJ компилятором

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

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

ответ

1

Поскольку GCJ является компилятором на вершине GNU Classpath вам нужны различия между официальной версией JDK & GNU Classpath. Для SUN JDK 1.4 см. this для SUN JDK 1.5 вместо этого см. this one.

+0

Отличный ответ, благодаря ссылкам. Очень информативно! –

+1

Обратите внимание, что эти ссылки показывают только те различия, которые могут быть обнаружены путем изучения соответствующих сигнатур байт-кода. Более сложными являются различия в поведении. К сожалению, команда Classpath никогда не смогла завладеть набором тестов Sun, поэтому им пришлось полагаться на тестовые комплекты, которые они сами написали. –

0

Ну от него это домашняя страница:

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. 
0

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

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

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

+0

Знаете ли вы, есть ли способ найти, какие части MOST были фактически реализованы? –

0

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

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

1

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

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

+0

Я не учился в США, учусь в Венесуэле. Здесь задача профессора - сделать все так же сложно, как может быть. Спросить его, что близко к бессмысленным –

+0

Что делают профессора в США? –