Softwareentwicklung


24
Nov 11

Devoxx 2011 Rückblick

Nach einigen Anläufen ist es mir dieses Jahr zum ersten Mal gelungen an der europäischen Entwicklerkonferenz devoxx teilzunehmen. Zumindest für Java Interessierte ist diese Konferenz eine gute Möglichkeit den aktuellen Zeitgeist aufzuspüren und sowohl Technologie-Evangelisten als auch Veteranen live zu erleben. Die Konferenz fand zum 10ten mal statt und wird (sehr routiniert und professionell) von der belgischen Java User Gruppe (BeJUG) organisiert. Das Motto lautete diesmal “Meet us in Paradise”. Das “Paradies” (geografisch verortet im Metropolis Kino am Stadtrand) wartete in Antwerpen mit sehr komfortablen Sitzen auf. Dorthin hatten sich über 3300 Geeks aus 40 Ländern zusammengefunden, um sich eine Woche lang zu den Themen rund um die Java Plattform, HTML5 und Android auszutauschen.

Montag: Anreise, leichtgewichtiges Enterprise Java & deployen in die Cloud

Die Ankunft im “Paradies” zögerte sich etwas hinaus, da sowohl mein Abflug aus Hamburg verspätet war, als auch der Bus am Brüsseler Flughafen sehr lange auf sich warten ließ. Als der “Express Bus” dann endlich losfuhr, traf ich ca. eine Stunde später bei allerherrlichstem Wetter in Antwerpen ein. Der Kinokomplex war noch himmlisch leer (zumindest machte es den Eindruck, als ich mich durch den Hintereingang näherte), bis ich dann in der richtigen “Ecke” endlich bei der devoxx Konferenz ankam.

Die erste Session, die ich besuchte, war etwas nebulös Duke’s Duct Tape Adventures benannt, Bert Ertman und Paul Bakker führten aber sehr anschaulich durch das Erstellen einer Java EE 6 Applikation (Slides). Dies war ganz nebenbei mein erster Kontakt zu dem Projekt forge, das per Kommandozeile in einfacher und eleganter Weise erlaubt Artifakte zu generieren und zu deployen. Demonstriert wurde das anhand von JBoss AS 7 und Red Hat OpenShift, das just an diesem Tag in die public beta überging.

Im Anschluss an das erste Mittagessen (das in der Regel eher bescheiden ausfiel) gab es “Spring into the Cloud” von Chris Richardson (seines Zeichens Gründer von cloudfoundry, nun Teil von vmware) und Josh Long (hoch energetisch, Mr. Tausendsassa und Autor zahlreicher Bücher im Spring Umfeld). Der cloudfoundry Software Stack ist zu großen Teilen Open-Source, damit ist es also möglich darauf basierende eigene Cloud Infrastruktur aufzubauen, ein großer Vertrauensvorsprung durch den vmware den Eindruck eines Lock-Ins verhindern möchte. Die Kommandozeilentools für die Verwaltung der Instanzen sind übrigens unter ubuntu bereits vorinstalliert (mehr Details).

Ein kurzer Zwischenstop bei Tor Norbye und Xavier Ducrohet zeigte den aktuellen Stand der Tools für die Entwicklung für Android. Interessanterweise steht es wohl nach wie vor schlecht in Sachen Emulator (man kommt nicht um ein Deployment auf einem Gerät herum), dafür wachsen aber die Möglichkeiten eine Applikation für mehrere Geräte unterschiedlicher Natur auszulegen (dank intelligenter include Methoden). Um Bugs in einem Android Projekt frühzeitig aufzuspüren, scheint lint das Tool der Wahl zu sein.

Begeistert hat mich die Session “Forge: new ground in Rapid Enterprise Java Development” von Lincoln Baxter III und Dan Allen. Ganz im Sinne von Nerds hatten sie keine einzige Folie gezeigt, sondern begannen mit ASCII Art und starteten gleich mit der Forge Shell durch um ein Java EE 6 Projekt Stück für Stück aufzubauen und unter JBoss AS 7 oder Glassfish zu deployen. Der Blogeintrag von Kevin zeigt euch Details, was man damit anstellen kann. Insgesamt sieht mir dieser Ansatz vielversprechend und sauber aus, und könnte insbesondere zu Projektbeginn eine Beschleunigung darstellen.

