Alex Online Today

some experience to be shared

By

Java:deprecated – welche Strategie verfolgt Apple?

Kurz nach Vorstellung des neuen Macbook Air hat Apple auch ein Update für Java veröffentlicht. In den release Notes ist folgendes prominent an erster Stelle zu lesen:

As of the release of Java for Mac OS X 10.6 Update 3, the version of Java that is ported by Apple, and that ships with Mac OS X, is deprecated.
This means that the Apple-produced runtime will not be maintained at the same level, and may be removed from future versions of Mac OS X. The Java runtime shipping in Mac OS X 10.6 Snow Leopard, and Mac OS X 10.5 Leopard, will continue to be supported and maintained through the standard support cycles of those products.

darauf hat mich vorhin ein Artikel auf heise.de aufmerksam gemacht.

Welche Bedeutung hat die Java Runtime auf der Mac Plattform? Einige Fakten

- Die Java Runtime dient als Grundlage für viele Anwendungen, von denen einige auch nur deshalb für den Mac portiert wurden, da sich durch die Verwendung von Java der Aufwand in Grenzen hält.
- Besonders beliebt war Java auf dem Mac auch deshalb, weil es stets mit dem Betriebsystem mitgeliefert wurde. Bis heute ist die JRE auf jedem Mac vorinstalliert.
- Die gute Integration erlaubt, dass viele Java Anwendungen optisch nicht von Cocoa Anwendungen (der nativen Mac Umgebung) zu unterscheiden sind.

Die Alternative
- z.B. für Windows wurde die Java Runtime immer von Oracle bzw. Sun entwickelt.
- Das Open Source Projekt SoyLatte bietet schon seit langem aktuellere Releases des JDK für die Mac Plattform (insbesondere relevant für Entwickler).

Die möglichen Gründe für Apple von der eigenen Runtime abzuweichen?
- Apple möchte den Mac als Anwendungsplattform geschlossener gestalten und versucht zukünftig ausschließlich auf Cocoa zu setzen.
- Apple sieht in der Entwicklung von Java auf Clientseite keinen so großen Nutzen mehr und hofft auf andere Anbieter (Oracle, Open Source Community).
- Apple ist von der neuen Abmahn-Politik Oracles eingeschüchtert und möchte einen Rechtsstreit verhindern.

Was bedeutet das für die Zukunft von Java auf dem Mac?

Hier sind verschiedene Szenarien möglich, manche machen den Mac für Java Entwickler und High-End User sehr uninteressant. Aber Ich kann mir nicht vorstellen, dass Apple es sich unbedingt mit der (Java-) Entwicklergemeinde verscherzen möchte, schließlich gibt es hier viele Zusammenhänge auch zur Mac Entwicklergemeinde und der Mac als Entwicklungsplattform hat gerade in letzter Zeit enormen Zuwachs erfahren.

1. Szenario: Apple möchte den Mac als Anwendungsplattform geschlossener gestalten und versucht zukünftig ausschließlich auf Cocoa zu setzen.
Folge: Im App Store werden keine Java Applikationen zugelassen. Zu erwarten ist dann allerdings, dass Oracle relativ schnell eine eigene und auch möglichst gute Runtime zur Verfügung stellen wird, um Apple gegenzusteuern. Könnte für Apple nach hinten losgehen, weil man erstens die Entwickler verärgert und zweitens nicht wirklich etwas erreicht.

2. Szenario: Apple hat schon seit einiger Zeit sehr zögerlich neue Java-Versionen übernommen. Offenbar hat man einfach die Lust daran verloren und hofft, Oracle oder OpenSource Projekte wie SoyLatte werden zukünftig die Arbeit übernehmen.
Folge: Genau das passiert auch, eine Verzögerung ist jedoch vorerst nicht auszuschließen. Die Folgen sind besonders schlimm, denn von Oracle oder der Open Source community sind keine derartig guten Integrationen der JRE in Mac OS zu erwarten, wie wir sie momentan kennen. Dies könnte Java auf dem Mac tatsächlich gehörig schaden.

