LINUX.ORG.RU

GCJ vs JDK


0

1

Я не совсем понимаю в чем различие между JDK и GCJ? То есть есть ли какие нибудь функциональные отличия, и нужен ли JDK если есть полный набор GCC?

★★★★★

>Я не совсем понимаю в чем различие между JDK и GCJ?

В том, что gcj умер.

anonymous
()
Ответ на: комментарий от splinter

подарил бог яишницу и изрек: не путай божий дар с иишницей!

wfrr ★★☆
()
Ответ на: комментарий от mono

то есть для того что бы компилировать java-код необязательно ставить JDK, gcc вполне его во всех смыслах заменяет?

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

да, теоретически, то что работает с GNU Classpath должно работать и с gcj.

на практике - не проверял.

mono ★★★★★
()
Ответ на: комментарий от splinter

Только очень старый Java-код. Пойди на сайт gcj и посмотри версию jdk с которой он совместим.

KblCb ★★★★★
()

GCJ - говно мамонта. Последний раз когда я его издалека осторожно тыкал палкой оно не умело Swing

vertexua ★★★★★
()
Ответ на: комментарий от splinter

gcj компилировал в натив, однако он просто устарел и умер.

tensai_cirno ★★★★★
()
Ответ на: комментарий от splinter

>Вроде бы есть, вроде как не умер.

Но уже на пенсии.

proud_anon ★★★★★
()

> Я не совсем понимаю в чем различие между JDK и GCJ?

различие в том, что GCJ — это компилятор языка Java.
JDK — это среда разработки Ява, включает в себя компилятор sun javac,
рантайм J2EE, документацию, примеры (и исходники рантайма).
JDK примерно так же относится к Java, как libc относится к gcc.
То есть, JDK — это рантайм языка ява, включая реализацию (JIT компилятор, HotSpot и т.п.) и спецификацию (стандарт на библиотеку).

То есть есть ли какие нибудь функциональные отличия,


есть. Javac из состава JDK — компилятор Java исходников в байткод. classloader + java vm + jdk + hotspot jit = java — запускалка(не совсем интерпретатор) байткода.

Существуют другие компиляторы, кроме sun javac, и другие jvm, например, Jikes — Более быстрый компилятор. При этом ему нужна какая-то реализация jvm.

AOT-компиляторы — это компилятор, который статически компилирует всю программу целиком (в отличие, от JIT), в нативный код. Для Java существует пара-тройка известных AOT-компиляторов: GCJ, Excelsior Jet (на базе их компилятора модулы-2, оберона и Си), IceTea на базе LLVM из состава OpenJDK и т.п.

Им тоже нужна какая-то реализация JDK, например, своя собственная.

нужен ли JDK если есть полный набор GCC?


нужен. Потому что в GCJ используется не сановская JDK, а своя собственая classpath, которая является доработанной для статической компиляции свободной реализацией JVM Kawa.

последняя версия JDK CLASSPATH остановилась в развитии где-то на уровне между JDK 1.4 и 1.5, то есть, программы под JDK 1.6 и выше ей собрать не получится.

Вот сайт автора GCJ, см. публикации о ходе разработки GCJ:

http://per.bothner.com/papers/index.html

«Papers relating to Gcj, the Gcc-based Java compiler»


там он подробно описывает, какие экзекуции пришлось сделать с JVM и GCC , чтобы ява смогла статически откомпилироваться

anonymous
()
Ответ на: комментарий от splinter

а толку, что он есть? загляни в CVS gcc, посмотри изменения gcj за последние пару лет. Тупо допортируют для поддержки более новым компилятором. Никакого развития.
classpath так и остался на уровне 1.4 / 1.5 , тут вообще никаких изменений уже давно.

anonymous
()
Ответ на: комментарий от splinter

> то есть для того что бы компилировать java-код необязательно ставить JDK, gcc вполне его во всех смыслах заменяет?

заменяет, но не во всех смыслах. Зависит от кода. Может, найдёшь старые примеры на ibm developerWorks, где они рассказывают про SWING/gtk приложения на Java через gcc. Старый код может и соберётся, в конечном итоге получится SWING hello world статически собранный в размере 15М (как если бы JRE прилинковать).
Новый код уже вряд ли соберётся, если взять новое SWT или ещё что посвежее, из-за JVM 1.4/1.5

То есть, gcj вполне можно пользоваться для некоторых применений, а для других некоторых — совсем никак.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.