Jetzt ist es auf allen Gängen und in allen Räumen ziemlich voll und das fast die ganze Zeit.  Auch heute wird es wieder ein langer Tag mit einer Menge Vorträgen werden. Die Hälfte der Zeit werde ich jedoch Dierk König lauschen, der übrigens durchaus Interesse bekundet hat, bei uns einen Vortrag zu halten.  Darauf werde ich natürlich zurückkommen.

Pro Groovy: reiner Code (Dierk König)

In größeren Abständen beschäftige ich mich durchaus immer mal wieder gerne mit Groovy. Gerade hilft es mir bei einer statischen Code-Analyse und so sind diese Talks etwas,  auf die ich mich richtig freue.  Meinen Erwartungen kam natürlich noch entgegen, dass Dierk König auch keine Präsentation vorbereitet hatte, sondern einfach mal zeigte, was im normalen Entwickleralltag damit möglich ist.

Mit Groovy und Gradle hat er seine komplette Umgebungsverwaltung auf dem Rechner konfiguriert, die Automatisierung der Downloads und Anpassung der Systemvariablen und ~Pfade realisiert.  Davon mal abgesehen sieht es auch noch cool aus.  Ich werde mal schauen, ob man das ähnlich, auch für Windows umsetzen kann.

Die Session hat mal wieder bestätigt, Groovy ist das Apple für Java! :-)

 

JSF und JPA effizient kombinieren (Michael Kurz)

Am Montag hatte der JFS-Workshop dieses Thema nur am Rande gestreift.  Der Vortrag vom Michael Kurz lief im Rahmen des heutigen JSF-Tages auf der W-JAX und stieg ein in die Umsetzung von JSF und JPA mit einem EE Container und ohne.  Stehen die Mechanismen des Containers nicht zur Verfügung, kommen automatisch CDI und insbesondere CODI, die Apache Erweiterung zu CDI ins Spiel.

Es wurde die Kombination der einzelnen Komponenten in den verschiedenen Layern diskutiert und mit aktuellen Beispielen und einer Mail-Anwendung visualisiert.  Aus meiner Sicht sind die Möglichkeiten ziemlich beeindruckend, aber die API-Verstrickungen sind es auch. :-)

Für den Zugriff auf die Datenbank wurde der Criteriabuilder von JPA 2.0 eingesetzt, den ich erstmalig so in Action gesehen habe.  Vorteil ist die Möglichkeit, dem Compiler die syntaktische Richtigkeit eines Statements prüfen zu lassen. Nachteil:  es ist nicht intuitiv!

Nebenläufigkeit I / II (Dierk König, Johannes Link)

Weiter ging es mit meinem Groovy-Tag, auch wenn die Sprache bei den beiden Sessions gar nicht so im Vordergrund stand. Auf jeden Fall weckte das Thema großes Interesse, was man an dem überfüllten Raum sehen konnte.  Dieser Aktualität ist auch der Plan geschuldet, bei der kommenden JAX im April erstmalig einen Powerworkshop zum Thema Concurrency zu veranstalten.  Eigentlich wollte ich ja die JAX überspringen, hmm...

Die Aufteilung des talks war klar. Johannes Link kümmerte sich um die Probleme, Dierk König um die Lösungen.  Zu Beginn gab es eine Analyse, was Concurrency und Parallelität heutzutage bedeuten und welcher Wandel sich in den letzten Jahren vollzogen hat. Dann ging es schon mehr ans Eingemachte, als die Strategien zur Lösung der allseits bekannten Probleme diskutiert wurde.

Das reichte von Zerlegung des Kontrollflusses, Einsatz neuer Fork / Join Sprachmittel und führte zu der Erkenntnis, dass die Probleme für einen 'normalen' Entwickler eigentlich kaum zu lösen sind.

Aber es gibt natürlich einen Ausweg aus diesem dunklen Tal: Groovy und GPars!

Hier sollte man sich auf jeden Fall die Syntax von Dataflows anschauen, die sehr vielversprechend aussah. Bestes Beispiel die Realisierung des Producer-Consumer Problems in einer Animation. Das war richtig beeindruckend!

Building next-generation Web Apps with WebSocket and HTML5 (Matthias Weßendorf)

 

