Существует ли собственный Java AOT для Mac OSX?

Интересно, есть ли компилятор (ы) AOT для Mac для компиляции Java-приложений в собственные исполняемые файлы, что устраняет необходимость в JRE?

Я видел коммерческие примеры как для Windows, так и для Linux, но не смог найти ничего для Mac, кроме GCJ с открытым исходным кодом, который имеет ограниченный успех с некоторыми из java-библиотек тополя.

Собственный исполняемый файл для Mac избавит его от JRE и, возможно, позволит подписать его, что позволит приложениям, разработанным на Java, быть принятыми в магазин приложений.


person Community    schedule 19.02.2011    source источник


Ответы (2)


Install4J может скомпилировать вашу Java в собственное приложение OS X, но в системе все равно должна быть установлена ​​JRE. Install4J просто создает оболочку для вызова JRE.

person Slava Imeshev    schedule 31.08.2011
comment
Это не настоящее собственное приложение OS X, как вы сказали, это оболочка, и для нее все еще требуется JRE. Настоящий AOT скомпилирует код Java в настоящее родное приложение, поэтому таких зависимостей не будет. - person ; 02.09.2011

Для этого можно использовать Avian JVM. (статья в Википедии).

Вы можете скомпилировать свое приложение в автономный исполняемый файл, и оно поддерживает различные библиотеки классов: openjdk, реализацию библиотеки классов Android (даже если вы не используете на Android) и очень ограниченную пользовательскую библиотеку классов. (в основном они добавляют к нему методы, поскольку авторам нужны API для запуска собственных приложений).

В README в репозитории кода есть описание того, как внедрить VM и сгенерируйте «загрузочную» программу C++, которая запустит ваше приложение, и обратитесь к разделу «booimage», если вы хотите, чтобы AOT скомпилировала все методы и сгенерировала двоичный образ, устраняя необходимость JIT-компиляции во время выполнения.

Без загрузочного образа вы можете отправить jar-файлы и исполняемый файл, который их «запустит» (исполняемый файл будет встраивать виртуальную машину). С загрузочным образом файлы JAR будут дополнительно предварительно скомпилированы в собственный код.

С другой стороны, если вам просто нужен управляемый язык/платформа, вы также можете использовать .NET/Mono AOT< /а>. См. инструмент mkbundle, включенный в Mono 2.x.

person duncan    schedule 30.12.2013