Seam är ett nytt intressant ramverk från JBoss för att bygga webbapplikationer i JSF med EJB3/Hibernate3 som persistensramverk.
Seam fokuserar på enkelhet och på att slippa skriva en massa ramverkskod och ”klisterkod”, istället används annotations flitigt.

Seam kan till viss del jämföras med Spring och använder självklart också IoC- och AOP-tekniker. Dock tillför Seam även andra saker såsom ”Conversations” samt ”Subversion of Control” eller ”bijection”.

Saxat från Seam’s introsida:
It turns out that the combination of Seam, JSF and EJB3 is the simplest way to write a complex web application in Java. You won’t believe how little code is required!

Det finns några speciellt intressanta egenskaper hos Seam:

  • Conversations – En konstruktion som möjliggör att på ett effektivt och robust sätt utföra ”långa transaktioner” (tex Wizard) som tål att användaren gör konstiga saker i webbläsaren (back, new window, etc).
  • Subversion of Control – Seam synkroniserar kontinuerligt data mellan modell,vy och controller i båda riktningarna (bijection) som dessutom är beroende av context (tex session eller conversation).
  • Minimalt med XML- och Javakod, desto mer annotations. Detta gör att kod relaterat till en viss sak inte är utspridd i många java- eller XML-filer.

Seam kan köras i flera olika konfigurationer:

  • I en EJB3-Applikationsserver (JBoss)
  • Med JBoss Embeddable EJB3 container i valfri servletcontainer, tex Tomcat.
  • Med Hibernate3 i valfri servletcontainer ”unmanaged” eller managed (JBoss Microcontatiner).

Fn är det dock endast JSF/JSP som gäller.

Demo och tutorial – Koden säger mer än tusen ord

Gavin King har gjort en liten demoapplikation för hotellbokning och en mycket bra tutorial där denna förklaras. Inget skitsnack, bara relevant information.
Följ denna instruktion för att installera och köra demoapplikationen ”seam-booking”. Det är filen ”jboss-4.x.x-installer.jar” som gäller för att installera JBoss med EJB3-profil.
Det är ganska imponerande lite kod som behövs i denna applikation. Seam har ansvaret för en hel del av vad utvecklaren tidigare fick koda själv, på gott och ont naturligtvis.
Men så länge den koden fungerar stablit och dessutom är sånt man helst vill slippa koda själv, så är det en fördel och minskar risken för buggar.

I skrivande stund är Seam i version 1.0 beta, dvs inte riktigt ”production-ready” men de utlovar detta ”snart”.
Seam verkar lovande och kan nog bli en stor spelare i ligan av webbapplikationsramverk, speciellt med tanke att det är från JBoss och den täta integrationen med Hibernate3.

Mer läsning: