Saturday, September 30, 2006

AppFuse Demo Videos

Matt Raible hat Videos auf der AppFuse Wiki Seite veröffentlicht. So kann man sich einfach einen Überblick über die verschiedenen Funktionen von AppFuse verschaffen.


Sunday, September 24, 2006

Liste mit weiteren Build Tools

Nachdem ich mich nun etwas mit anderen Build Tools auseinandergesetzt habe, bin ich auf folgenden Link gestossen: http://damagecontrol.codehaus.org/Continuous+Integration+Server+Feature+Matrix

Diese Seite enthält einen genauen Überblick über die wichtigsten Continuous Build Tools.

Monday, September 18, 2006

Kontinuierliches Builden und Testen mit Continuous Integration

Wer schon einmal an Projekten mit mehreren Programmierern gearbeitet hat, kennt die Probleme, die dadurch manchmal auftreten können. Es existieren meistens zwar genaue Regeln, was wie und wann von wem in das Repository eingecheckt werden darf, trotzdem gelangen immer wieder Codefragmente ins System, die das Programmverhalten immens stören.
Entweder lässt sich das Programm nicht mehr kompilieren, oder das Programmverhalten wird durch den neuen Code ungewollt verändert.

Um solche Fehler schneller zu finden, existieren seit geraumer Zeit sogenannte "Continuous Integration Systems", meistens Server basierte Systeme, die in regelmäßigen Zeitabständen den Code auschecken und ihn zumindest bauen, in erweiterten Systemen auch gleich die Tests ausführen und die Resultate an passenden Stellen veröffentlichen.

Die bekanntesten Vertreter dieser Systeme dürften "Anthill" und "CruiseControl" sein.
Neu in dieser Familie ist das Projekt "Continuum".

Die Installation dieses Servers ist denkbar einfach:
  1. Archivdatei downloaden
  2. Entpacken
  3. Gegebenenfalls die Ports des Servers anpassen (Diese liegen per Default auf 8080 und 8000)
  4. Server starten
  5. Administrator Kennung + Passwort vergeben.
Continuum kann out of the Box mit den SCM Systemen CVS und SVN umgehen. Ein weiterer Pluspunkt ist die Unterstützung von ANT und insbesondere von Maven1 und Maven2.
Besonders bei Maven spielt Continuum seine Stärken aus:
  • In der Maven Projekt Datei die SCM URL definieren.
  • Die Projekt Datei (bei Maven2 die pom.xml) per Uploadfunktion dem Contiuum Server bekannt geben
  • Und schon lädt der Server die aktuelle Version des Programms aus dem Repository.
Sollte ein Mavenprojekt aus mehreren Unterprojekten bestehen, so konfiguriert Continuum diese automatisch.

Per Default lädt nun der Server alle 24 Stunden die neueste Version des Programms vom Server und führt vordefinierte Taks aus. Im Falle von Mavenprojketen ist dies "clean install".
Natürlich kann man diese Liste jederzeit um eigene Targets erweitern, z.B. "clean site site:depoly", und schon kann man jederzeit den aktuellen Stand der software einsehen.

Kombiniert man sein Projekt nun noch mit Tools wie Cobertura oder Clover, so erhält man genaue Statistiken über die Testabdeckung seines Projekts.

Fazit:
Wer an großen Projekten arbeitet, sollte sich überlegen, auf Continuous Intgration Systeme zurückzugreifen. Continuum stellt die einfachste Möglichkeit bereit, ein solches System schnell und einfach zum Einsatz zu bringen.

Links:

Thursday, September 14, 2006

AppFuse: J2EE ohne Kopfschmerzen

Wer schon einmal eine Webapplikation auf der Basis von Java von Grund auf selbst erstellt hat, weiß, dass eine Menge Arbeit erledigt werden muss, bis die erste einfache Seite im Browser erscheint. Da müssen Frameworks eingebunden und konfiguriert werden, diese dann auch noch untereinander verdrahtet werden, massenweise Dokumentationen gewälzt werden, um die besten Wege herauszufinden, die einzelnen Bestandteile zu konfigurieren, build Skripte erstellt werden etc. etc.

AppFuse (Erstellt von Matt Raible) hat es sich zum Ziel gesetzt, genau diese Hürden so weit wie möglich zu beseitigen.

AppFuse stellt eine Grundapplikation zur Verfügung, die aus 3 Schichten besteht:

  1. Die Datenzugriffsschicht (DAO Layer). Diese Schicht verwendet standardmässig Hibernate, kann aber auch jederzeit auf ein Alternative
  2. Die Anwendungslogikschicht (BusiniessLogic, ManagerLayer): In dieser Schicht wird die eigentliche Geschäftslogik gebündelt. Ausserdem wird über diese Schicht das Transaktionsverhalten gesteuert.
  3. Die Webschicht (WebLayer): Als ViewFrontend wird Standardmässig Struts verwendet, es besteht aber die Möglichkeit, sehr einfach auf SpringMVC, JSF, Tapestry oder WebWork zu wechseln.
Die einzelnen Schichten und Frameworks werden mit Hilfe des Springframeworks miteinenader verbunden. Dies ermöglicht es z.B., sehr einfach AOP in seine Anwendung zu integrieren oder Remoting Technologien wie RMI, HTTPInvoker oder ähnliches einzusetzen.

Für jede dieser Schichten sind bereits Tests integriert. (AppFuse setzt stark auf testdriven Development)

Standardmäßig wird AppFuse bereits mit Klassen zur Repräsentation von Usern und Rollen ausgeliefert.

Nachdem man die Grundanwendung deployed hat, stehen einem folgende Features sofort zur Verfügung:
  1. Neue User können sich registrieren
  2. User können sich anmelden
  3. Für User mit der Administratorrechten besteht die Möglichkeit, User anzulegen, zu ändern oder zu löschen.
Das Ganze wird durch Webseiten repräsentiert, die vollständig auf XHTML und CSS Templates basieren.

AppFuse eignet sich nicht nur als QuickStart Application, auch als anschauliches Lernmaterial eignet es sich vorzüglich, da die Tutorials eine detailierte Einführung in alle in AppFuse verwendeten Breiche bereitstellt. Wer also Hibernate, Spring oder ähnliches lernen will, sollte einen kurzen Blick in AppFuse werfen.

Ein weiterer Pluspunkt ist die sehr aktive Mailingliste. Hier kann man nicht nur Fragen zu AppFuse stellen, sondern bekommt normalerweise auch Hilfe zu frameworkspezifischen Fragen. Normalerweise muss man nie länger als einen Tag auf eine Antwort warten, in den meisten Fällen erhält man die Antwort schon innerhalb einer Stunde.

Diese Usercommunity hat inzwischen auch viele Tutorials erstellt, mit deren Hilfe man sogut wie jedes in J2EE verwendete Tool in AppFuse integrieren kann. Es werden Tutorials für Axis, XFire, Lucene und Compass, EasyMock und viele Frameworks mehr angeboten.

Zur Zeit ist AppFuse mit der Version 1.9.3 verfügbar, aber Version 2.0 soll in Kürze veröffentlicht werden.

Was bleibt zu sagen: Wer sich mit dem Bereich J2EE beschäftigt, sollte einen Blick auf AppFuse werfen. Sollte jemanden AppFuse zu stark vorkonfiguriert sein, mit Equinox stellt Matt Raible eine schlank Version von AppFuse bereit.

Wehr noch mehr Gründe benötigt, findet in dem Artikel 7 simple reasons to use AppFuse mehr

Erster Blog Eintrag

Nachdem ich mich lange Zeit gegen Blogs gewehrt habe, ist es nun so weit:

Ich habe endlich auch ein eigenes Blog.

Grundsätzlich kam es zu dieser Entscheidung, da die meisten interessanten technischen Artikel zur Zeit anscheinend hauptsäachlich in Blogs veröffentlicht werden, und so wie es aussieht, auch so von der Community akzeptiert werden.
Und um mir das lästige editieren von HTML Seiten / Pflegen von Wikis zu ersparen, werde ich in Zukunft auch über dieses Blog meine Erfahrungen und Tutorials über diesen Weg veröffentlichen.

Es werden wohl hauptsächlich Artikel über das Springframework (www.springframework.org), AppFuse (appfuse.dev.java.net) und allgemein zum Thema JAVA bzw. J2EE sein.
Da deutschsprachige Einträge zu diesem Thema noch mehr oder weniger Mangelware sind, werde ich hier auch fürs erste auf Deutsch schreiben...