Як можна розповсюджувати настільну гру Java Java без залежності часу виконання Java?


9

Чи можливо перетворити програму Java в окремий пакет, який працює "поза коробкою"? Кінцевий користувач не повинен вимагати встановлення жодного Java JRE, а також інсталятор не повинен містити JRE та встановлювати його для користувача.

Остаточний дистрибутив повинен містити вбудований виконуваний файл (сподіваємось, один для кожної з Windows, Mac та Linux), а також звичайні файли даних та будь-які додаткові JAR, якщо потрібно. Я спеціально не шукаю рішення "один файл" - я б хотів, щоб файли даних не були захищені.

Як це можна зробити?

Відповіді:


8

Основний момент полягає в тому, що кінцевий користувач не повинен вимагати встановлення жодного Java JRE, а також інсталятор не повинен містити JRE та встановлювати його для користувача

Ви можете використовувати вихідний / байт-код Java для компіляторів машинного коду. Є Excelsior JET для Windows та Linux (потрібна ліцензія) та GNU Compiler для Java, який є старим.

Якщо нормально містити Java у вашій грі, не встановлюючи її, то, ймовірно, ви можете пакувати Java Runtime зі своєю грою та використовувати сценарій запуску, щоб встановити JAVA_HOMEваше місце JRT до запуску гри.

EDIT: (відповідь на коментар) Використовуючи другий варіант, вам все одно знадобляться різні збірки для різних платформ, використовуючи відповідну програму виконання Java для цієї платформи.

EDIT2: Асло дивіться останній коментар Дмитра.


3
Якщо ваша гра не комерційна, ви можете отримати безкоштовну ліцензію Excelsior JET .
Дмитро Лесков

Другий варіант звучить добре, але якщо я пакую свій Windows JRE, чи це кросплатформна форма? Як і у Excelsior, чи потрібно мені запускати такі компілятори на трьох різних ОС?
leokhorn

1
Вам потрібно буде згрупувати цю платформу JRE з кожним випуском, але по суті це залишаться крос-платформи.
Дерек

1
@leokhorn У певний момент має бути власний код. Або вам доведеться компілювати до нативного коду, або вам доведеться запускати на нативної VM. Немає плану С.
Адріан

1
GCJ зараз офіційно мертвий , тоді як Excelsior JET Standard Edition також стає безкоштовним для комерційного використання , хоча якщо ваша єдина проблема - простота розповсюдження, є багато альтернатив
Дмитро Лесков

1

Для Mac див. Документацію Oracle щодо упаковки програми Java для Mac . Вони встановили Java 7, щоб ви могли зв’язати час виконання в пакет програм, що містить ваші jar файли (.app - це папка, яка справді вважається виконуваною), яка потрібна для розповсюдження в Mac App Store. По суті, пакет .app робить здебільшого те саме, що пропонує відповідь JAVA_HOME Eren, але пакується як "рідний" додаток для Mac.

Для розповсюдження без Mac App Store, ви можете піти від того, що не підписуєте додаток, повідомляючи користувачам Mountain Lion, що вони можуть обійти Гейтчер , натиснувши правою кнопкою миші (або ctrl + клацанням) у вашій програмі та натиснувши "Відкрити", коли вони спочатку відкрийте додаток. Це все ще попередить їх, що додаток не підписано, але це дозволить їм відкрити його в будь-якому випадку, а потім дозволить подвійним клацанням на додаток для наступних відкриттів.

(бічна примітка: ви також можете піти з позначення скриптів оболонки в стилі Linux, а потім створити навколо цього пакет .app. NetBeans робить це на Mac і Linux, хоча без пакетів JRE / JDK)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.