Чи є спосіб скомпілювати з Java в автономний (або бібліотечний) машинний код, не вимагаючи JVM?
Чи є спосіб скомпілювати з Java в автономний (або бібліотечний) машинний код, не вимагаючи JVM?
Відповіді:
Раніше існував інструмент під назвою GCJ, який був частиною GCC, але його було видалено . Тепер усі посилання на сайті GCC переспрямовують на їх еквіваленти, що не належать до GCJ.
Примітка: усі коментарі посилалися на мою оригінальну відповідь, де ви можете скомпілювати Java до власного коду за допомогою GCJ.
Так!
Oracle працює над GraalVm, який підтримує власні образи. Перевірте тут: https://www.graalvm.org/
Власне зображення Власне зображення із SDK GraalVM допомагає скоротити час запуску програм Java та надає їм менший розмір. Фактично, це перетворення байт-коду, який працює на JVM (на будь-якій платформі), у власний код для певної ОС / платформи - звідки і походить продуктивність. Він використовує агресивну оптимізацію, що випереджає час (AOT), щоб досягти гарної продуктивності.
Побачити більше:
Підсумок
https://www.graalvm.org/docs/getting-started/#native-images
Демонстраційні програми: Власні зображення для швидшого запуску
https://www.graalvm.org/docs/examples/native-list-dir/
Детально: 'Попередня компіляція'
https://www.graalvm.org/docs/reference-manual/aot-compilation/
Windows
лише програми для іграшок, але все, що є більш досконалим та / або при використанні, GUI
ще не зовсім. Twitter
ймовірно, використовує Linux
без будь-якого, GUI
але вони, ймовірно, використовують і комерційну версію, тоді як я лише пробував спільну. Це може працювати в деяких випадках використання, але Windows
настільні програми Java не є одними з них, що все ще змушує проект трохи розчаровувати. Excelsior JET
міг зробити це надійно, але зараз це припинено.
Excelsior JET - комерційний компілятор Java для власного коду. Однак його було припинено в травні 2019 року.
Так, JIT у JVM робить саме це для вас.
Насправді він може виробляти швидший код, ніж заздалегідь компілювати його, оскільки може генерувати код, оптимізований для конкретної платформи на основі використання коду під час виконання.
JVM завжди задіяний, навіть якщо дуже великий відсоток компілюється до власного коду, оскільки ви можете динамічно завантажувати та запускати байт-код.
Інша можливість була б RoboVM
. Однак, схоже, це працює лише на Linux
, iOS
і Mac OS X
.
На сьогодні проект все ще здається дещо живим, на відміну від деяких публікацій в Інтернеті, які заявляють, що проект мертвий .