Den Abschluss für Montag machte für mich der Vortrag von Matthias Sohn (SAP) über Code Review with Git and Gerrit (Slides). Leider war diese Session relativ trocken, vielleicht hätten die Interaktion mit dem Zweitvortragenden von Twitter etwas mehr Spannung hereingebracht. Ein Review Workflow wird mit von dem ursprünglich bei Google entwickelten und nun als Open-Source verfügbaren Tool Gerrit vereinfacht. Trotz anfänglicher Bedenken bei den Projektbeteiligten bei SAP, scheinen inzwischen mehrere Hundert Entwickler dort damit zu arbeiten und die Transparenz über Änderungen scheint als Ergänzung (aber bestimmt nicht als Ersatz) für Pair Programming zu helfen.

Dienstag: Camel, Groovy und Play! BOF

Der zweite Universitätstag begann für mich mit einer Session zu Apache Camel, CXF, ActiveMQ & ServiceMix von Charles Moulliard (Slides, Blog). Es war ein Vortrag, der sowohl den Zusammenhand dieser Projekte aus dem Enterprise Architecture Integration (EAI) Umfeld vorstellte, als auch Einblicke via Beispiele demonstrierte (Karaf war dabei auch im Spiel). Charles bewahrte auch bei den ziemlich komplexen Demos Ruhe, den so manchmal verweigerte die ServiceMix Skripte ihre Dienste. Interessant fand ich auch das vorgestellte Tool fabric, mit welchem sich eine Verteilung der ServiceMix Dienste auf mehrere Systeme leicht bewerkstelligen lässt.

Andres Almiary stellte Neues aus dem Groovy Ökosystem (Slides, Blog) vor, insbesondere die Vielfalt im Griffon Umfeld war mir in diesem Ausmaß nicht bewusst: über 170 Plugins existieren und ermöglichen mit Hilfe einer DSL schnell UIs in Groovy für SWT, JavaFX und Swing zu entwickeln. Desweiteren wurden auch Grails (2.0 steht vor der Tür), Gaelyk, Easyb und Spock vorgestellt: Hut ab vor den Entwicklern, die dieses wirklich sehr produktive Ökosystem in den letzten Jahren relativ still geschaffen, aber irgendwie nie die verdiente Aufmerksamkeit erhalten haben. Zweiflern sei gesagt, dass mit codenarc eine statische Codeanalyse (á la PMD und Findbugs) ermöglicht wird.

John Ferguson Smart, der extra aus Neuseeland angereist war, sprach zum Thema “From Continuous Integration to Continuous Delivery” (Slides). Unter Continuous Delivery ist nach seinen Worten der fachlich getriebene Wunsch jederzeit deployen zu können zu verstehen. Wie schlägt sich dies im Entwicklungsalltag nieder? Er warnte dazu eindrücklich vor der Verwendung von Feature Branches, es sei denn, man integriert ständig die Änderungen des Feature Branches auf den Hauptentwicklungszweig (z.B. anhand von Jenkins). Zur Verdeutlichung zog er dazu die Analogie mit einem Kanarienvogel, der in früheren Zeiten den Bergbauarbeitern als Hilfe diente und sobald der Sauerstoffgehalt sank mit dem Singen aufhörte.

Bereits während des Tages begann der Aufbau der Aussteller: genau wie der Typesafe Stand erfreute sich der MongoDB Stand sehr großer Beliebtheit (ebenso IntelliJ, iText), im Vergleich zum Oracle Stand (und ganz geschweige vom HP Stand, der bis zum Donnerstag komplett verwaist war). Google buhlte mit (essbaren) Icecream Sandwiches um die Gunst der Teilnehmer, und hatte eine sehr im Hintergrund platzierte Google TV Settop Box von Sony mit Android zu zeigen. Merkwürdigerweise war der Stand von SpringSource/vmware im absolut letzten Winkel versteckt, passte aber irgendwie zu dem sehr zurückhaltenden Auftritt, einzig die wirklich coolen Cloudfoundry T-Shirts und cloud-on-a-USB-Stick konnten das Bild etwas aufhellen.

