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