Montag, 20. August 2012

Oracle JRE 7 für Mac OS X 10.7 und OS X 10.8

Mit dem letzte Woche veröffentlichten JRE 7u6 hat Oracle nach dem Mac-JDK im Frühjahr nun erstmals ein reines JRE für Mac OS X ab Version 10.7.3 (d.h. auch für OS X 10.8.x) freigegeben. Endanwender können die Software nun endlich vereinfacht von java.com herunterladen und müssen sich nicht mehr durch die Entwicklerseiten klicken. Entsprechend einfach ist die Installation – das JRE wird als DMG ausgeliefert:
Das übliche Mac OS X-Installationsprogramm führt dann durch die Installation:
Im Unterschied zum JDK werden keine Entwickler-Werkzeuge und -Dokumentation mitgeliefert. Genau genommen liefert Oracle mit dem Mac-JRE im Wesentlichen nur das Applet-Plugin für Web-Browser aus, d.h. Anwendungen, die sich auf das java-Kommandozeilentool verlassen, laufen damit nicht. Mit dem Oracle-Applet-Plugin wird Java 7 auch zur Standard-Version im Browser, unabhängig davon, ob eine Apple-Java-6-Umgebung installiert ist.

Weil Oracles Java nicht mehr über die Softwareaktualisierung von Mac OS X auf den neuesten Stand gebracht wird, ist es gut, dass das JRE eine Auto-Update-Funktion mitbringt. Oracle hat dafür das Rad nicht neu erfunden, sondern greift auf das bekannte Sparkle-Framework zurück.

Zusätzlich installiert das JRE in den Mac-Systemeinstellungen das von anderen Betriebssystemen bekannte "Java Control Panel":
Leider ist das Control Panel noch nicht wirklich gut in OS X integriert, denn nach dem Klick auf das Java-Symbol öffnet sich das Panel in einem separaten Fenster:
Immerhin findet sich dadurch jeder, der das Java Control Panel von anderen Systemen kennt, sofort bzgl. Netzwerk-Proxies, Zertifikaten etc. zurecht.

Für Entwickler ist klar, dass sie sich das JDK 7 installieren (in dem u.a. das JRE enthalten ist), wahrscheinlich zusätzlich zu Apples Java-6-Implementierung. Welches Java aber sollte sich ein normaler Endanwender auf seinem Mac-System installieren? Java 7 ist seit über einem Jahr verfügbar, Java 6 wird von Oracle nur noch bis Februar 2013 öffentlich gepflegt werden (dann wird ziemlich sicher auch Apple keine Java-6-Updates mehr anbieten) – das spricht für Java 7. Weil aber viele Mac-Java-Anwendungen durch ihren Start-Code noch an Java 6 gebunden sind, muss man zur Zeit eigentlich noch zwingend Apples Java 6 installieren. Also: Am besten installiert man derzeit beide Java-Versionen – und von Java 7 am besten das JDK 7, damit alle Tools mitinstalliert werden, die eventuell zum Starten einer Anwendung benötigt werden.

Wenn man bereits ein JDK 7 auf dem Rechner hat und eine neue Version davon installiert, wird die alte Version – anders als beim JRE – nicht vom Rechner gelöscht, sondern steht zusätzlich zur Verfügung (Entwickler wollen ja durchaus mal unterschiedliche Java-7-Versionen im Vergleich testen). Man sollte daher nach der Installation unbedingt in den Java-Einstellungen (im Ordner "Dienstprogramme") prüfen (und ggfs. korrigieren), welches Java-7-Update aktiv ist:

Und ein Hinweis zum Schluss: Wenn man nur das JRE installiert hat, taucht dies in den Java-Einstellungen nicht auf; dort werden nur die auf dem Rechner vorhandenen JDKs aufgelistet.

Mittwoch, 1. August 2012

OS X 10.8 "Mountain Lion", Java und der Gatekeeper

Vor einer Woche wurde (Mac) OS X 10.8 "Mountain Lion" veröffentlicht. Wie schon bei der Vorgängerversion liefert Apple keine Java-Laufzeitumgebung mehr mit dem Berglöwen/Puma aus – bei einem Update von 10.7.x wird eine bestehende Java 6-Installation sogar entfernt und muss erneut installiert werden:
Der Vergleich mit der Java-Installation unter 10.7 zeigt einen kleinen, aber wichtigen Unterschied: Es wird nun explizit eine Java SE 6-Runtime erwähnt. D.h. selbst wenn man Java 7 installiert hat, muss man zum Ausführen eines Java Application Bundles zusätzlich das alte Java 6 herunterladen. Dies ist das derzeit aktuelle Apple-Java-Update, das ursprünglich für Mac OS X 10.7 veröffentlicht wurde:
Ein Problem für Java-Anwendungen entsteht durch den Gatekeeper, der ab OS X 10.8 dafür sorgt, dass normalerweise nur Anwendungen aus dem App Store bzw. von zertifizierten Entwicklern gestartet werden können. Der Java Application Stub, mit dem die meisten Mac OS X-Java Application Bundles gestartet werden, enthält aber kein oder kein passendes Zertifikat (je nachdem, wie alt der Stub ist), was zu einer ziemlich unpassenden Fehlermeldung führt:
Mit ein bisschen Trickserei (Austausch des Application Stubs bzw. Entfernen der Prüfsumme / des Zertifikats) kann man die Fehlermeldung zwar etwas verständlicher bekommen ...
... aber das ist nicht im Sinne der Erfinder / nicht ganz einfach / zu instabil für künftige OS X-Versionen. Kurzum: Tun Sie's nicht. Eine Möglichkeit für den Anwender, Java-Anwendungen trotzdem noch starten zu können, besteht darin, den Gatekeeper in den Systemeinstellungen zu deaktivieren (auf "Keine Einschränkungen" stellen):
Das ist nun allerdings auch nicht im Sinne der zusätzlichen Sicherheit, die OS X 10.8 bringen soll, weil dann wirklich alle Anwendungen (auch die nativen Mac-Anwendungen) ungeprüft ausgeführt werden. Besser ist es, gezielt nur die gewünschte Java-Anwendung ohne Gatekeeper-Prüfung aufzurufen, was man über den "Öffnen"-Menüpunkt im Kontextmenü erreicht:


OS X verbietet das Starten nun nicht mehr pauschal, sondern fragt nach, ob man die vermeintlich unsichere Anwendung wirklich ausführen möchte:

Leider klappt das – je nach verwendetem Application Stub – nicht mit allen Java-Anwendungen. JD-GUI kann man so aufrufen, ArgoUML und TV-Browser beispielsweise nicht... Für letztere muss der Gatekeeper wie oben beschrieben deaktiviert werden. Kleiner Trost: Wenn man einmal eine Java-Anwendung gestartet hat, merkt sich der OS X dies, man kann den Gatekeeper anschließend also wieder aktivieren.

Am besten wäre es allerdings, wenn die Entwickler von Java-Anwendungen den Gatekeeper aktiv unterstützten und ihre Applikation signierten. Bei Oracle gibt es dazu kompakte Informationen. Und vor kurzem hat sich jemand die Mühe gemacht, ausführlich zu beschreiben, wie man seine Java-Programme im Mac App Store veröffentlichen kann.