Abends gab es dann noch eine Play! Framework BOF Session, mit dem in letzter Sekunde eingetroffenen Nicolas Leroux und Nicolas Martignole. Sie stellten die Beweggründe für die Entwicklung des Frameworks vor, und zeigten als Demo eine Videochat Web Applikation. Aufgrund des wackligen WLANs kam zwar keine Verbindung zustande, trotzdem hatten die Teilnehmer in dem völlig überfüllten Raum einen guten Eindruck von der Mächtigkeit und Eleganz von Play! gewinnen können. Leider gab es wenig Scala Beispiele zu sehen, dafür kam ich am nächsten Tag in der Session von Guillaume und Sadek entsprechend auf meine Kosten.

Mittwoch: Play!, Akka und PhoneGap

Am Mittwoch begann dann der offizielle Teil der Konferenz mit einer Oracle-lastigen Keynote von Henrik Ståhl und Mark Reinhold (siehe Fotos oben): Kernaussage war das Bekenntnis von Oracle zu Java als eine vibrante Plattform zu erhalten bzw. weiter auszubauen, O-Ton: “We will always be there for you”.

Highlight des Tages war für mich definitiv “Play 2.0, a Webframework for a new era“. Diese Session begannen Guillaume Bort und Sadek Drobi mit der Verkündung, dass mit der Version 2.0 Play! Teil des typesafe Technologiestacks wird. Damit manifestiert sich nicht nur die Affinität zu Scala und Akka, sondern auch die Bestrebungen kommerziellen Support leichter in einem größeren Maße anbieten zu können (Announcement).
Das Frühjahr 2012 wird auf alle Fälle interessant, wenn dann der Technologiestack bestehend aus Scala 2.10, Akka 2 und Play! 2 ans Tageslicht tritt.

Donnerstag: Highlights am laufenden Band

Die Keynote von Tim Bray (den ich zuletzt auf der XML Europe 2001 traf) zum Thema Android rief das gesamte Publikum auf, sich der Entwicklung für mobile Geräte anzunehmen (“Mobile is the place to be”). Er versäumte nicht die Gelegenheit, kurz darauf hinzuweisen, dass wesentlich mehr Frauen auch auf Software-Konferenzen vertreten sein sollten (und nicht von diesem Berufszweig ausgeschlossen sein sollten, was wiederum eine Diskussion für sich ist). Tim Bray’s Keynote war definitiv humorvoll, appellierend (z.B. mehr Designer zu Rate zu ziehen), enthusiastisch und auch mit einer Portion Gesellschaftskritik. Seine These gerade durch die Öffnung von Android als Open-Source käme der Markt für günstige Phones weiterhin unter Druck, sodass auch Schwellenländer vermehrt Smart Phones nutzen werden und gerade in diesem Sektor Applikationen, die wirklich Menschen helfen, dringend benötigt werden. Auf der High-End Seite werden Phones mit 4 Prozessoren (plus GPU) bald keine Seltenheit mehr sein, so dass Nebenläufigkeit auch bei mobilen Geräten eine große Rolle spielen wird.

Der mit Spannung erwartete Vortrag von Martin Odersky What’s in store for Scala? gab Einblicke in Scala 2.10 (Slides) welches im nächsten Frühjahr erscheinen soll. An Scala scheiden sich aus meiner Sicht nach wie vor die Geister, akademisch kann man wohl nicht viel an dieser Sprache aussetzen, jedoch stehen das komplexe Typsystem und die vielen Varianten zu einer Lösung zu kommen wohl im Moment einer weiten Adaption noch etwas im Wege. Eine provokanter Artikel ist vor kurzem unter dem Titel Scala feels like EJB 2 erschienen. Neue Sprachen auf der JVM waren eindeutig im Fokus dieser Konferenz (was man anhand den Sessions zu Groovy, Scala, Clojure, Fantom, Kotlin und Ceylon). Relativ klar scheint, dass es nicht auf die eine neue Programmiersprache hinausläuft, sondern wohl eher spezialisierte Sprachen, die einen Teilsektor abdecken werden: es bleibt auf alle Fälle spannend.

