You are on page 1of 17

Framework Deathmatch:

Spring vs Seam

Thomas Wiradikusuma (Spring)


Joshua Jackson (Seam)

Java User Group Indonesia


JaMU 07.03
March 17, 2007
Why Spring?
• Cleaner code
• Streamlined application configuration
• Nice integration with popular open source
products
• First class AOP support
• Enterprise-scale security: Acegi
• Highly flexible MVC
• Abstracted data access (JDBC is OK)
• Enterprise Java without EJB
• Testing is easy
Spring architecture
Spring architecture,
cont’d
Why Seam?
• Merge JEE 5 standards (EJB 3.0, JPA, JSF,
Annotation) seamlessly
• Stateful by design
• Bijection
• Integrated Ajax (ICEfaces and Ajax4JSF)
• Business process integration (jBPM)
• Business rules integration (Drools)
• Workspace management
• Deliver complete stack (from JBoss & RedHat)
• Seam Text and EL enhancements
• Probably will be a standard (JSR-299: Web
Beans)
Seam architecture
Seam architecture,
cont’d
Let the battle begin!

• Spring 2.0
• Seam 1.2
Development

Aspect Spring Seam


Project startup AppFuse Seam-gen

IDE support SpringIDE JBoss IDE

Supplied Exhaustive Good enough


documentation
Logging Typical Nice @Logger
Testing org.springfram SeamTest for
ework.test.* for TestNG
JUnit
Configuration

Aspect Spring Seam


Object scoping Predefined, Predefined, not
extensible extensible
Custom Extensible No
configuration
definition
XML Required Optional
Annotation XDoclet-based, Built-in
for transaction
Web MVC

Aspect Spring Seam


Web frameworks You name it JSF
View You name it JSP, Facelets
Decorators Tiles, Sitemesh Facelets
Pageflow SWF Seam Pageflow
(stateful)

Portlet Yes Yes


Enterprise services

Aspect Spring Seam


Scheduling Quartz EJB3
@Timeout
E-mail Freemarker, Facelets
template Velocity
E-mail No MDB
receiving
Security Acegi JAAS using
JBoss Rules
EJB 2.x Yes No
Persistence &
transaction
Aspect Spring Seam
Data access JDBC, JPA
Hibernate, (implementati
JDO, iBATIS, on is server-
TopLink, JPA specific),
Hibernate
Transaction Abstracted CMT and BMT,
(lets you Hibernate or
scale) JBoss JTA
Remoting

Aspect Spring Seam


Ajax 3rd party Built-in
library (e.g.
DWR)
Hessian, Built-in No
Burlap
JSON No No
Web service JAX-RPC, JAX-WS (EE5)
XFire
Deployment

Aspect Spring Seam


Minimum JDK 1.3 1.5, 1.4 (with
Retroweaver)

Servlet container Yes Yes (using JBoss


micro container)

Application Yes Yes


server
Misc

• Dynamic language support


(JRuby, Groovy, etc)
• AOP
• Community
• Product maturity
• Commercial support
• Jobs available (career)
Conclusion

• Know your project inside out


• Know the framework inside out
• Don't abuse
• Mix and match
• Framework integration
• You decide

You might also like