HTML5 liest man inzwischen überall. Nur ein Buzzword?  Ich konnte mir hier noch keine rechte Meinung bilden und wenn das Thema auf WebSocket kam, löst das nur ein Schulterzucken aus.  Um so mehr kam mir die Session von Matthias Weßendorf gelegen, der sich ausführlich diesem Thema widmete.  Passend dazu verkündete Adobe heute, dass es kein mobiles Flash mehr unterstützen würde und auch Microsoft ernsthaft über die Zukunft von Silverlight nachdenkt.

Zu Beginn gab es eine kurze Einführung in die Geschichte von HTML, dann wurden die hervorstechendsten Merkmale von HTML5 vorgestellt. Dazu gehören das Canvas-Element, Geo-Map-API, Real-Time-Web, Push Data usw.  Die mitgelieferten Beispiele und Komponenten konnten sowohl vom Aussehen als auch der Performance und Flexibilität überzeugen.

WebSockets zeichnen sich dadurch aus, dass sie die Beschränkungen des HTTP Protokolls auflösen sollen. Sie sind bi-directional und full-duplex und werden auch als TCP für das Web bezeichnet.

Ein schönes Beispiel wurde im Anschluss auch gezeigt. Ein VNC Client in Echtzeit ohne irgendein Plugin (rendering in Canvas) .

Auch in Zukunft wird es noch HTTP und auch Ajax geben. Aber die Kombination aus HTML5 und WebSocket ist eine mächtige neue Kraft im Internet. Infos und Demos auf der Website von Kaazing.

 

Keynote: Cool Code (Kevlin Henney)

Die beste Keynote der W-JAX!  Wann ist Code cool? Mit Sicherheit, wenn auf einer einzigen Seite Assembler-Code eine ganze Schach-Engine implementiert wurde, was in etwas 4,8 SMS entspricht.  Kevlin Henney präsentiert ein buntes Sammelsurium von Codebeispielen, die man einfach nur bestaunen kann.  Sei es nun ein Webserver mit einer Handvoll Code, ein C-Programm in Form von Pi, welches e berechnet und ein anderes Programm, welches aus der physikalischen Form seiner Main-Methode Pi bestimmt. Für mich ganz klar die Erkenntnis, dass die Verfügbarkeit von unbegrenztem Speicher und CPU-Kapazität die Randbedingungen für eine knackige, kompakte Programmierung erheblich aufgeweicht hat. Wer denkt noch daran, wieviel Speicher er verbrauchen darf? Wer denkt in erster Linie überhaupt noch an Performance?  Hin und wieder sollte man sich diese 'alten' Beispiele mal anschauen und darüber nachdenken, ob weniger nicht manchmal mehr ist.  Hier fällt mir der Ansatz von Adam Bien wieder ein.  Erst mal schauen, ob man das Problem nicht mit Bordmitteln lösen kann.  Danach sollte man sich erst nach Alternativen umschauen.  Dem kann ich nur zustimmen.

Javas Kuriositätenkabinett (Arno Haase)

Nach der abendlichen Brez'n gab es noch eine Handvoll Sessions und nachdem ich zuerst zu Wicket tendierte, trieb mich die Loyalität dann doch in Arnos Haases Kuriositätenkabinett.  Ich kenne ihn ja nur mit hochgekrempelten Ärmeln im Code. Heute, mit Folien, das war ein wenig ungewohnt. Der große Ballsaal vermittelte nicht das kuschelige Feeling, welches seinem Vortrag angemessen gewesen wäre.  Trotzdem machte es wie immer Spaß, seinen Ausführungen zu folgen, die unter dem Motto standen: 'Nur nicht zu Hause ausprobieren!'

Arno zeigte Beispiele für subversive Programmierung mit String und brachte gleich noch mal ein paar verborgenen Details des JVM Memory-Modells an die Oberfläche.  Da kann man tatsächlich ganz böse Dinge tun und findet nebenher noch Bugs in der Virtual Machine.

Ich denke, im kleineren Kreise wäre mehr Raum für Diskussionen gewesen. So war es ein angenehmes Ende eines weiteren langen Tages.

Nun hoch ins Zimmer und Rechner einschalten! :-)