Der coolste Vortrag der Woche, kam definitiv von Matt Raible und lautete: “HTML5 with Play! Scala, CoffeeScript and Jade” (Slides). In seiner authentischen Art schilderte er Erfahrungen, die er während der Entwicklung eines GPS Trackers als mobile HTML5 Applikation gemacht hat, den er für seine Fahrrad- und Skitouren einsetzt (Video). Erst am Wochenende vor seinem Vortrag konnte er – dank PhoneGap – dann die Applikation in Betrieb nehmen. Von ihm stammt die Redewendung “… and then I blogged about it“.

Sehr unterhaltsam war auch die Live Aufnahme der Java Posse Episode 370. In einer Art Game-Show sollten unter nicht ganz zufällig ausgewählten Kandidaten ein Ersatz Posse Mitglied bestimmt werden. Locker zeigte sich Mark Reinhold, der zum Knacken des Code Rätsels kurzerhand sein Laptop zum Kompilieren zuhilfe zog.

Den Abschluss für mich machte am Donnerstag Abend dann Dick Wall mit einem Vortrag über “Courage in Software Development” (Podcast). In diesem stellte er seine Skepsis der Software Craftmanship Bewegung (und generell allen Movements) dar, und erläuterte, dass die Qualität kein Selbstzweck sein dürfte, sondern immer in Zusammenhang des Kundennutzens. Sein Ermunterung aus einer ganz pragmatischen Sichtweise war: Mut an den Tag zu legen, Dinge (z.B. des Projektes an dem man einsteigt) zu hinterfragen und neugierig neue Dinge auszuprobieren (Fail early, fail often).

Freitag

Der Freitag begann mit einem technischem Diskussions-Panel, bei dem diesmal neben Oracle und Google Vertretern auch Ben Evans (London JUG) und Emmanuel Bernhard (Red Hat). Der Microsoft Abgeordnete spielte nur eine sehr nebenläufig Rolle (und wurde sogar gar nicht mit vom Kameramann berücksichtigt). Die Qualität der Diskussion war überwiegend gut, und bekam immer wieder durch Sticheleien von Joe Nuxoll (Javaposse Mitglied) und den Drohungen von Carl Quinn, der im Hintergrund mit selbstgebasteltem Schwert den Diskussionsteilnehmern auch bei brisanteren Fragen eine Antwort entlockte.

Definitiv aus aller erster Hand war das Resümee von Joshua Bloch über “The Evolution of Java: Past, Present and Future“. Begonnen hat er den Vortrag mit alten Slides von James Gosling aus dem Jahre 1997 (siehe Fotos). Der Vortrag war ziemlich intensiv, schliesslich liess Mr. Bloch nochmals alle Java Versionen Revue passieren und bewertete die Sprach Features auf die Güte hinsichtlich der von James Gosling aufgestellten ursprünglichen Carta. Es ist kein großes Wunder, dass bei der Bewertung Serialization und Generics ziemlich schlecht abschnitten. Sein Ausblick auf Flaws in JDK 7 ist aber eher gelassen, wollen wir hoffen, dass dem so ist.

Leider verlief die Session über die neue von Gavin King initiierte Programmiersprache Ceylon enttäuschend, es fehlten mir sowohl die Motivation als auch die Vorteile und Ausblick auf die Sprachkonzepte, stattdessen wurden etwas Eclipse Support und triviale Beispiele gezeigt. Insgesamt hat mich das jedenfalls nicht sehr überzeugt, und im Nachhinein habe ich mich etwas geärgert nicht doch lieber die Session “What Shazam doesn’t want you to know” als quasi krönenden Abschluss anzuhören. Dank den Video Aufzeichnungen wird diese (so wie alle weiteren Sessions) im Laufe des Dezembers wohl auf parleys.com online verfügbar sein.