Die Zukunft von Java wird auch für Mac OS eine wichtige Rolle spielen. Ich persönlich als Entwickler würde mich eventuell von Apple trennen, wenn zukünftig keine ordentliche JRE mehr aufzutreiben ist. Denn selbst wenn ich auf einige Javaprogramme verzichten könnte, so basieren doch die alle Eclipse-Derivate ebenso auf Java. Das SKD alleine reicht zum Entwickeln leider nicht aus.

By

Java 1.7 auf Mac OS X 10.6 – Snow Leopard

Leider braucht Apple immer ein bisschen Zeit um die neuste Java Version für Mac OS X zu veröffentlichen. Das reicht für den normalen Anwender zwar vollkommen, aber als Entwickler hat man unter Umständen durchaus das Bedürfnis, eine aktuelle(re) Version zu nutzen. Für Windows gibt es von OpenJDK regelmäßig aktuelle Binary Releases der neusten Entwicklungen. Den BSD Port von OpenJDK muss man sich selbst kompilieren. Da es mich ein bisschen Zeit gekostet hat und in der deutschen Blogosphäre nichts zu dem Thema zu finden war, will ich mal nicht so sein und euch an meinem Wissen teilhaben lassen:

Grundlage für den Artikel ist ein Beitrag von Sam Pullara und ein etwas älterer von Stephen Bannasch und einige Mails von der BSD Port Development Mailingliste

Als Grundlage für das Kompilieren von Java 1.7 habe ich den SoyLatte BSD Java Port von Langdon Fuller verwendet. Dabei habe ich prinzipiell die Scripte von den oben genannten Artikeln übernommen.
Hier wird in einfachen Schritten erklärt, wie man den Sourcecode des BSD Port Projektes per Mercurial (mit Forest Extension) auscheckt. Ab und an sind die aktuellen Versionen auf dem Repository allerdings nicht 100% lauffähig, dann sollte man eine ältere Version ausprobieren. Ausserdem ist es sehr hilfreich der Mailingliste zu folgen.
JIBX wird übrigens nicht mehr benötigt und kann übersprungen werden.

Sam Pullara schlägt auf seinem Blog folgendes Buildscript vor, welches bei mir gut funktioniert hat.

build.sh

env -i PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin \
make \
CC=gcc-4.0 CXX=g++-4.0 \
ALT_BOOTDIR=$SOYLATTE_HOME \
JAVA_TOOLS_DIR=$SOYLATTE_HOME/bin \
ALT_FREETYPE_HEADERS_PATH=/usr/X11R6/include \
ALT_FREETYPE_LIB_PATH=/usr/X11R6/lib \
ANT_HOME=/usr/share/ant \
NO_DOCS=true \
HOTSPOT_BUILD_JOBS=1

Kompilieren hat hat ca. eine halbe Stunde auf meinem Macbook G1 gedauert. Mit einem aktuellen Gerät sollte das wesentlich schneller durch laufen. Auf meinem JBoss laufen mit Java 1.7 neuste Java Features die ich zur Dateiverarbeitung nutze. Hier bietet die neuste Version von Java einige Erleichterungen.

By

0100100001100101011011000110110001101111

Oder auch “Hallo”,

nach kurzer Überlegung bin ich nun doch zu dem Schluss gelangt, meinen Blog lieber auf Deutsch zu verfassen.
Ich werde nach und nach die bisherigen Artikel übersetzen und auch die englischen Texte entfernen.
Letzten Endes tausche ich eine größere Kompatibilität lieber ein für eine höhere Qualität an geschriebenem Inhalt. Ich werde mir aber trotzdem erlauben, den ein oder anderen Beitrag zumindest teilweise in Englisch zu schreiben.

Worum es in diesem Blog geht?

Nicht um Bits. Ich werde viel zum Mac schreiben und zu Windows, über Programmierung in C# und Java und über Gadgets, Widgets, iPhone Apps und alles was man grob in diese Sparten einordnen kann. Ausserdem über alles was mir so in den Sinn kommt und irgendwas mit dem Internet zu tun hat.