Можно ли запустить результат работы jaotc на устройстве без jvm?

Рейтинг: 2Ответов: 2Опубликовано: 15.05.2023

В последние пару месяцев активно ищу способы преобразования байт-кода java в нативный код, то есть я хочу отказаться от кроссплатформености в силу простоты использования и распространения своих результатов работы с java.

Встречался с такими решениями и вот почему они не являются нужными мне решениями:

GraalVM Native Image

Невозможность работы с swing, awt и javafx.

Excelsior JET

Заброшена и максимально поддерживает Java 8, но я нашёл только ту, которая на java 7u40.

Launch4j, Jsmooth, Install4j

Они не переводят байт-код в нативный, но в принципе они более менее используемы, ведь если урезать jre с помощью jlink, тогда можно эту урезанную jre поместить с результатоми работы этих программ, а потом ещё и сделать установщик, но это не решение, нужное мне, ведь тут используется все еще jre, хоть она и стала портативной.

И вот сейчас я в принципе задумался об aot-компиляции, в java есть jaotc, которая может скомпилировать java в нативный код, но вот вопрос, я не нашёл в интернете чёткой информации, независимый ли этот нативный код? То есть можно ли его будет будь то exe или dll переместить на другой ПК, который никогда не слышал, что такое java и будет ли там работать этот нативный код?

Если да, то это решение моей проблемы, если нет, то подскажите, может вы знаете решение моей проблемы?

Ответы

▲ 2

Jaotc (Just Ahead Of Time Compiler) - это утилита, включенная в JDK начиная с версии 9, которая позволяет компилировать байт-код Java в нативный код. Однако, результат работы jaotc все еще требует JVM для выполнения, так как он генерирует код, который является частью JVM, а не полностью независимым исполняемым файлом.

Таким образом, вы не сможете запустить результат работы jaotc на устройстве без JVM. Это означает, что вы не сможете создать полностью независимый исполняемый файл, который можно было бы переместить на другой ПК, который никогда не слышал о Java, и ожидать, что он будет работать.

В настоящее время нет прямого способа компилировать Java в полностью независимый нативный код. GraalVM Native Image является наиболее близким к этому, но, как вы уже упомянули, он имеет свои ограничения.

▲ 0

Можно, но зачем?! Возьми в пример все пиратские лаунчеры майнкрафта. Они берут core сборку jvm, грузят её из своей папки. Весь твой вопрос сыпиться в прах с примером их работы. Бро они до сих пор работают на Java 8, и у них это отлично получается в плане инсталляции.

Если ты за performance, может я могу тебя обучить другому языку программирования? И не стоит использовать Java?