Bei einem belgischen Bier auf dem Marktplatz von Brüssel konnte ich die Konferenzeindrücke mit Ausblick auf die absolut sehenswerte Altstadt in Brüssel verdauen, bevor es dann auf zum Heimflug ging.

Zusammenfassung

Meine persönlichen Highlights waren die Vorträge von Matt Raible, Guillaume Bort, Sadek Drobi und Andres Almiray, in visionärer Hinsicht Tim Bray und auf menschlicher Ebene: Dick Wall. Neben den Vorträgen, war es auch großartig mit anderen Teilnehmern (die ich vorher teilweise nur per twitter kannte) direkt ins Gespräch zu kommen und weitere Diskussionen zu führen, insbesondere das Treffen der Play! User am Donnerstag Abend im Cafe Axxes.

Der Devoxx Organizer Stephan Janssen, dem großer Dank für die Organisation dieser sehr gelungenen Konferenz gebührt, hat unter The Good, The Bad and the Ugly die Woche aus seiner Sicht zusammengefasst. Und ganz nebenbei: darunter befinden sich gute Nachrichten in Sachen Essen: nächstes Jahr fällt wohl die Restriktion, dass der hauseigene Caterer herangezogen werden muss, es kann also auf besseres Essen und insbesondere leckeren Kaffee gehofft werden. Aber selbst falls nicht, an (italienischen) Restaurants scheint es in Antwerpen jedenfalls nicht zu mangeln.

Bonus Track: Die Attraktivität der Sessions kann auch aus den Benutzerzahlen der devoxx Android App abgelesen werden. Eine weitere gute Zusammenfassung (inklusive Linksammlung) findet sich auf Tomasz Dziurko’s Blog. Über die technische Details hinter den Kulissen der devoxx hat Nicolas Martignole berichtet.


2
Jun 08

Acrobat.com mit REST API gestartet

Mit dem heutigen Launch der Public Beta von acrobat.com stehen Entwicklern ab sofort die Acrobat.com Document Services zur Verfügung. Nach dem Registrieren erhält man einen API Schlüssel, den man für mehrere tausend Requests die Stunde verwenden kann, um z.B. Dokumente hochzuladen, mit Share anderen Leuten zur Verfügung zu stellen oder PDFs server-seitig zu erzeugen. Mehr darüber kann man nachlesen unter:

  • Einführung
  • REST API Referenz
  • Es existieren bereits Bibliotheken, um aus eigenen Programme darauf zuzugreifen für die Sprachen Java (bereitgestellt von Adobe), AS3, Python, Ruby und ColdFusion (alle anderen von der Community entwickelt)

29
Mrz 08

Testen der Domain Klassen in Grails

Nach dem die Grails Dokumentation zum Thema Testing (Kapitel 9) leider nicht allzu in die Tiefe geht, war ein weiteres Mal die Grails Mailing Liste gut für weitere Tipps. Hier der entsprechende Thread Beitrag von corey mit Vorschlägen zum Prüfen der verschiedenen Grenzfälle.

Das Testen der Domainklassen scheint auf den ersten Blick trivial zu wirken, da man in Grails durch die Constraint Formulierungen und Assoziationen der Klassen untereinander doch einige Fälle im echten Leben antreffen kann, sind die Tests bereits auf der Domain Ebene sehr von Vorteil.


22
Aug 07

Eleganter und schlanker: Hudson vs. CruiseControl

Immer wieder stellen sich mir die Nackenhaare auf, wenn für einen neuen Branch die Konfigurationsdatei von CruiseControl um ein neues Projekt erweitert werden muss, damit die kontinuierlichen Integrationsbuild auch weiterhin rauspurzeln. Definitiv nicht die feine Art der Skalierung. Ein Vergleich von Thoughtworks, der ein paar Vorteile des relativ neuen Tools Hudson zusammenfasst macht auf alle Fälle Appetit. Das JBoss Projekt setzt Hudson ein, hier der Beweis. Vielleicht gibt es sogar in naher Zukunft einen Perforce Adapter


