Ein Blog-Leser machte in einer EMail folgenden Vorschlag:
Aus Harmony und einem Fork vom OpenJDK sollte eine eigenständige Sprache werden, hauptsächlich unabhängig von Oracle und dem Original-Java.
Das brachte mich zum Nachdenken, welche Rolle Apache überhaupt noch spielt und ob Apache Java ohne Oracle treiben können, wie Harmony dort hineinspielt und wie Oracle Java verändert.
Meine Gedanken:
- Harmony und OpenJDK kann man nicht vereinen, weil beide unter verschiedenen Lizenzen entwickelt wurden/werden.
- Harmony ist eine Implementierung der Java SE-Bibliotheken. Es fehlen komplett der Compiler und die Laufzeitumgebung. Man hätte mit dem Eclipse-Compiler eine Alternative, aber es fehlt eine leistungsfähige freie JVM, die für den gesamten Stack nötig wäre. Davon ist die Community weit entfernt.
- Harmony ist sehr unvollständig. Die “harten” und großen Teile fehlen, etwa Swing. Man siehe dazu nur auf die Webseite mit den Unterschieden. Die fehlenden Teile erst einmal nachzuliefern, um auf den Stand von Java 6 zu kommen, macht viel Mühe. (Siehe dazu auch Mono, die auch dem .NET-Framework hinterherhecheln.) Bei Android ist das egal, weil nur ein winziger Subset der Java SE-API genutzt wird und Harmony hier schon alles bot.
- Java zu aktualisieren macht viel Mühe. James Gosling macht in einem Video (zu finden hier im Blog) den Kommentar, das Java zu pflegen sehr viel Arbeit macht. Java braucht Support für die Ewigkeit. Ich bezweifle, dass Apache das leisten kann – spezifizieren und implementieren/warten/dokumentieren sind immer noch zwei paar Schuhe. Hat Apache mit Harmony bewiesen, das sie in der Lage sind, eine ernsthafte API-Implementierung auf die Beine zu stellen? Das sehe ich nicht. Das ist alles viel zu unprofessionell. Ein alternativer Fork steht vor dem gleichen Problem. Es muss irgendwie an zentraler Stelle zusammenlaufen. Und Oracle gibt Java nicht aus der Hand.
- Apache-Projekte werden immer irrelevanter und viele Projekte sind mehr und mehr verweist. (Siehe News http://jakarta.apache.org/site/news/news-2010-q3.html: von den 4 Meldungen aus diesem Jahr – alles danach ist älter als 1 Jahr! – sind 2 Hinweise, dass Projekte retired sind, also aufgegeben werden.) Es stimmt, dass Apache wichtige JSRs implementiert hat: Apache MyFaces (JSR 252, 314), Apache Tomcat (JSR 45,152,154,245,315), Geronimo im Java EE-Umfeld, Content-Repository Jackrabbit usw. Ich überspitze vielleicht, aber ich glaube, das Apache seine beste Zeit hinter sich hat. Tomcat ist nicht mehr die Referenzimplementierung für JSP/Servlets und an Tomcat 7 hat man gemerkt, wie lange es dauerte, Servlets 3 zu unterstützen. Jetty war hier schneller dabei. Das gleiche mit OpenJPA und JPA 2; hier gibt es Eclipse Link als Referenzimplementierung der JPA-Spezifikation. Wer nutzt OpenJPA? Geronimo? Hier ist GlassFish eine super RI; Geronimo zog erst später mit Java EE 6 nach. Und bis auf IBM gibt es keine große Unterstützung für das Projekt. Wer setzt MyFaces ernsthaft produktiv ein, wo es von Oracle eine gute RI gibt, die zackig auf dem Stand von JSF 2.0 war? Welche Apache-Implementierungen sind also heute wirklich essentiell? Klar: Ant, Maven, Lucene, POI. (Ironischerweise keine JSRs). Und sonst? Selbst die Apache Commons werden durch Lösungen wie Google Guava verdrängt. Und bei den Commons lässt sich gut ablesen, welche internen Diskussionen geführt werden, um etwa auf Java 5 upzudaten – Java 1.4 ist tot! Was bleibt dann noch von Apache übrig? Brauchen wir wirklich Apache als Implementierer von JSRs, die später kein Mensch nutzt? Im Linux-Bereich könnte man argumentieren, dass Gnome und KDE sich gegenseitig anheizen, aber das sehe ich bei den JSR-Implementierungen nicht.
- Es bleibt die Frage, ob man Java Libs/Sprachfeatures/… außerhalb von Oracle spezifizieren könnte, etwa in im JCP oder in der OSGi-Alliance. Klar könnte man das! Doch dazu wird es aber nicht kommen. Oracle treibt Java nach seinen Kräften und Willen und will sich nicht reinquatschen lassen. Ich vergleiche das mal mit China: Demokratie ist toll, kostet aber Energie. Oracle zeigt bisher keine Motivation in die Demokratie investieren zu wollen und Endscheidungen sind hierarchisch. Das merke das auch als Java-Champion: Eigentlich sollten die JCs etwas mehr wissen (aber unter einer NDA vielleicht nicht darüber sprechen) – dem ist nicht so. Als sich Java 7 hinzog, hat keiner von Oracle mir eine klare Antwort gegeben, ob sich Java 7 verschieben wird (etwa 2 Monate vor dem geplanten Release im September 2010) und wenn, wie lange. JCs haben keinen Wissensvorteil und werden (im Moment) genauso doof gehalten wir alle anderen. Ich bin überzeugt, dass die Mitarbeiter alle schon wussten, das es mit Java 7 im September nichts wird, aber keine durfte es sagen.
Der Mehrzahl der Entwickler wird die Diskussion im Endeffekt egal sein. Wir alle wollen ein stabiles Java, was sich weiterentwickelt und gegen neue Sprachen und Frameworks konkurrenzfähig bleibt. Oracle ist der strenge Papi aber ich habe Zuversicht, dass Java bei Oracle gut aufgehoben ist. Wir müssen uns nur an eine neue Kommunikationskultur gewöhnen. Warten wir’s ab.
Wie denkt ihr darüber?
Das scheint mir eine treffende Analyse zu sein. Neben der reinen Machbarkeit, die vielleicht heutzutage nicht mehr ganz so hart ist wie noch vor 15 Jahren (man denke an LLVM), würde ich aber auch die Frage stellen: Warum sollte man denn Oracle hinterher hecheln? Für Enterprise-Entwicklung ist eine Firma als „Antreiber“ sinnvoll. Für Open-Source-Projekte oder Start-Ups muss man schnell, klein und spritzig sein. Das wird mit der Java-Umgebung nicht gehen (vielleicht schon eher mit einer Spracher oberhalb der JVM, siehe Scala).
Mein persönliches Augenmerk bei PL gilt inzwischen alternativen JITs für JavaScript, wie z.B. Googles V8 oder JägerMonkey, und LLVM.
Herr Lütkebohle,
Ihre Theorie, dass man mit der Java-Umgebung nicht „schnell, klein und spritzig“ sein kann verwirrt mich. Im Gegensatz zu anderen Plattformen kann ein Ziel schneller erreicht sein (basierend auf meinen eigenen Erfahrungen). Nicht umsonst gibt es für die Java Plattform unzählige Open-Source Projekte.
Außerdem, auch wenn sie eine andere Sprache auf der JVM nutzen sind Sie immer noch abhängig von der Plattform und damit von Oracle. Zu dem muss ich Sie berichtigen: Scala ist eine „Sprache oberhalb der JVM“ genauso wie Java und jede andere Sprache, die Sie auf der JVM nutzen können.
Da ich selbst nicht nur auf Windows Rechnern arbeite, sondern auch Macs, finde ich es gut, wenn die Java Plattform wieder zusammen kommt. Jede Fragmentierung wäre ein Schritt zurück meiner Meinung nach. Wenn ich dafür einige Vorabinformationen vom Hersteller nicht bekomme ist mir das egal, denn viel wichtiger ist das Resultat am Ende und nicht die Ankündigung.
Auch wenn sich nach dem langen Stillstand durch Oracle endlich wieder etwas bewegt, bleibt doch ein fahler Beigeschmack. Im Enterprise-Bereich ist die Strategie von Oracle sicherlich ok. Aber, warum sollte jemand im Moment für eine neue OpenSource-Desktop-Anwendung auf Java setzen? Bzw. was wären freie und moderne Alternativen?
Gute Fragen, die sich im Moment vmtl. mancher OSS-Entwickler stellt.
Meine Bedenken gelten vor Allem Oracales „Unternehmenskultur“. Also wie Oracle gegen jemanden vorgeht, der nicht 100% konform ist, zum Beispiel google. Sowas sollte nicht sein. Eine Sprache lebt davon, dass viele Leute sie benutzen und im Falle von google hat Java den Mobile Space zurückgewonnen. Was wenn google keine Lust mehr auf Java hat und versucht etwas anderes durchzudrücken? Auch andere werden den Beispiel von google folgen und auch Java den Rücken kehren. Zudem zeigt es, dass man bloss nichts anders/neu machen sollte. Werden andere die die JVM für etwas anderes einsetzen wollen, nicht doch was anderes nehmen? Vielleicht. Fazit: Java wird Leute verlieren und wird damit uninteressant.
Technologisch halte ich Oracle für fähiger als Sun. Das ist bei Java kurzfristig nötig. Man braucht einfach mehr Man-Power um es weiter voranzubringen.
Ob ein OSS Projekt gut wäre für Java? Ich bin da nicht so dagegen wie Christian U. Man bräuchte eine Lizenz auf die sich jeder einigen kann. Java ist zu zentral. Und dann bräuchte man ein paar Partnerunternehmen/Organisationen, die Leute zur Verfügung stellen. Zum Beispiel google.
Eine perönliche Anmerkung zum Ende: Mir ist der Untergang von Java sowas von egal… Warum auch? Ich kann programmieren. Bis ich etwas anderes so behersche wie Java jetzt dauert es nicht lange. Wenn es eine andere, neue, moderne Programmiersprache gibt, nehme ich halt diese..
ich bin sehr zuversichtlich, dass Oracle Java sehr gut voranbringen wird und sobald sie können auch Features einbauen wird, die wir aus neuen Sprachen wie Scala und Ruby kennen. Eine zweiter oder dritte Java SE Implementierung zu entwickeln halte ich für Unsinn, weil man dafür sehr viel man-power braucht. Dass Oracle genug Leute dafür abstellt ist klar, denn sie nutzen Java ja selbst sehr in einem großen Maß.
Anstatt an einer zusätzlichen Java SE-Implementierung mitzuarbeiten halte ich es für besser in den OpenSource-Projekten mitzuarbeiten, die auf Java aufbauen.