Diese Woche gab das „Javaland“ seinen Einstand – der erste Durchlauf der Konferenz fand auf dem Gelände des Phantasialands statt. Ich war sehr neugierig auf Leute, Vortragsniveau, und wie sich die Konferenz im Vergleich zur JAX platzieren würde. Insgesamt 800 Teilnehmer kamen zur Premiere, das Vortragsprogramm wurde aus über 400 Einreichungen ausgewählt.
Das Javaland zielt ähnlich wie die JAX auf das überregionale, deutschsprachige Publikum (mit einem leichten internationalen Anstrich). Während die JAX dem gängigen Konferenz-Template folgt, versucht das Javaland „anders“ zu sein: Hier soll die Java-Community und das Kennenlernen von Leuten und neuen Techniken in den Vordergrund gerückt werden. Allein schon die ungewöhnliche Location war ein starkes Signal hierfür.
Es gab einen stets belebten Community-Bereich (auf dem CCC-Congress hätte man es wohl „Hackcenter“ genannt) mit Tischgruppen zum gemeinsamen Coden oder Stehtischen und Sitzsäcken zum Plaudern. An einigen Tischen hatten sich angekündigte Community-Projekte niedergelassen, so gab es die Möglichkeit, Projekte mit LeapMotion oder der Oculus Rift anzusehen oder beim „adopt a JSR“ über noch in der Diskussion befindliche JSRs näheres zu erfahren und diese auszuprobieren.
Der üblichen Mitagessens-Run wurde dadurch entzerrt, daß das Programm nonstop durchlief und das Mittagsbuffet über längere Zeit dastand. So hatte jeder die Wahl, in der Pause zwischen zwei Talks schnell etwas zu essen oder eine der Sessions während der Mittagszeit komplett auszulassen.
Neben den vier regulären Tracks gab es drei, von Firmen gesponsorte Vortragstracks. Diese waren aber erfrischend frei von reinen Verkaufsveranstaltungen, sondern eine echte Ergänzung zum restlichen Programm. Dementsprechend schwer war die Entscheidung bei der Wahl der Talks…
scalaz-Einführung für Java Programmierer
Eine Einführung in scalaz, ohne eine Scala-Einführung und ohne eine Haskell-Einführung zu sein, und das in 45 Minuten – das klang ambitioniert. Der Vortrag versuchte, das Kapseln von Seiteneffekten mittels Monaden näherzubringen (und bei der Gelegenheit das unsägliche Durchschleifen von Seiteneffekten zur Laufzeit durch Annotations-Magic loszuwerden). Ich fürchte, für Leute ohne Vorbelastung auf dem Gebiet war das alles etwas zu schnell; was aber in jedem Fall geblieben sein dürfte: Es gibt eine Alternative zum Einschleifen von Kontext über Bibliothekten und Annotationen, und der ist mit Scala oder den Java8-Lamdas sogar recht elegant.
Herausforderungen der Event Loop am Beispiel von vert.x
Reactive Programming ist (mindestens) ein wichtiger Trend. Der Vortrag motivierte über Zeitverluste allein durch das Lock-Management (Wartezeiten und Deadlocks wurden da noch gar nicht berücksichtigt) das Nachdenken über Lock-freie Ansätze; eventloop-basierte Systeme wie vert.x verschieben alle eventuell anfallenden Sperren in die Bibliothek und bieten dem Entwickler eine Umgebung, in der keine Sperren notwendig sind (bzw. überhaupt nicht benutzt werden sollten).
Ein weiteres Thema, das in ähnlicher Form im nächsten von mir besuchten Talk wieder auftauchte, waren „Microservices“, also die Idee, weg von monolithischen, durchdesignten Systemboliden hin zum Zusammensetzen von großen Anwendungen aus kleinen, einfacheren Teilen. Üblicherweise wird hier eine Orchestrierung mittels REST-APIs (oder ähnliches) empfohlen (da gab es vor ein, zwei Jahren einen Talk auf InfoQ – wenn ich ihn nur wiederfinden würde… war vermutlich der Talk von von Jim Webber über „Guerilla SOA“ oder Jim Webbers und Martin Fowlers Keynote „Does my bus look big in this?“ ), mit vert.x ist die Idee aber ebenfalls umsetzbar: Die einzelnen Module („Verticles“) lassen sich zur Laufzeit starten, beenden, updaten und kommunizieren ausschließlich mit JSON-Nachrichten. Auch wenn ich von der Idee von reinem JSON ohne irgendeine Interface-Definition noch nicht abschließend überzeugt bin: Diese Idee läßt sich somit 1:1 mit vert.x umsetzen. Dabei profitiert man einerseits von der Sprachvielfalt von vert.x (es gibt APIs von Java über Scala bis Clojure) und andererseits von Framework-Features wie dem automatischen Clustering und Handover beim Ausfall eines Knotens, was man sich in einer anderen Umgebung erst mühevoll selbst bauen müßte.
Alles in allem eines meiner Highlights des Tages, ich empfehle, Folien und Literaturhinweise durchzuarbeiten.
Architektur 201x
Stefan Tilkov kündikt einen Talk an, damit ist ein voller Saal quasi garantiert ;-) Dieser Talk war ein Plädoyer für Microarchitectures: Baut keine Anwendungen, die so groß sind, daß sie später niemand mehr umbauen, geschweige denn ersetzen kann – „build for replacement, not for reuse“. Strebt nach der Unix-Philosophie, einzelne, möglichst separat funktionierende Teile, die eine einzelne, isolierte Aufgabe möglichst gut erfüllen – und baut Anwendungen, indem man diese Einzelteile dann zusammensteckt.
Ein guter Denkanstoß – und die Erwähnung einer beinahe unüberschaubaren Fülle von Tools, Bibliotheken und Frameworks, die einen bei einer solchen Herangehensweise unterstützen.
Endlich sichere Webanwendungen in Java
Nachdem ich das Buch des Autors über Java Websecurity als Gutachter durchlesen durfte, war ich natürlich gespannt, was er in einem Vortrag erzählen würde ;-) Es ging um SQL-Injection, XSS und XSRF. Er demonstrierte die Verwendung des Zed Attack Proxy (ZAP) und wie man mit ihm als „Nagelprobe“ die eigene Anwendung auf Probleme abklopft. Sein Fazit deckte sich inzwischen mit dem meinen: Geeignete Bibliotheken wählen, welche die Sicherheitsprobleme für den Programmierer adressieren – aber dennoch bescheid wissen, um nicht versehentlich den Schutz der Tools zu umgehen.
Web Security rund um die Anmeldung
Im letzten Slot des Tages durfte ich meinen Vortrag halten (die Folien gibt es hier). Trotz des großen Angebots und der vorgerückten Stunde hatte ich rund 80 Zuhörer im Publikumsraum. Mein Talk schloß (unabgesprochen) fast direkt an den vorigen Talk an. Mir war es ein Anliegen, auf diverse Feinheiten (und Angriffsformen) im Sessionmanagement und dem Umgang mit den Userpasswörtern hinzuweisen, da hier bedeutend mehr Verantwortung beim Entwickler/Architekten liegt und das Problem nicht einfach mit der Verwendung einer geeigneten Bibliothek zu lösen ist.
Dem Feedback nach dem Vortrag zu urteilen hat es den Leuten sehr gut gefallen und mehr als nur einmal einen überraschtes „Aha!“ hervorgerufen.
Der Abend, Open Park
Da ich in derselben Nacht wieder gen Heimat mußte, war das die letzte Gelegenheit für viele Gespräche – und einer kurzen Runde durch den Vergnügungspark, der einige Attraktionen für drei Stunden öffnete. Sowas ist doch ein Kindheitstraum: Ein fast menschenleerer Park, Wartezeit für die erste Reihe in der „Black Mamba“ ca. 3 Minuten – wooooow! Ich glaube, wir haben das Pensum eines durchschnittlichen Sommer-Tagesbesuchs in anderthalb Stunden abgearbeitet ;-)
Irgendjemand hatte übrigens die Nerven weg und hat die Fahrt aus der ersten Reihe gefilmt – damit ihr die Begeisterung nachvollziehen könnt :-)