24
Mrz 06

Lernen vom “Eclipse Way”

Details zur Arbeit des Eclipse-Teams stellt Martin Lippert in der neuesten Ausgabe des Eclipse Magazins (Vol. 6) vor. Es ist vor allem für den Open-Source Bereich beeindruckend — und erinnert schon fast an die Präzision der Schweizer Uhrmacher — wie genau die Release Daten eingehalten werden. Immerhin müssen mehr als 60 Kernentwickler während des agilen Entwicklungsprozesses versuchen, die Stabilität des Gesamtsystems rechtzeitig zum Major Release zu gewährleisten. Besonders auf die Evolution der API richtet sich die Aufmerksamkeit, nachdem Eclipse eine wichtige Plattform für diverse kommerzielle Produkte geworden ist. Die 12 Monate zwischen zwei Major Release teilen sich ungefähr so auf: Milestone Builds (9 Monate), End Game (1-2 Monate) und Decompression (1 Monat). Gerade diese fehlt ja in sovielen Softwareprojekten und ist sehr wichtig, um dem Team Zeit für Erholung und Reflektion zu geben.

Die Originalpräsentationen (aus Vorträgen von der EclipseCon 2005) auf die sich der Artikel beruft sind hier zu finden:


7
Jan 06

web.py: Dreikäsehoch? Von wegen!

Als ob Alpha-Geek Aaron Swartz mit der Gründung seines Start-Ups nicht genug zu tun hätte, entwirft er in 3 Tagen mal eben das “Anti-Framework Framework” webpy.org. Die API besticht durch Klarheit & Eleganz, das sich Django zwar auch auf die Fahnen schreibt, er dort aber unter der Haube vermisste.

Die Hintergründe von web.py sind auf jeden Fall eine Lektüre wert.


11
Nov 05

Cross-Browser Akzeptanztests

Ein weiteres feines Nutzzeug aus dem Hause Thoughtworks gilt heute die Aufmerksamkeit. Auch wenn es eher an den Chemie Unterricht erinnert (lang, lang ists her), so ist Selenium laut Webseite The coolest web testing tool money can’t buy. Es geht den mit Fitnesse eingeschlagenen Weg konsequent weiter, die Akzeptanztests einer Webapplikation werden hier unmittelbar im Browser ausgeführt (JavaScript sei Dank).

Die Testschritte werden im FIT Stil in einer HTML Tabelle gehalten und Assertions fröhlich eingebettet. Auch an continuous integration ist gedacht, so kann per ant task beispielsweise Firefox mit dem Start der Testsuite beauftragt werden, und auf eine speziell zur Verfügung gestellte Ergebnisseite. Weitere Inspirationen entnehme man dem ausführlichen Bericht von Grig Gheorghiu (sowie Teil 1).


31
Aug 05

Extremely Successful Software

Ein Bericht über die Zutaten eines sehr erfolgreichen Softwareprojektes in Australien. Wenig verwundernswert, dennoch viel zu oft missachtet, ist die Kombination aus guten Entwicklern, “Best practices” und der Auswahl der richtigen und verstandenen Softwarekomponenten.

Insgesamt scheint der Artikel allerdings etwas sehr als Werbung für die Praktiken von Extreme Programming (XP) ausgelegt zu sein. Interessant ist allerdings der Bezug auf den japanischen Begriff muda (für vergeudeten Aufwand bzw. Sinnlosigkeit).


30
Jun 05

Web service performance tips

The “Java Performance Tuning” site is known to deliver high quality tips, and this tipp collection (together with a long link list) is especially devoted to optimizing web service consuming resp. publishing operations.


22
Jun 05

Java Annotation Facility – A Primer

JDK 5 has changed Source Code Generation in a seminal way, an article by Krishnan Viswanath about the new Java Annotation Facility.