Die diesjährige JavaOne Keynote konnte ich leider nicht vor Ort verfolgen, da ich in diesem Jahr aus terminlichen Gründen nicht in San Francisco verweilen kann. Sehr schade. Aber zum Glück wird die Keynote ja im Live-Stream übertragen. Also habe ich es mir am Sonntag Abend im Home-Office vor dem Rechner gemütlich gemacht - immerhin sollten 2,5 Stunden geballte Neuigkeiten aus der Java-Welt auf mich warten...
Eröffnet wurde die Keynote und damit offiziell die JavaOne von Sharat Chander, dem „Director Java Product Management“, der mit etwas Geplänkel auf all die schönen und großartigen Dinge hinwies, die die JavaOne zu bieten hat und unter anderem zwei neue Web-Portale vorstellte, die für (neue) Java-Entwickler (go.java) und für alle Entwickler-Ressourcen rund um Oracle-Produkte (developer.oralce.com) geschaffen wurden. So weit, so schön (ja, schön sehen die Seiten sogar wirklich aus).
Übrigens ist das Motto dieser JavaOne „Java Your Next (Cloud)“ – was das genau heißen soll, und warum Cloud in Klammern steht, weiß man nicht wirklich.
Weiter ging’s dann mit der – ich nenne sie gerne „Sponsored“ – Industry Keynote von Intel, die ja auch bereits in den vergangenen Jahren eher belangloses Zeug verkünden durften. Hier ein neues Portal zur Performance-Übersicht von OpenJDK, dort was Neues hinsichtlich der Intel IoT Plattform „Joule“. Währenddessen hatte ich Zeit, mein Getränke-Vorrat vor dem Rechner wieder nachzufüllen, diese Selbstbeweihräucherung von Intel, wie toll sie sind und was sie alles machen, muss ich mir wirklich nicht antun.
Zurück vor dem Monitor geht es weiter mit der sogenannten „Visionary Keynote“. Dass Oracle von Zeit zu Zeit „Visionen“ hat, weiß ich bereits. Doch auf der Keynote spricht hier Dr. Anita Sengupta (@Doctor_Astro) von der Nasa über die Mars-Expedition und was Java damit zu tun hatte. Nach den 40 Minuten ihrer Rede (ich glaube, sie hat so schnell gesprochen, dass sie den Inhalt eines kompletten Raumfahrt-Studiums in dieser Zeit wiedergegeben hat) habe ich mich allerdings immer noch gefragt, was das mit Java zu tun hatte. Andere auf Twitter aber auch:
I do love all the mars talk at the keynote at #javaone but for the last 20min I’m wondering what does it have to do with java?
— Toomas Römer (@toomasr) September 18, 2016
Dr. Sengupta is truly captivating but where’s the #JavaOne keynote content?
— Alexis MP (@alexismp) September 18, 2016
Feels like I didn't hear the word #Java for the last 30mins at #JavaOne keynote.
— Niko Köbler (@dasniko) September 18, 2016
Next #JavaOne conference is going to be held in Mars. It has to be after 30 minutes taking about mars in javaone conference.
— Ahmet Karakaya (@ahmetkrky) September 18, 2016
Mars lander talk is fascinating, but 1 hr into #JavaOne keynote and surprisingly low Java content so far
— Kevin Hooke (@kevinhooke) September 18, 2016
#javaone Keynote – well, the Mars lander is kinda interesting, but I hope it does not replace the announcements WE all have been waiting for
— DOAG Java Community (@DOAGJava) September 18, 2016
Whilst Mars is very interesting, I'm not seeing the #Java relevance here. Or am I missing something? #JavaOne (at least it's supposed to be)
— Simon Ritter (@speakjava) September 18, 2016
@java please get back to Java! This keynote ls booooring #JavaOne
— steez (@steez) September 18, 2016
Eine ganz besondere Erkenntnis hatte aber Bruno Borges (Oracle):
NASA didn't do end to end integrated testing. They went into production directly. On Mars.
— Bruno Borges (@brunoborges) September 18, 2016
Nach 90 Minuten (es blieb also „nur“ noch 1 Stunde Keynote übrig) begann dann endlich George Saab, Vice President Development, Java Platform Group (ja, tolle Titel kann Oracle!) über Technik zu sprechen. Seine groß angekündigte Neuigkeit, dass Java ein „first class citizen“ für Docker werden und das Deployment darauf massiv vereinfachen solle, brachte aber nur Schweigen im großen Saal des Moscone Centers in San Francisco. Wahrscheinlich warten da nur die wenigsten darauf, da die meisten bereits erfolgreich mit Java und Docker arbeiten.
Ok, dann lassen wir mal Mark Reinhold, seines Zeichens der Chief Architect Java Platform Group (…) zur Sprache kommen. Er hatte leider nur davon zu berichten, dass Java 9 „soon“ kommt, aber „not as soon as you expect“ und spielt damit auf die erneute Verschiebung des Java-9-Termins an. Desweiteren spielte, sorry, „zeigte“ er Live-Coding mit JShell, der neuen Java REPL in Java 9, und führte vor, wie man mit Hilfe von Jigsaw und JLink ein kleines, an die eigenen Bedürfnisse angepasstes JDK erstellen kann. Schön, aber wirklich was Neues und einer Keynote würdig war das nun auch nicht.
Vielleicht reißt ja Brian Goetz, Java Language Architect, das Ruder rum und zeigt was Tolles-Neues!?
Nun, außer den aus dem letzen Jahr bekannten Features aus den Projekten Valhalla (Value Types und Specialized Generics) und Panama (Foreign Function Interface und Data Layout Control) brachte auch er nicht viel mit, außer der Ankündigung, dass Java in der Zukunft auch Default-Implementierungen für POJOs unterstützen wird. Damit ist es möglich, eine vollständig implementierte Klasse mit nur
public class Point(int x, int y) {}
zu schreiben. Konstruktoren, Getter & Setter, Equals und Hashcode-Methoden werden automatisch generiert und können bei Bedarf aber überschrieben werden. Ok, DAS ist wirklich eine Neuheit! Aber irgendwie auch überfällig, können andere JVM-basierte Sprachen (Scala, Kotlin) sowas doch schon länger.
Lassen wir endlich Anil Gaur, Group Vice President, Cloud Application Foundation, über den Umgang Oracles mit der Java-EE-Misere zu Wort kommen. Das „große Ding“ rund um Java EE heißt, wie überhaupt bei Oracle, „Cloud“ – und so soll auch Java EE „fit“ für die Cloud gemacht werden.
Man (Oracle) habe in den vergangenen Monaten sehr ausführlich auf Stimmen der Anwender und aus der Community gehört, (angeblich) verstanden und reagiert. Als Resultat daraus soll nun mehr Wert auf Cloud, Microservices und die Nutzung von NoSQL Stores gelegt werden. Sogar die Wörter „reactive“ und „events“ waren auf einer Folie zu lesen. Wow, welch Erkenntnis!
Danach präsentierte Anil Gaur das, was Oracle ein „Revised Proposal“ nennt, also einen überarbeiteten Vorschlag seitens Oracle, der natürlich noch nicht in Stein gemeißelt ist und maßgeblich von der Community mitgestaltet werden könne. Es gibt extra dafür eine neue Umfrage. Doch wer Oracle kennt – es ist ein Schelm, wer böses dabei denkt…
Details zu den einzelnen APIs können im JAXenter Artikel zur JavaOne Keynote oder in diversen Tweets mit dem Hashtag #JavaOne nachgelesen werden, diese möchte ich hier nicht wiederholen. Angeblich will Oracle schon Ende 2017 Java EE 8 veröffentlichen, Java EE 9 soll dann sogar schon nur ein Jahr später, nämlich Ende 2018 erscheinen.
Lassen wir uns überraschen, ob das wirklich so zutreffen wird. Wer die Prozesse bei Oracle kennt und verfolgt, darf gerne skeptisch bleiben – ich bin es auch. Immerhin sollen komplett neue JSRs in Java EE 8 Einzug halten, für die noch keine Entwicklungen vorliegen. Vielleicht gibt es auch einfach noch nichts Offizielles und Oracle hat im vergangenen Jahr bereits fleißig an den APIs gearbeitet, so dass diese jetzt einfach und schnell in Java EE 8 einfließen können!? Das wäre aber komplett am Java Community Process (JCP) vorbei, der eigentlich die gesamte Entwicklung von Java steuern soll.
Dennoch lässt die Art der Ankündigung, die Auswahl der APIs und das „Ignorieren“ der Partner IBM, RedHat, Tomitribe, Payara, etc. darauf schließen, dass Java EE 8 ein Oracle EE Release wird und genau auf das Produkt- und Cloud-Portfolio des Unternehmens abgestimmt ist. Die „Partner“ ignoriert man vermutlich deshalb erst mal, da diese mit der Micrcoprofile.io-Initiative alle relevanten Punkte thematisiert und eine Lösung dafür geliefert haben. Ein bißchen scheint es, als hätte Oracle von Microprofile.io kopiert. Was letztendlich in Ordnung wäre, wäre die Kommunikation eine andere.
Was aber viel mehr ins Gewicht fällt, sind die Dinge, die Oracle mal wieder totschweigt und auch auf den Folien gar nicht mehr zeigt: JSRs wie MVC, JMS und Management. Die offizielle Äußerung Oracles ist, dass diese Dinge mit der Nutzung der Cloud irrelevant und somit nicht mehr benötigt werden. Wie arrogant ist das denn bitte? Oracle unterstellt damit allen Unternehmen, die keine Cloud-Technologien einsetzen, dass auch sie diese Technologien nicht mehr benötigen bzw. nicht mehr einsetzen!? Unternehmen haben doch gerade in der Vergangenheit auf den Java EE „Standard“ gesetzt, um kompatibel zu bleiben und nicht alle paar Monate große Änderungen an ihrer Anwendungs-Struktur durchzuführen. Und jetzt soll das alles über den Haufen geworfen werden? Das nährt die Theorie, dass Java EE immer mehr zu Oracle EE wird und Oracle, entgegen den öffentlichen Äußerungen, auf Community und den JCP pfeifft und ihr eigenes Ding macht. Nichts mehr mit „Standard“.
Im Speziellen ärgert mich das stille Fallenlassen des MVC-JSR, gerade hinsichtlich der fadenscheinigen Argumentation, dass Cloud-Anwendungen oftmals „headless“ betrieben werden und UIs heute mehr und mehr mit JavaScript Frameworks wie Angular und React mit RESTful Backends entwickelt werden. Aber gerade die JS-only basierten UI-Frameworks sind nicht jedermanns Sache und kontrovers diskutiert (ja, das sage ich, der ein Verfechter von JS Frontends ist!). Das möchte Oracle wohl gerne ignorieren, ansonsten wären ja auch Java Server Faces (JSF) ein Kandidat für die Abschussliste.
Jetzt ist die Community am Zug – und zwar jeder Einzelne von uns! Macht mit bei der Umfrage und tut Oracle Eure Meinung kund! Nicht nur in der Umfrage – schreibt Mails in den JCP- und EG- (Expert Groups)-Mailinglisten, twittert was das Zeug hält, schreibt Blog-Beiträge! Nur, beschwert Euch nicht, wenn Ihr nichts getan habt!
Larry Ellison (CTO, Oracle) hat auf der Keynote der parallel stattfindenden Oracle Open World (OOW) verlautbaren lassen: „Amazon’s lead is over“, als er die neue Oracle-Cloud-Infrastruktur vorstellte…
Ohne Worte, so viel zu „Visionen“!