Какие нативные компиляторы Java можно порекомендовать?

Я хотел бы знать, какие собственные компиляторы Java можно рекомендовать для компиляции кода Java в двоичные файлы Windows и Mac OS X.

Возможно, кто-то знает, какие компиляторы использовались для создания двоичных файлов Eclipse. Это не должно быть неправильным выбором.


person good_ingredient    schedule 19.07.2011    source источник
comment
Двоичные файлы eclipse не являются скомпилированными Java; это нативные программы, которые используют JNI для запуска обычной Java-программы.   -  person Ernest Friedman-Hill    schedule 19.07.2011
comment
Какую цель вы надеетесь достичь такой предварительной компиляцией?   -  person NPE    schedule 19.07.2011
comment
JVM может компилировать байт-код в собственный код на лету для вас. Есть несколько трюков, чтобы заставить его скомпилироваться. Какую проблему ты пытаешься решить?   -  person Peter Lawrey    schedule 19.07.2011
comment
Помимо причины, упомянутой ниже, я также подумал, что может быть выгодно быть независимым от установленной JRE.   -  person good_ingredient    schedule 19.07.2011
comment
Вы можете установить частную JRE вместе с вашим приложением. Есть инструменты, которые упаковывают их вместе или загружают JRE по запросу. Если вам также не нужна защита кода и/или другие потенциальные преимущества перехода на исходный код (более быстрый запуск, меньший объем памяти/диска, более высокая производительность — любой из них может не применяются к вашему конкретному приложению), собственная компиляция является излишним.   -  person Dmitry Leskov    schedule 20.07.2011
comment
знаете ли вы о ИКВМ? А РобоВМ?   -  person Janus Troelsen    schedule 14.02.2015


Ответы (2)


см. здесь... Короче говоря, ничего хорошего решение, которое я действительно рекомендую.

person ᆼᆺᆼ    schedule 19.07.2011
comment
Насколько я знаю, производительность нативно скомпилированной Java не лучше, чем Java, которая работает в виртуальной машине, но нативно скомпилированная Java запускается немного быстрее. Тем не менее, основной причиной будет удобство использования в форме соответствия ожиданиям, потому что большинство людей ищут исполняемый файл или приложение со значком для запуска приложения, но, возможно, лучше использовать двоичный файл только для запуска приложения, а затем пусть программа запустить в ВМ. - person good_ingredient; 19.07.2011
comment
Основная причина в том, что декомпиляторы Java не могут работать с Java, скомпилированной в собственном коде. Для удобства использования существует дюжина решений, которые объединяют или загружают JRE и устанавливают ее в каталог вашего приложения. - person Dmitry Leskov; 19.07.2011
comment
Ага, единственная причина использовать нативный компилятор Java — это защита кода? - person good_ingredient; 19.07.2011
comment
У меня есть опыт работы с JET-компилятором Excelsior, который на данный момент кажется единственным жизнеспособным вариантом, когда речь идет о собственной компиляции сложных приложений. Плюсы: затрудняет декомпиляцию вашего кода, немного улучшает время запуска. Минусы: стоимость (для коммерческих приложений), процесс сборки станет намного сложнее. - person ddso; 19.07.2011
comment
Спасибо. Это был очень осязаемый и практичный ответ. - person good_ingredient; 19.07.2011
comment
@Varga: Не могли бы вы добавить немного больше информации (возможно, из комментариев) к своему ответу? Как это, это немного редко. - person Paŭlo Ebermann; 19.07.2011
comment
@dosendoc: Я был бы признателен, если бы вы могли уточнить сложность, которую Excelsior JET добавляет к процессу сборки. В последние годы мы много вложили в простоту использования, так что, возможно, вы работали с какой-то старой версией? - person Dmitry Leskov; 20.07.2011
comment
Мы работаем с самой последней версией. Мы используем репозиторий Maven для управления зависимостями и строим с помощью Gradle на сервере CI. Мы используем шаблоны Freemarker, в которые внедряются пути зависимостей из локального кеша Gradle для создания файлов проекта Excelsior на лету. Сценарий сборки для полной сборки JET значительно сложнее, чем тот, который просто выполняет сборку по соглашению Maven и добавляет в пакет дистрибутива средство запуска JRE +. Там просто больше ручного вызова процессов и копирования файлов. Запуск сборки также займет довольно много времени. - person ddso; 21.07.2011

Eclipse использует в качестве пользовательского интерфейса SWT, который использует собственный пользовательский интерфейс платформы:

В Windows он выглядит как Windows, на Mac — как Mac и т. д. Он доступен для самых популярных платформ, ищите SWT для получения дополнительной информации.

Вероятно, это то, что вы видели или чувствуете, когда работаете с eclipse.
Это не только расширение exe.

person AlexWien    schedule 11.02.2013