Od pewnego czasu nasza aplikacja Java jest dostarczana z pakietem JRE w systemie Windows. Mamy małą aplikację uruchamiającą napisaną w języku C, która sprawia, że aplikacja używa naszego JRE z pakietem. Teraz dzięki krucjacie Apple'a, by powoli zabijać Javę, zdecydowaliśmy, że byłoby to rozważne dla czegoś podobnego na OSX. Jaki byłby najlepszy sposób użycia JRE w pakiecie na OSX?Korzystanie z dołączonego środowiska JRE w systemie OSX
Odpowiedz
Nawet jeśli uważam, że to zły pomysł (patrz niżej) można po prostu pakiet JVM jak OpenJDK a następnie uruchomić aplikację z małym skrypt dzwoniąc java
wykonywalny.
Wskazówka: Nie mam pojęcia, czy redystrybucji JVM jest dozwolony (prawną), należy sprawdzić umowę przed pobraniem
Pierwszy problem będziesz mieć jest to, że w tej chwili jest tylko Wersja Apple lub Oracle Java 7u6 Mac OS X Port Podgląd dewelopera Wersja (która jest tylko podglądem). (np. http://jdk7.java.net/macportpreview/). To się zmieni w przyszłości, gdy Apple przestanie dostarczać swoją własną wersję. W tej chwili utknąłeś z podglądem działającym tylko na Lwie. Ale pokażę ci przykład.
Pobierz instalator, zamontować obraz dysku, kliknij prawym przyciskiem na wtyczki, wybierz „Pokaż treść pakiet” wyodrębnić folder
Home
, zawiera JRENastępnie można sprawdzić z
$ ./Home/bin/java java version "1.7.0_06-ea" Java(TM) SE Runtime Environment (build 1.7.0_06-ea-b18) Java HotSpot(TM) 64-Bit Server VM (build 23.2-b08, mixed mode)
Chciałbym następnie zmień nazwę
Home
w coś jakjre
Jeśli pakiet ten folder z aplikacji będzie po prostu trzeba to mały skrypt
#!/bin/sh ./jre/bin/java -classpath myniceapplication.jar
Aby móc zbudować aplikację, trzeba będzie folder zawierający
applicationname.app/Contents/MacOS
ci skrypt (który powinien być nazwanyapplicationname
).Teraz wydaje się, że trzeba zużywać ścieżki bezwzględne w tych skryptach
/Path/applicationname.app/Contents/MacOS/jre/bin/java -classpath myniceapplication.jar
sądzę, że istnieje lepsze rozwiązanie do budowy aplikacji pakiet Mac OS X, ale nie jestem ekspertem. Ten przykład miał pokazać, że może działać.
Podsumowując:
Sprawdź, czy dopuszczalne jest, aby rozprowadzić JRE (i sprawdzić jakie są warunki)
Nie chciałbym to zrobić, ponieważ trzeba będzie go utrzymać aktualizował i aktualizował aplikację za każdym razem, gdy pojawia się aktualizacja zabezpieczeń JRE
Jako użytkownik zaufałbym większej ilości Oracle niż przypadkowi programiści (nic al :-) uzyskać JRE
Po zainstalowaniu 'jdk-7u5-macosx-x64.dmg' z Oracle, nie jestem pewien, gdzie znaleźć wtyczkę, aby kliknąć prawym przyciskiem myszy (bez instalacji), ponieważ zawiera ona tylko' Aktualizację JDK 7 05.pkg 'i po kliknięciu prawym przyciskiem myszy nie ma elementu menu" Pokaż zawartość paczki ". – Mot
Nie, OpenJDK nie zawiera pre-kompilowanej kopii (musisz ją zbudować, o ile pamiętam). Łącze w mojej odpowiedzi wskazuje na wtyczkę Java zawierającą kopię JRE (http://www.java.net/download/jdk7u6/archive/b19/binaries/JavaAppletPlugin.dmg) – Matteo
Twoje łącze wskazuje na kompilację podglądu . Miałem na myśli JDK, który można pobrać ze [standardowej strony Oracle] (http://www.oracle.com/technetwork/java/javase/downloads/index.html). Środowisko JRE dla innych platform obecnie nie jest dostępne dla OSX. – Mot
Istnieją pewne szczegółowe instrukcje w this blog post o łączenie JRE w swojej aplikacji, i umożliwiając mu zostać złożone do App Store.
Jestem autorem wpisu na blogu połączonego przez @Daniela w jego odpowiedzi. Udało mi się połączyć pakiet OpenJDK i opublikować aplikację Java w Mac App Store.
Po pierwsze, pozwól mi poprawić niektóre problemy w zaakceptowanej odpowiedzi.
- Całkowicie legalne jest pakowanie OpenJDK i redystrybucja.
- OpenJDK nie działa tylko na Lion, użyłem go na pre-Lion do Mountain Lion. Trzeba go załatać, aby działał na 32-bitowym systemie operacyjnym.
- OpenJDK jest w wersji beta, ale nadal możliwe jest uruchomienie złożonej aplikacji Swing. Istnieje kilka problemów na OSX, ale opisałem jak je naprawić w this post.
Nie ma potrzeby, aby utworzyć dowolny skrypt w sposób opisany w @ odpowiedź Matteo, można użyć aplikacji o nazwie AppBundler, opublikowane przez Oracle, aby utwórz natywny plik wykonywalny, który uruchomi twoją aplikację i utworzy pakiet natywny. AppBundler wygeneruje również plik Info.plist zawierający informacje o tym, jak uruchomić aplikację, np. Nazwę pliku wykonywalnego do uruchomienia, argumenty Java itp.
Od wersji 10.7.5 i wyższej Twoja aplikacja musi być Gatekeeper kompatybilny i podpisany (musisz więc zarejestrować się w płatnym programie dla programistów komputerów Mac), jeśli nie chcesz, aby okno dialogowe informujące, że twoja aplikacja pochodzi od niezidentyfikowanego programisty, pojawi się, gdy użytkownik otworzy go po raz pierwszy.
Aby zostać wdrożonym w App Store, Twoja aplikacja musi również działać w środowisku piaskownicy, ale nie jest to ścisły wymóg, jeśli rozpowszechniasz go poza App Store.
Należy pamiętać, że AppBundler nie ma niektórych przydatnych funkcji, może być zainteresowany this fork.
Ta odpowiedź lub odpowiedź @ Daniela powinna być zaakceptowaną odpowiedzią. Odpowiadają dokładnie i całkowicie na pytania, a także na autorytatywne informacje bezpośrednio od Oracle. – Jason
Oto przewodnik z Oracle samych, w jaki sposób pakiet JRE do rozprowadzania na Apple, krok po kroku: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html
Ta odpowiedź lub odpowiedź @ Marco powinna być zaakceptowaną odpowiedzią. Są to kroki bezpośrednio od Oracle, dotyczące pakowania aplikacji Java dla Mac i Mac App Store. – Jason
- 1. Instalowanie środowiska Python/Sphinx w systemie Windows?
- 2. Uruchamianie pliku JAR przy użyciu określonego środowiska JRE
- 3. Jakie są główne różnice w uruchamianiu aplikacji w środowisku JRE serwera względem środowiska JRE?
- 4. Jak wykryć zainstalowane środowisko JRE dla środowiska Sun/Oracle w systemie Windows?
- 5. Katalog instalacyjny JRE w systemie Windows
- 6. Jak utworzyć zrzut sterty za pomocą środowiska JRE?
- 7. Korzystanie z Eclipse PyDev na OSX
- 8. Android studio 1.1 - zmiana środowiska JRE używanego do uruchamiania studio
- 9. AEC (echa Pomoc) w OSX Korzystanie AudioQueue
- 10. Jak obniżyć wersję JRE/JDK na Mac OSX?
- 11. Eclipse wciąż używa java 6 as jre na Mac OSX
- 12. Korzystanie z zasobu w systemie Windows
- 13. Korzystanie z funkcji putSerializable w systemie Android
- 14. Programowanie programowe domyślnie w systemie OSX
- 15. php.ini Konfiguracja w systemie MAC OSX
- 16. W jaki sposób można spakować plik wykonywalny za pomocą przenośnego środowiska JRE?
- 17. Jak edytować $ PATH (.bash_profile) w systemie OSX?
- 18. OSX - wyłączanie gestów dotykowych w całym systemie
- 19. W systemie OSX w jaki sposób gradient wypełnić wypełnienie ścieżki?
- 20. Czytanie pliku DWARF w systemie Mac OSX
- 21. Rejestrowanie funkcji niestandardowych powłoki w systemie (OSX)
- 22. LLVM: Niepowodzenie ładowania optymalizacji w systemie OSX
- 23. Skróty klawiaturowe Eclipse w systemie Mac OSX
- 24. Korzystanie z JRE i JDK (zainstalowane JREs ?!) w Eclipse, co jest lepsze?
- 25. Jak utworzyć bibliotekę statyczną z istniejącego środowiska w systemie iOS?
- 26. Czy korzystanie z wirtualnego środowiska wpływa na wydajność aplikacji internetowej?
- 27. JVM Implementacja JRE
- 28. Brak biblioteki narzędzi JRE tools.jar
- 29. W jaki sposób środowisko Eclipse kompiluje klasy tylko z JRE?
- 30. JRE dołączone do JDK kontra samodzielny JRE
Apple nie chce zabić Java na Mac OS X, ale będą używać standardowej JVM Oracle zamiast własnej wersji. – Matteo
Czy mówisz, że mogę połączyć JRE z Oracle i używać go w aplikacji Java na komputer Mac? – Mike2012
Możesz, ale nie rozumiem, dlaczego powinieneś połączyć JVM z aplikacją. Będziesz musiał go aktualizować, zwłaszcza w przypadku aktualizacji zabezpieczeń. Nigdy nie ufałbym pakietowej maszynie JVM. Mówię tylko, że Apple nie porzuciło Javy, ale zdecydowało się nie budować własnego i używać tego przez Oracle. – Matteo