Besuch der gr8conf in Kopenhagen
Bereits zum fünften Mal wurde die gr8conf in Kopenhagen abgehalten. Die Konferenz beschäftigt sich mit Themen rund um die Technologien Groovy und Grails.
University Day
In Kopenhagen wurde man am ersten Tag mit Dauerregen begrüßt, also der ideale Start um beim sogenannten "University Day" nicht anderweitig abgelenkt zur werden. Für mich standen drei Workshops auf dem Plan.
Async Grails Workshop
Nach einem zögerlichen Start aufgrund von Netzwerkproblemen stellte Collin Harrington verschiedene Möglichkeiten zur Realisierung von asynchronen Anwendungsfällen vor. Es wurden exemplarisch einige mit dem Springframework zur Verfügung gestellten Event-Mechanismen umgesetzt, wie beispielsweise ApplicationEvents oder SecurityEvents. Als weitere Möglichkeiten wurde die Nutzung des Events Push Plugin für Grails sowie Servlet 3.0 vorgestellt.
GPars Workshop
Nach dem Mittagessen beschäftigte sich der nächste Workshop mit der parallelen Programmierung unter GPars ab. Es wurden viele Code-Beispiele vorgeführt, die anschaulich zeigten wie GPars die Entwicklung von parallelen Tasks durch Abstraktion vereinfacht.
Unleashing the power of AST transformations workshop
Auch beim letzten Workshop des Tages gab es viele Code-Beispiele und praktische Tipps für den Umgang mit AST-Transformationen. Der Workshop zeigte insbesondere auf, dass AST-Transformationen nicht nur für Frameworks geeignet sind, sondern auch in Kundenprojekten einen Mehrwert bringen können.
Hackergarten
Nach Pizza am Buffet ging es am Abend mit dem Hackergarten weiter. Ziel von Hackergarten ist es gemeinsam in kleineren Gruppen einen Beitrag zu einem Open-Source-Projekt innerhalb eines Abends zu leisten. Ich schloss mich der Gruppe für das Ratpack-Framework an, bei der es um die Erweiterung der Framework-Tests ging.
Erster Konferenztag
Die Konferenz startete nach der Begrüßung mit der Keynote "The rise and fall of empires: Lessons for language designers and programmers" von Dr. Venkat Subramaniam. Er hinterlegte in einem sehr unterhaltsamen Vortrag seine Thesen mit Beispielen aus der Weltgeschichte, so dass man nebenbei noch Gast einer Vorlesung in Geschichte sein durfte.
Using Static Analysis with Grails
Der erste Vortrag des Tages stellte statische Code-Analyse mit Hilfe von Jenkins vor. Jenkins ist auch der von exensio verwendete Continuous Integration Server. Der Vortrag zeigte, dass exensio bzgl. der Continuous Integration auf dem aktuellsten Stand ist.
Raspberry Pi à la GroovyFX
exensio hat wie in diesem Blog bereits berichtet ebenfalls schon Projekte mit Raspberry PI umgesetzt, allerdings mit einem anderen Technlogie-Stack. Neben Besonderheiten des Raspberry PI ging Stephen Chin auf Umsetzung der animierten GroovyFX-Applikation ein. Die Applikation wurde während der Konferenz über den HDMI-Ausgang des Raspberry PI an einen Monitor angeschlossen und zeigte den Besuchern am Info-Stand Details zu den Sessions und Sprechern der gr8conf.
Road to Grails 3.0
Graeme Rocher ging in seinem Vortrag neben Neuerungen in den aktuellen Releases auch auf das nächste Hauptrelease 3.0 ein. Neben Gradle für Build- und Dependency-Management ist vor allem die Modularisierung von Grails ein wichtiges Hauptthema.
Functional Programming in Groovy
Funktionale Programmierung mit Life-Coding vom Feinsten zeigte Keynote-Speaker Dr. Subramaniam in seinem Vortrag. Es wurden zwar keine unbekannten Sachen gezeigt, aber es wurde einem wieder vieles ins Gedächtnis gerufen auf das man beim Programmieren achten sollte.
Building Grails apps with Gradle
Luke Delay stellte für die Grails Version 2.3 vor, wie der Build-Prozess sowie das Depedency-Management über Gradle erfolgen kann. Wie bereits erwähnt wird ab Grails 3.0 der Build-Mechanismus komplett auf Gradle umgestellt. Allerdings wird diese Lösung dann komplett neu sein und nicht auf der Version von Grails 2.3 aufsetzen. Deshalb scheint sich die Umstellung des Builds in 2.3 auf Gradle nur für größere bzw. Multi-Projekte einen entsprechenden Mehrwert zu bieten.
Grails Under The Hood
Im letzten Vortrag des Tages ging Graeme Rocher detailliert auf die Struktur des Grails-Core-Projektes ein. Er stellte einige ausgewählte Details des Source-Codes vor.
Zweiter Konferenztag
Auch am zweiten Konferenztag gab es wieder jeweils zwei parallele Sessions zur Auswahl. Ich habe die nachfolgenden Sessions besucht.
Is Groovy as Fast as Java?
Der Vortragstitel bietet natürlich sofort einiges an Gesprächsstoff. Russel Winder hat die Performance anhand eines Code-Beispiels verglichen. Iterativ hat er anschließend die Performance des Groovy-Programms verbessert. Am Ende war das Groovy-Programm sogar etwas schneller wie der Java-Code, wobei dies natürlich keine allgemein gültige Aussage ist.
Speed up your development: GroovyServ and Grails Improx Plugin
Bei diesem Vortrag wurden zwei Lösungen vorgestellt, die die Produktivität während der Entwicklung steigern sollen. Durch eine interne serverseitige Lösung wird mit GroovyServ die Startzeit von Groovy minimiert. Gleiches gilt für das Grails Improx Plugin bei der die Startzeit von Tests minimiert wird. Insbesondere Integration Tests haben bei Grails eine relativ lange Startzeit, da der Embedded Server hochgefahren wird. Hier verspricht das Improx Plugin beim mehrmaligen Durchführen von Tests Verbesserung.
Spring 4 and Groovy 2
Jürgen Höller, der Projekt-Manager des Springframeworks, gab Einblicke in die Neuerungen von Spring 4. Interessant ist vor allen Dingen die geplante Unterstützung von Groovy in diesem Release. Damit wäre es beispielsweise möglich Spring-Konfigurationen über Groovy zu erstellen.
Trench code
In diesem Vortrag wurden einige Best Practices aus einem größeren Grails-Projekt vorgestellt. Hierzu zählten unter anderem die Verwendung von Abstrakten Domain-Klasse oder Hibernate-Filter für SQL-Abfragen. Besonders interessant war der Einsatz von Scaffolding im Produktiv-Betrieb. In dem Projekt wurden die meisten Controller-Klassen zur Laufzeit über Scaffolding erzeugt.
Ratpack
Das schon erwähnte Ratpack-Framework ist ein leichtgewichtiges Framework, um Applikationen zu bauen. Basis zur Kommunikation ist Netty, so dass hier eine asynchrone Abarbeitung der Reqeusts erfolgt. Ratpack läuft als Standalone-Applikation und nicht in einem Servlet- bzw. JEE-Container.
Grails Transactions
Bei meinem letzten Vortrag als Zuhörer ging Burt Beckwith auf das Transaktions-Handling von Grails in der Tiefe ein. Bisher weniger bekannt ist wohl die Tatsache, dass es bereits seit längerem Unterstützung für "Two Phase Commits" in Form des Atomikos-Plugins gibt.