{"id":849,"date":"2010-12-26T05:56:15","date_gmt":"2010-12-26T03:56:15","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/2010\/12\/kann-apache-ein-java-alleine-stemmen-gedanken-zu-festzeit\/"},"modified":"2010-12-29T13:49:37","modified_gmt":"2010-12-29T11:49:37","slug":"kann-apache-ein-java-alleine-stemmen-gedanken-zu-festzeit","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2010\/12\/kann-apache-ein-java-alleine-stemmen-gedanken-zu-festzeit\/","title":{"rendered":"Kann Apache ein Java alleine stemmen? Gedanken zur Festzeit"},"content":{"rendered":"<p>Ein Blog-Leser machte in einer EMail folgenden Vorschlag:<\/p>\n<blockquote>\n<p>Aus Harmony und einem Fork vom OpenJDK sollte eine eigenst\u00e4ndige Sprache werden, haupts\u00e4chlich unabh\u00e4ngig von Oracle und dem Original-Java.<\/p>\n<\/blockquote>\n<p>Das brachte mich zum Nachdenken, welche Rolle Apache \u00fcberhaupt noch spielt und ob Apache Java ohne Oracle treiben k\u00f6nnen, wie Harmony dort hineinspielt und wie Oracle Java ver\u00e4ndert.<\/p>\n<p>Meine Gedanken:<\/p>\n<ul>\n<li>Harmony und OpenJDK kann man nicht vereinen, weil beide unter verschiedenen Lizenzen entwickelt wurden\/werden. <\/li>\n<li>Harmony ist eine Implementierung der Java SE-Bibliotheken. Es fehlen komplett der Compiler und die Laufzeitumgebung. Man h\u00e4tte mit dem Eclipse-Compiler eine Alternative, aber es fehlt eine leistungsf\u00e4hige freie JVM, die f\u00fcr den gesamten Stack n\u00f6tig w\u00e4re. Davon ist die Community weit entfernt. <\/li>\n<li>Harmony ist sehr unvollst\u00e4ndig. Die \u201charten\u201d und gro\u00dfen 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\u00fche. (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. <\/li>\n<li>Java zu aktualisieren macht viel M\u00fche. 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\u00fcr die Ewigkeit. Ich bezweifle, dass Apache das leisten kann \u2013 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. <\/li>\n<li>Apache-Projekte werden immer irrelevanter und viele Projekte sind mehr und mehr verweist. (Siehe News <a href=\"http:\/\/jakarta.apache.org\/site\/news\/news-2010-q3.html\">http:\/\/jakarta.apache.org\/site\/news\/news-2010-q3.html<\/a>: von den 4 Meldungen aus diesem Jahr \u2013 alles danach ist \u00e4lter als 1 Jahr! \u2013 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 \u00fcberspitze vielleicht, aber ich glaube, das Apache seine beste Zeit hinter sich hat. Tomcat ist nicht mehr die Referenzimplementierung f\u00fcr JSP\/Servlets und an Tomcat 7 hat man gemerkt, wie lange es dauerte, Servlets 3 zu unterst\u00fctzen. 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\u00e4ter mit Java EE 6 nach. Und bis auf IBM gibt es keine gro\u00dfe Unterst\u00fctzung f\u00fcr 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\u00f6sungen wie Google Guava verdr\u00e4ngt. Und bei den Commons l\u00e4sst sich gut ablesen, welche internen Diskussionen gef\u00fchrt werden, um etwa auf Java 5 upzudaten \u2013 Java 1.4 ist tot! Was bleibt dann noch von Apache \u00fcbrig? Brauchen wir wirklich Apache als Implementierer von JSRs, die sp\u00e4ter kein Mensch nutzt? Im Linux-Bereich k\u00f6nnte man argumentieren, dass Gnome und KDE sich gegenseitig anheizen, aber das sehe ich bei den JSR-Implementierungen nicht. <\/li>\n<li>Es bleibt die Frage, ob man Java Libs\/Sprachfeatures\/\u2026 au\u00dferhalb von Oracle spezifizieren k\u00f6nnte, etwa in im JCP oder in der OSGi-Alliance. Klar k\u00f6nnte man das! Doch dazu wird es aber nicht kommen. Oracle treibt Java nach seinen Kr\u00e4ften 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\u00fcber sprechen) \u2013 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 \u00fcberzeugt, dass die Mitarbeiter alle schon wussten, das es mit Java 7 im September nichts wird, aber keine durfte es sagen. <\/li>\n<\/ul>\n<p>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\u00e4hig bleibt. Oracle ist der strenge Papi aber ich habe Zuversicht, dass Java bei Oracle gut aufgehoben ist. Wir m\u00fcssen uns nur an eine neue Kommunikationskultur gew\u00f6hnen. Warten wir\u2019s ab.<\/p>\n<p>&#160;<\/p>\n<p>Wie denkt ihr dar\u00fcber?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein Blog-Leser machte in einer EMail folgenden Vorschlag: Aus Harmony und einem Fork vom OpenJDK sollte eine eigenst\u00e4ndige Sprache werden, haupts\u00e4chlich unabh\u00e4ngig von Oracle und dem Original-Java. Das brachte mich zum Nachdenken, welche Rolle Apache \u00fcberhaupt noch spielt und ob Apache Java ohne Oracle treiben k\u00f6nnen, wie Harmony dort hineinspielt und wie Oracle Java ver\u00e4ndert. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-849","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=849"}],"version-history":[{"count":4,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/849\/revisions"}],"predecessor-version":[{"id":855,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/849\/revisions\/855"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}