Вопрос

Есть ли способ запустить простой c-код поверх JVM?
Не подключается через JNI, работает, как вы можете запускать ruby-код через JRuby или javascript через Rhino.

Если текущего решения нет, что бы вы порекомендовали мне сделать?
Очевидно, я хочу использовать как можно больше частичных решений, чтобы это произошло.

ANTLR кажется хорошим местом для начала, поскольку имеет полную реализацию грамматики "ANSI C"...
должен ли я создать "игрушечную" виртуальную машину поверх JVM, используя сгенерированный ANTLR код?

Это было полезно?

Решение

Обновлено 2012-01-26:Согласно эта страница на сайте компании продукт был выкуплен и больше не доступен.

ДА.

Вот коммерческий компилятор C, который создает байт-код JVM.

Другие советы

Есть две другие возможности, обе с открытым исходным кодом:

JPC эмулирует весь компьютер x86 в JVM и способен запускать как DOS, так и Linux.

NestedVM обеспечивает двоичный перевод байт-кода Java.Это делается путем компиляции GCC в двоичный файл MIPS, который затем преобразуется в файл класса Java.Следовательно, любое приложение, написанное на C, C ++, Fortran или любом другом языке, поддерживаемом GCC, может быть запущено на 100% чистой Java без изменений исходного кода.

Может быть, не совсем то, что вам нужно, но коммерческий вариант - это http://www.axiomsol.com/

Кажется , что LLJVM может также соответствовать вашим требованиям.

LLJVM:Исходный код сначала компилируется в промежуточное представление LLVM (IR) с помощью интерфейса, такого как llvm-gcc или clang.LLVM IR затем преобразуется в ассемблерный код Jasmin, связывается с другими классами Java, а затем собирается в байт-код JVM.

По состоянию на 2016 год существует молодой, но многообещающий вариант под названием gcc-мост.Его цель состоит в том, чтобы использовать реализацию R.Цель состоит в том, чтобы использовать R-библиотеки, написанные на C или Fortran.Но gcc-bridge можно использовать независимо как обычный плагин maven.Также смотрите gcc-бригда-пример.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top