Kann Apache ein Java alleine stemmen? Gedanken zur Festzeit

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?

WEB.DE setzt auf das Java-geschriebene ThinkFree Office

Man glaubt es kaum, aber in den Zeiten von modernen JavaScript-Office Implementierungen setzt WEB.DE auf das ThinkFree Office (nicht ThinkFree Online!), was in Java implementiert ist. Ein großer Vorteil ist, dass ThinkFree die Office-Formate ausgezeichnet unterstützt und es auch so aussieht wie das alte Office. Java auf dem Client ist also doch nicht tot  Smile.

Aufgeschnappt unter http://netzwertig.com/2010/12/14/online-office-web-de-integriert-office-tools-auf-java-basis/.

Supergau? Apache zieht sich vollständig aus dem JCP zurück

Aus https://blogs.apache.org/foundation/entry/the_asf_resigns_from_the:

The Apache Software Foundation has resigned its seat on the Java SE/EE Executive Committee.  Apache has served on the EC for the past 10 years, winning the JCP "Member of the Year" award 4 times, and recently was ratified for another term with support from 95% of the voting community.  Further, the project communities of the ASF, home to Apache Tomcat, Ant, Xerces, Geronimo, Velocity and nearly a 100 mainstay java components have implemented countless JSRs and serve on and contribute to many of the JCPs technical expert groups. 
We’d like to provide some explanation to the community as to why we’re taking this significant step.
The recent Java SE 7 vote was the last chance for the JCP EC to demonstrate that the EC has any intent to defend the JCP as an open specification process, and demonstrate that the letter and spirit of the law matter.   To sum up the issues at stake in the vote, we believe that while continuing to fail to uphold their responsibilities under the JSPA, Oracle provided the EC with a Java SE 7 specification request and license that are self-contradictory, severely restrict distribution of independent implementations of the spec, and most importantly, prohibit the distribution of independent open source implementations of the spec.  Oracle has refused to answer any reasonable and responsible questions from the EC regarding these problems.
In the phrase "fail to uphold their responsibilities under the JSPA", we are referring to Oracle’s refusal to provide the ASF’s Harmony project with a TCK license for Java SE that complies with Oracle’s obligations under the JSPA as well as public promises made to the Java community by officers of Sun Microsystems (recently acquired by Oracle.)  This breach of the JSPA was begun by Sun Microsystems in August of 2006 and is a policy that Oracle explicitly continues today.  For more information on this dispute, see our open letter to Sun Microsystems.
This vote was the only real power the Executive Committee has as the governing body of the Java specification ecosystem, and as we indicated previously we were looking for the EC to protect the rights of implementers to the degree they are able, as well as preserve the integrity of the JCP licensing structure by ensuring that JCP specifications are able to be freely implemented and distributed.  We don’t believe this is an unreasonable position – it should be noted that the majority of the EC members, including Oracle, have publicly stated that restrictions on distribution such as those found in the Java SE 7 license have no place in the JCP – and two distinguished individual members of the EC, Doug Lea and Tim Peierls, both have resigned in protest over the same issue.
By approving Java SE 7, the EC has failed on both counts : the members of the EC refused to stand up for the rights of implementers, and by accepting Oracle’s TCK license terms for Java SE 7, they let the integrity of the JCP’s licensing structure be broken.
The Apache Software Foundation concludes that that JCP is not an open specification process – that Java specifications are proprietary technology that must be licensed directly from the spec lead under whatever terms the spec lead chooses; that the commercial concerns of a single entity, Oracle, will continue to seriously interfere with and bias the transparent governance of the ecosystem;  that it is impossible to distribute independent implementations of JSRs under open source licenses such that users are protected from IP litigation by expert group members or the spec lead; and finally, the EC is unwilling or unable to assert the basic power of their role in the JCP governance process.
In short, the EC and the Java Community Process are neither.
To that end, our representative has informed the JCP’s Program Management Office of our resignation, effective immediately.  As such, the ASF is removing all official representatives from any and all JSRs. In addition, we will refuse any renewal of our JCP membership and, of course, our EC position.

Die letzte Aussage ist besonders hart: “As such, the ASF is removing all official representatives from any and all JSRs. In addition, we will refuse any renewal of our JCP membership and, of course, our EC position.”

Gui-Tipp: Warnungen und Fehlermeldungen sollten den Grund klarstellen

Hier ein Gegenbeispiel. Gerade wollte ich nach einem Mietwagen in Dubai bei https://www.thrifty.com/ suchen und bekam folgende Meldung:

NO RATES QUALIFY WITH REQUESTED PARAMETERS.
(Message 41854:27)

Datum ist Ok, Ort auch. Gut wäre, wenn ich einen Hinweis bekäme, mit welchen Parametern es dann klappen würde. Kein Auto zu dem Termin? Kein Auto an am Flughafen?

Image and video hosting by TinyPic

Doug Lea tritt aus dem JCP aus

Here is the promised explanation for why I am not seeking another term
on the JCP Executive Committee: I believe that the JCP is no longer a
credible specification and standards body, and there is no remaining
useful role for an independent advocate for the academic and research
community on the EC.

Some have argued that JCP was never a credible standards body.  I once
disagreed: Sun initially placed in the JSPA and Process documents
enough rules to ensure that the JCP could foster innovation, quality,
and diversity, independent of that from Sun, with few enough (albeit
annoying) exceptions to allow JCP to drive consensual progress more
successfully than seen in most standards bodies.  However, some of
these rules, and violations of rules, have been found to be the source
of stalemates and lost technical ground. Rather than fixing rules or
ceasing violations, Oracle now promises to simply disregard them.  If
they indeed act as they have promised, then the JCP can never again
become more than an approval body for Oracle-backed initiatives.
(Oracle's choice of timing submission of SE release JSRs forced me to
decide not to stand for another term based only on those promises, not
on the actual actions.)  I urge other EC members to consider whether
short term "pragmatism" in voting outweighs such consequences.

