Какие доступны компиляторы, предназначенные для JVM или CLR, кроме компиляторов javac или Microsoft для .Net? - PullRequest
1 голос
/ 12 февраля 2012

Какие доступны компиляторы, предназначенные для JVM или CLR, кроме компиляторов javac или Microsoft для .Net?Почему у нас нет компиляторов для популярных языков, таких как C, C ++, которые предназначены для JVM или CLR?

Ответы [ 4 ]

3 голосов
/ 12 февраля 2012

В Википедии есть хорошая информация об этом:

Почему у нас нет компиляторов для популярных языков, таких как C, C ++, которые предназначены для JVM или CLR?

Что ж, есть C ++ / CLI.Ссылки:

3 голосов
/ 12 февраля 2012

Когда дело доходит до .NET есть моно .

fsf имеет Java-компилятор как часть GCC .

Что касается того, почему нет существующих компиляторов, которые компилируют из C / C ++ в JVM / CLR - не уверен, что это так, но помимо совершенно разных моделей памяти, вы должны вспомнить, что эти языки также частично определены сопровождающими библиотеками (скажем, libc) - они не маленькие и также должны быть преобразованы, а не маленьким подвигом.

1 голос
/ 12 февраля 2012

Существует множество компиляторов, которые компилируются в байт-код, особенно в мире Java, где уровень байт-кода находится на очень высоком уровне, поэтому написать компилятор для него относительно просто.

ДляC проблемой является то, что абстракция компьютера, необходимого для скомпилированной программы, находится на более низком уровне, чем предусмотрено JVM.Например, чтобы арифметика указателей работала, у вас должен быть один большой кусок памяти, в котором размещено все, что противоречит представлению Java о мире как о множестве независимых объектов.

Однако это можно сделать. NestedVM решает эту проблему путем компиляции программ на C в MIPS-CPU с настраиваемой библиотекой времени выполнения.Сгенерированный код затем интерпретируется напрямую или как байтовые коды.

0 голосов
/ 12 февраля 2012

RemObjects имеет компиляторы Oxygene для JVM и .NET (он же Pascal для Java и .NET).

http://www.remobjects.com/oxygene/

У Microsoft есть компилятор VC ++ для CLR, но это расширение C ++ (C ++ / CLR). Из-за этого никто не пытается адаптировать C ++ для JVM (насколько я знаю).

C не является языком OO, поэтому, если он не специально адаптирован (например, C ++ / CLR), он не подходит ни для JVM, ни для CLR.

...