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

В последние пару месяцев активно ищу способы преобразования байт-кода 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 шт):

Автор решения: Eugene X

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

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

→ Ссылка
Автор решения: augustoff7

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

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

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

→ Ссылка