Letzte Woche war ich auf dem Java Forum Stuttgart, einer der prominentesten Java-Konferenzen in Süddeutschland, als Speaker eingeladen. Die mit 1200 Besuchern ausgebuchte Veranstaltung versprach etliche interessante Themen. In sechs parallelen Tracks gab es insgesamt 42 (wieviele auch sonst ;-) Vorträge zu hören - hier meine Auswahl:
Die TOP 10 der Tools & Methoden für mehr Spaß beim Entwickeln
Ich muß zugeben, da hatte ich mir ein klein wenig mehr erwartet. Continuous Integration, automatisierte Unit tests, irgendeine Form der Team- und Selbstorganisation - klar, daß das sehr sinnvoll ist (und es sich lohnt, dafür zu kämpfen, so etwas zu etablieren). "Artgerechte Haltung von Nerds", also gelegentliches Comiclesen oder Blättern im Heise Newsticker oder bei InfoQ, ist ebenso wichtig... nett war dafür das Detail, das Comiclesen zum Gruppenevent zu machen und als Einstieg für den Daily Standup zu nutzen :-)
Die Spielchen um "you broke the build" sehe ich ein Stück weit kritisch - so etwas darf nicht dazu führen, daß sich die Entwickler nicht mehr trauen, ihren Code einzuchecken. "Commit early, commit often" ist aus mehreren Gründen wichtig - Co-Entwickler können sich so auf Änderungen zeitig einstellen, Fehler (mit)entdecken... und zuletzt ist das zentrale Coderepository häufig die einzige Maschine mit wirklich guter Datensicherung.
Bezüglich der produktionssteigernden Methoden würde ich die angesprochenen Tastenkürzel unbedingt um einen geeigneten Windowmanager und/oder ein "Wohlfühl-Betriebssystem" ergänzen.
Effektive Scala Entwurfsmuster
Ursprünglich wollte ich mir die Concurrency-Paradigmen anhören, habe mich dann aber spontan umentschieden... bin immer noch unschlüssig, ob es ein Fehler war. Der Vortrag schilderte, wie diverse Patterns der Gang of Four in Scala aussehen (oder aufgrund des Sprachdesigns komplett verschwinden). Für Scala-Neulinge (vermutlich der überwiegende Teil des Auditoriums) war das ziemlich erschlagend, ich schätze mal, die meisten von ihnen waren nach 10 Minuten 'raus... für diejenigen, die sich mit Scala schon ein wenig auseinandersetzen, waren die ersten 30 Minuten ein kontinuierliches Abnicken ("seen it, done that"); und für die verbleibende Zeit war Cake Pattern und Type Classes definitiv starker Tobak :-)
Produktivitätsschub mit Eclipse Mylyn, Git, Gerrit und Hudson
Seitdem ich vor einigen Jahren Mylyn für mich entdeckt habe, bin ich ein großer Fan davon: Das Aktivieren eines Tasks (entweder lokal in Mylyn notiert oder aus einem Bugtracker gesynct) sorgt dafür, daß der gesamte Editor-Zustand (welche Dateien wurden angefaßt, welche Dateien waren geöffnet, wo stand jeweils der Cursor) gespeichert wird. Wechselt man zwischen den Tasks wird der jeweilige Editor-Zustand automatisch wieder hergestellt. Das lästige "wo war ich denn?" beim Wechsel zwischen Tasks wird so deutlich schmerzbefreiter.
Hudson (bzw. Jenkins) hatte ich in jedem meiner letzten Projekte am Start (Continuous Integration ist wiiiichtig), git als SCM ist ohnehin über jeden Zweifel erhaben, und das Code-Review-Tool Gerrit habe ich schon seit geraumer Zeit auf dem Radar.
Was ich nicht wußte: Die neueste Version von Mylyn integriert auch Gerrit komplett in die Oberfläche von Eclipse. Im Verlauf des Vortrags wurde ein solche Review-Durchlauf komplett demonstriert, und ich muß sagen, daß das richtig gut aussieht.
Gerrit sorgt dafür, daß jeder Commit zunächst durch ein Code Review muß, bevor die Änderung im eigentlichen Master Repository landen. Das steigert sicher die Codequalität, allerdings frage ich mich, wie das in einem richtig großen Projekt skaliert: Die Chance von Merge-Konflikten beim Übernehmen von Änderungen in den Master dürfte da steigen, was manuelles Mergen und eine weitere Schleife durch den Gerrit-Prozeß bedeutet.
Trotzdem denke ich, daß der Einsatz von Gerrit eine Überlegung wert ist - je nach Projektgröße muß man sich geeignete Workflows überlegen.
Android Programmierung leichtgemacht
Ah, Lars Vogel in Action :-) Ich habe schon mal einen vorsichtigen Blick auf die Android-Programmierung geworfen, von daher gab's nichts Neues zu sehen... aber unterhaltsam war es dennoch :-)
Safety First - Android sicher programmieren!
Okay, das war der Vortrag, der (im Vergleich zu den meisten anderen Talks) tief abtauchte :-) Ohne tiefgehende Kenntnisse über die Entwicklung von Android-Apps war's gegen Ende schwierig zu folgen, dennoch lieferte der Vortrag eine gute Übersicht über die Security-Mechanismen von Android - und diverse Pitfalls, die bei der Anwendungsentwicklung zu beachten sind. Sollte einer der Zuhörer mal an den entsprechenden Punkt kommen, bieten die Vortragsfolien einen brauchbaren Aufhänger für das jeweilige Thema.
RESTful APIs - warum REST mehr als http und XML ist
Mein Talk! Über diesen kann ich natürlich nur aus einer anderen Perspektive berichten :-)
Ich hatte den Eindruck, daß Thema und Präsentation gut ankamen (der Vortrag fand im größten Saal der Konferenz statt und war rappelvoll), es gab am Ende interessierte Rückfragen. Spezielle REST-Frameworks zur Implementierung konnte ich nicht benennen (ich hatte bei der letzten größeren REST-API JAXB und Jersey im Einsatz), eine Empfehlung aus dem Auditorium war RESTEasy für JBoss.
Meine persönliche Konsequenz des Vortrags: Die Windows-Installation auf meinem Laptop hat ihre letzte Existenzberechtigung (das einfache Anstecken eines Beamers und der Zweischirmbetrieb mit Referentenansicht bei Powerpoint) verloren, nachdem sich Windows zunächst hartnäckig weigerte, in den Zweischirmbetrieb zu wechseln - und nach einem Reboot die Kooperation mit dem Präsentationsbeamer komplett verweigerte. Sowas passiert natürlich immer im "Ernstfall" - bei den Probeläufen daheim und im Büro gab es da nie Probleme :-/
Secure Software Development Lifecycle: Sichere Anwendungen von Beginn an
Es war der letzte Vortragsslot, was sowohl dem Referent als auch dem Publikum anzumerken war :-) Take-home-message (für mich nichts neues): Softwarequalität und Sicherheit sind keine "Features", die man nachträglich noch "dazukaufen" kann - sie müssen Teil des gesamten Entwicklungsprozesses sein. Das bedeutet, daß hierfür im Vorfeld(!) entsprechende Guidelines aufgestellt werden und die Team-Mitarbeiter geschult werden müssen.
Vom Referent emfpohlen wurde OpenSAMM, ein "Software Assurance Maturity Model" - eine Sammlung von Empfehlungen für das Aufstellen, Durchführen und die Bewertung solcher Prozesse. Bei der Recherche hierzu bin ich auch auf den Penetration Testing Execution Standard gestoßen - Penetration Tests können (sollten?) Teil eines Prozesses für die Entwicklung sicherer Software sein; üblicherweise werden diese zwar extern durchgeführt (wegen spezialisiertem Know-How und "Betriebsblindheit" des eigenen Teams), aber dennoch können die Informationen sinnvoll sein, um die Güte der eingekauften Leistung zu bewerten.
Alles in allem war's eine schöne, informative Konferenz - die Organisation klappte tadellos, es gab leckeres Essen, und auch in den Pausen wurden die Gäste prima versorgt. Ich hätte mir gewünscht, daß einige Vorträge noch ein klein wenig mehr in die Tiefe gegangen wären - aber natürlich ist so etwas immer etwas schwierig, da die Vorkenntnisse der Zuhörer im Vorfeld schwer abzuschätzen und fast immer eher inhomogen sind.