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

2 comments:

Anonymous said...

AppFuse gefällt mir zur Zeit sehr gut. Eine Frage habe ich noch. Vielleicht antwortet mir hier jemand: Gibt es bei Appfuse die Möglichkeit, dass man 2 Archive deployt (1 war-Archive und 1 jar-Archive mit Backend-Logik). Ich möchte z.B. mit anderen Web-Anwendungen auf das Backend zugreifen.

Peter Schneider-Manzell said...

Soweit ich weiß, erstellt ApFuse sowieso aus der Persistenzschicht und der Logikschicht eigene JAR Dateien, die dann wiederum in das WAR Archiv gepackt werden.

Für die ServiceSchicht lautet die Datei "projektname"-service.jar, für die DAO Schicht "projektname"-dao-jar.

Man kann die beiden JARs auch per ANT erzeugen, die targets lauten "package-dao" und "package-service"

Post a Comment