если файлы .jar также являются исполняемыми?
большинство? сударь, мне кажется, вы заблуждаетесь
Если мы говорим про Виндовс то да
90-99% java программ выпускаются в jar, без разницы на виндовс, линукс, мак, потому что он работает через java virtual machine
А jarник вообще можно без какого то яп, который компилируется напрямую в бинарник обернуть в exeшник?
Джавы бывают разные, и для корректного запуска нужно установить правильную версию jre. В exe jre зашит.
graalvm native image
Необязательно. Можно через jpackage собрать образ. Там просто будет виртуальная машина с нужными библиотеками и твоим кодом в одном архиве
эт не бинарник, это инсталлятор, нет?
Кстати, а почему jar не работает в андроид?\
У виртуальной машины андроида другой бинарный формат хранения кода.
Дам два тулкита, jlink и jpackage, первый как раз и собер бинарь.
jpackage тоже делает бинарь :) напрямую с jlink работать без модулей - так себе удовольствие
да, через плагины. Но итоговое приложения на JavaFX я собрал уже через рантайм плагин
Смотри просто что он выплевывает: $ jlink --module-path . --output artifact --add-modules pg $ ls artifact bin conf include legal lib release Хм, может там всё запаковано в bin/java, а всё остальное это какие-то временные файлы? $ cp artifact/bin/java /tmp/launcher $ /tmp/launcher /tmp/launcher: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory Это что угодно, но не бинарь, ладно бы ему системной библиотеки не хватало Давайте пойдем дальше и грохнем файл lib/modules $ mv artifact/lib/modules{,.shadow} $ artifact/bin/java Error occurred during initialization of VM Failed setting boot class path Ребят, какой бинарник, вы о чем вообще? У него classpath снаружи валяется.
Никто не обещал бинарь в виде одного файла. Исполняемый файл с зависимостями в этом же каталоге, что ещё нужно?
у вас плохое понимание что такое бинарь, бинарь это не значить что БЕЗ ВМ
Бинарник это значит исполняемый файл, который передается сам по себе, отдельно, и запускается где нужно. ИСполняемый файл, не папка, которую надо зиповать и раззиповывать.
Что тогда не бинарь?
хм, ну может exe делает имено jpackage я давно делал
ПС получается 99.9999999% програм не бинарники, потому что собирать все в один файл - моветон. А иметь установщик, который распаковывает и делает красивый "ярлычок" - уже давно стандарт. И там один бинарь потом загружает кучу других бинарей/либ/файлов etc. Под бинарем я понимаю (в даном случае) что запуск идет не через скрипт, или jar/module а двой кликом по файлу бинарю-который уже дальше все запускает
Обсуждают сегодня