Jak można dystrybuować grę Java na komputery stacjonarne bez zależności środowiska wykonawczego Java?


9

Czy można zamienić aplikację Java w autonomiczny pakiet, który działa „po wyjęciu z pudełka”? Użytkownik końcowy nie powinien być zobowiązany do instalowania środowiska JRE Java ani instalatora nie może zawierać środowiska JRE i instalować go dla użytkownika.

Ostateczna dystrybucja powinna zawierać natywny plik wykonywalny (mam nadzieję, że jeden dla każdego z systemów Windows, Mac i Linux) wraz ze zwykłymi plikami danych i wszelkimi dodatkowymi plikami JAR w razie potrzeby. Nie szukam rozwiązania „jednego pliku” - właściwie chciałbym, aby pliki danych były nieobsługiwane.

Jak można to zrobić?

Odpowiedzi:


8

Najważniejsze jest to, że użytkownik końcowy nie powinien być zobowiązany do zainstalowania środowiska JRE Java, ani też instalator nie powinien zawierać środowiska JRE i instalować go dla użytkownika

Możesz użyć kodu źródłowego / bajtowego Java do kompilacji kodu maszynowego. Istnieją Excelsior JET dla Windows i Linux (wymaga licencji) oraz GNU Compiler for Java, który jest stary.

Jeśli możesz zawierać Javę w grze bez jej instalowania, prawdopodobnie możesz spakować Java Runtime ze swoją grą i użyć skryptu startowego, aby ustawić JAVA_HOMElokalizację JRT przed uruchomieniem gry.

EDYCJA: (komentarz) Korzystając z drugiej opcji, nadal będziesz potrzebować różnych wersji dla różnych platform, używając odpowiedniego środowiska wykonawczego Java dla tej platformy.

EDYCJA 2: Zobacz także ostatni komentarz Dmitry'ego .


3
Jeśli Twoja gra jest niekomercyjna, możesz uzyskać bezpłatną licencję Excelsior JET .
Dmitrij Leskow

Druga opcja brzmi dobrze, ale jeśli spakuję środowisko JRE dla systemu Windows, czy jest to struktura krzyżowa? Podobnie w przypadku Excelsior, czy musiałbym uruchamiać takie kompilatory na trzech różnych systemach operacyjnych?
leokhorn

1
Będziesz musiał połączyć tę platformę JRE z każdą wersją, ale zasadniczo pozostanie ona na różnych platformach.
Derek

1
@leokhorn W pewnym momencie musi istnieć kod natywny. Musisz skompilować do natywnego kodu lub uruchomić na natywnej maszynie wirtualnej. Nie ma planu C.
Adrian

1
GCJ jest teraz oficjalnie martwy , podczas gdy Excelsior JET Standard Edition stał się również darmowy do użytku komercyjnego , chociaż jeśli twoją jedyną troską jest łatwość dystrybucji, istnieje wiele alternatyw
Dmitry Leskov

1

W przypadku komputerów Mac zobacz dokumentację Oracle dotyczącą pakowania aplikacji Java na komputery Mac . Skonfigurowali Javę 7, aby można było spakować środowisko wykonawcze w pakiet aplikacji zawierający pliki jar (.app to tak naprawdę plik wykonywalny), który jest wymagany do dystrybucji w Mac App Store. Zasadniczo pakiet .app działa w większości tak samo, jak sugeruje odpowiedź JAVA_HOME Erena, ale jest spakowany jako „natywna” aplikacja na komputery Mac.

W przypadku dystrybucji bez Mac App Store możesz uniknąć podpisywania aplikacji, informując użytkowników Mountain Lion, że mogą ominąć Gatekeeper , klikając prawym przyciskiem myszy (lub przytrzymując klawisz Ctrl + kliknięcie) aplikację i klikając „Otwórz”, gdy najpierw otwórz aplikację. Nadal ostrzeże ich to, że aplikacja nie jest podpisana, ale i tak pozwoli im ją otworzyć, a następnie pozwoli dwukrotnie kliknąć aplikację, aby otworzyć ją później.

(uwaga dodatkowa: możesz także uciec od oznaczania skryptów powłoki w stylu Linux jako wykonywalnych, a następnie zbudować wokół nich pakiet .app. NetBeans robi to na komputerach Mac i Linux, ale bez dołączonego JRE / JDK)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.