2012-07-05 12 views
15

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

+0

Apple nie chce zabić Java na Mac OS X, ale będą używać standardowej JVM Oracle zamiast własnej wersji. – Matteo

+0

Czy mówisz, że mogę połączyć JRE z Oracle i używać go w aplikacji Java na komputer Mac? – Mike2012

+0

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

Odpowiedz

6

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 JRE

  • Nastę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ś jak jre

  • 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ć nazwany applicationname).

  • 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

+0

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

+0

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

+0

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

2

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.

15

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.

+0

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

Powiązane problemy