Если Дружелюбный Кларк Кант посчитает, что ваш вопрос ересь, он действительно перевернет этот ответ. Подать это под "что возможно" не обязательно под "Джастин рекомендует". : -)
Один из вариантов - использовать IKVM.NET для обработки кода Java с использованием Mono . IKVM.NET позволяет запускать код Java поверх .NET или Mono CLR . Кто-то может сказать, что вы пропускаете JVM таким образом, хотя было бы точнее сказать, что IKVM.NET действительно является реализацией JVM, которая работает на CLR.
В любом случае, если вы сделаете это, у вас теперь есть возможность сделать опережающее время (AOT) компиляцию вашего кода с помощью Mono. То есть вы можете скомпилировать свой код вплоть до машинного, что означает, что вам не нужны ни CLR, ни JVM во время выполнения.
В отличие от сказанного Джеспером выше, использование компиляции AOT может на самом деле привести к повышению производительности. Хотя верно, что JVM (и CLR) выполняют некоторые оптимизации во время выполнения, которые невозможны во время компиляции, обратное также верно. Кроме того, одним из вариантов является использование LLVM для генерации кода, что обычно приводит к повышению производительности.
Вот в двух словах конвейер:
Ваш код -> IKVM.NET -> Mono -> LLVM -> Собственный исполняемый файл
Или просто используйте Java-компилятор, который предназначен для генерации AOT собственных исполняемых файлов с самого начала (например, GCJ или Excelsior Jet ).
Единственное место, в котором может быть полезен параметр Mono / IKVM.NET, - это если вы хотите использовать библиотеку Java как часть приложения для iPhone (используя MonoTouch ). В App Store разрешены только собственные двоичные файлы.
РЕДАКТИРОВАТЬ: Вы также можете использовать LLVM VMKit , чтобы скомпилировать код Java в машинный код. Концептуально это тот же процесс, который я описал с Mono, но не допускать этого неприятного CIL-материала.