So, what are the alternatives?

For the core Java platform (which these days roughly corresponds to
Java SE), the only existing vehicle for which I can foresee a useful
role for the academic and research community is OpenJDK.  OpenJDK is a
shared-source, not shared-spec body, so is superficially not an
alternative at all. But at this point, a Linux-style model for
collaboratively developed common source is likely to be more effective
in meeting upcoming challenges than is the JCP.  (In which case, of
course, the main role of JCP is only to approve specs for various
freeze-points that represent releases.) For this reason, I've
volunteered to continue and increase involvement to better establish
the reincarnated OpenJDK as such a body.

For other efforts, I cannot recommend to anyone that they use the JCP
JSR process, as opposed to some other group/organization/body, to gain
consensus for proposed specifications. So I expect to see fewer
submissions as people begin to realize that other venues provide
better opportunities. I suppose there is some possibility that I
will help improve support for such standards elsewhere, but I don't
have any immediate plans.

I could of course be wrong about all this, and hope that other EC
members try hard to prove me wrong.

I am sending this to the EC, to make sure you all hear this
from me directly first. But feel free to distribute. For simplicity,
I placed a copy at http://gee.cs.oswego.edu/dl/html/jcp22oct10.html.

Mal sehen wer folgt, und welchen Einfluss das auf die Java 7, Java 8 und die Familie der Concurrency Utilities hat.

Weiterhin ist folgende Bemerkung lesenswert: http://java.dzone.com/news/dear-oracle-get-clue.

Apple beendet Java-Unterstützung, so Nokia für Java ME

Apple wird Java SE nicht mit unterstützen. Die alte Version bleibt bestehen doch wird vielleicht bei neuen OS nicht mehr mit angeboten.

http://news.ycombinator.com/item?id=1814613

Nokia lizensiert Java ME nicht mehr und ist damit einer der großen, die bei den Milliarden von Phones auf Java verzichten.

http://www.nokia.com/press/press-releases/showpressrelease?newsid=1453894

GWT 2.1 RC1

Die Version 2.1 nimmt Neuerungen, die für 2.2 geplant waren, vorweg. Die Änderungen in Kürze:

  • Neue sogenannte Cell Widgets. Gedacht sind sie für große Datenmengen. Sie verbrauchen wenig Speicher.
  • Safe-HTML-Funktion, die böse HTML-Injektionen verhindert.
  • GWT-Applikationen können auf den Server loggen.

InfoQ (http://www.infoq.com/news/2010/10/GWT-2.1) stellt die Neuerungen kurz vor.

Ich würde mich noch wünschen, dass GIN in den Core aufgenommen wird.

IBM und Oracle arbeiten am OpenJDK, das Ende von Harmony

IBM hat bisher immer zu Harmony gehalten – das ist nun Verhangenheit: http://www-03.ibm.com/press/us/en/pressrelease/32708.wss.

Bin gespannt, was das für Google und Android bedeutet. IBM geht nun zu OpenJDK, was interessant ist, da die Lizenzform auch eine ganz andere ist.

Mehr http://java.dzone.com/articles/rip-harmony-0 und http://www.theserverside.com/discussions/thread.tss?thread_id=61081.

Open Source Java Tool Mediathek

Bei Heise (http://www.heise.de/open/artikel/Oeffentlich-rechtliches-Media-Center-1073454.html) fand ich gerade einen Beitrag über eine Software, die die öffentlich-rechtlichen Medien über eine Java-Oberfläche zugänglich macht.

 

 

Die Software ist funktional aber in der Optik kann mach noch was machen und auch der Programmierstil nicht überwältigend.

Alles ist deutsch:

private void gibBescheid() {

Variablenanmen alles andere als klar:

private void pfadLaden(String pfad, boolean boolDatei) {

Und einiges könnte durchaus knapper geschrieben werden:

    private boolean istZip(String str) {
        boolean ret = false;
        if (str.endsWith(".zip") || str.endsWith(".Zip")) {
            ret = true;
        }
        return ret;
    }

-> warum nicht das?

return str.toLowerCase().endsWith(“.zip”);

Aber wie im richtigen Leben: So lang’s funktioniert Smile

Habt ihr auch “Comparison method violates its general contract” (bei Eclipse)?

Für Eclipse 3.6 möchte ich gerade die ersten Plugins installieren (SVN-Client und Google Eclipse Plugin) und bekomme ein “Comparison method violates its general contract”. Der Fehler kommt aus einer neuen Implementierung TimSort fürs Sortieren, http://cr.openjdk.java.net/~martin/webrevs/openjdk7/timsort/src/share/classes/java/util/TimSort.java.html zeigt die Implementierung. Kennt ihr das Problem? Google kennt das Problem nicht wirklich.

Neue Job-Börse auch für Java-Entwickler

Wer auf der Suche nach einem neuen Job ist, kann bei webentwickler-jobs.de vorbeischauen. Die Jobbörse ist dediziert für IT-Personen und nicht breit für Softwareentenwickler, Betriebswirtschaftler, Sozialarbeiter und Kaffeekocher (wobei es einige gibt, die sagen, ITler vereinen alles…) Die Stellenanzeigen sind schön unterteilt in die Rubriken Java, Ruby on Rails, Python, PHP, Typo3, .NET und Perl. Im Bereich Java standen heute fast 350 Jobs. Die Seite und ist dazu noch werbefrei und kostenlos.