Jboss SEAM is by far the best programming framework for Java EE development as it solves most of the problems which arose for achieving a true MVC 2 implementation. All of the other frameworks like Struts and Spring MVC when used with presentation layer specifications like JSP and JSF 1.x while almost succeeding in the arena, when it came to agile development, theyÂ created at least as many other problems – if not more -Â as the ones they solved. Enter Jboss Seam which uses JSF 2 for the presentation layer which is truely a Java EE specification and for the rest of the MVC paradigm which consists of the business logic and the data persistence layer achieved respectively by EJB and JPA.
Joesph Faisal Nusairat had this to say in his book Beginning Jboss Seam from Novice to Professional.Â
For years developers realized that the JavaServer Pages (JSP)/servlets paradigm was not enough to create enterprise-level web pages. That model provided the capability for a web tier that could pass objects from the client to the server, but essentially that was it. For most developers, this simple paradigm was not enough; more-complex operations were needed, and developers found themselves writing infrastructure code to deal with the shortcomings of the Servlet specification. Eventually, all the ideas learned from creating custom infrastructure code resulted in the web frameworks we know today, such as Apacheâ€™s Struts and Tapestry, OpenSymphonyâ€™s WebWork, and so forth. The Java community also got together and through the Java Community Process (JCP) created the JSF specification to tackle some of the issues raised and deal with the shortcomings of the Servlet specification.
Even though we now have web and business tiers with improved functionality, we have still been forced to create the plumbing code needed to connect them together. With Seam, however, these two areas can now focus more exclusively on what they do bestâ€”presentation and business logic.
What does Seam buy you?Â
â€œWhy do I even need Seam if I have EJB3 and JSF already?â€ After all, they were designed to simplify the process of creating web applications. What is the benefit of using the Seam framework with these components if they have already taken care of much of the plumbing that was required before?
The answer lies in what you are trying to accomplish. To be useful, your application has to be a multitiered application that uses specific components for the presentation, business, and persistence tiers. Before, you may have accomplished this with a combination of Struts (presentation), Interface21â€™s Spring (business), and JBossâ€™s Hibernate (persistence) frameworks. Now, following the Java EE specification, you will be using JSF (presentation), EJB3-SB (business), and EJB3-EB (persistence). As before, each of these components requires lots of glue to link them together to talk to each other.
Netbeans / Oracle Glassfish and Jboss Seam
Currently the only straight-forward way of deploying aÂ Seam-based Java EE application is by choosingÂ a JBOSSÂ application server as the target platform. Oracle’s Glassfish (which belonged formerly to Sun Corporation)Â Â is notÂ currently supported andÂ web apps built upon the Seam framework do notÂ run without serious tweaking (ever if this is possible at all with the recent versions of the framework / AS). SeamÂ Â development and deployment is also very easy when using an IDE like Eclipse with Jboss Tools or JBoss Developer Studio.
Netbeans IDE,Â on the other hand, which is grown very popular over the past 2-3 years powered by Sun and continually supported by Oracle today has no official support for Seam. Netbeans has its own set of plugins for some other frameworks such as Struts 1.x, Spring MVC – even Groovy and Grails!Â -Â and eventually JSF. It also has some RAD tools for a series of JPA implementation such as Hibernate, TopLink and EclipseLink although the wizards running through these plugins are somewhat buggy.
Now wouldn’t it be great if Netbeans community and Jboss community teamed up for a cross-platfrom (Jboss- Oracle) collaboration and brought Seam supportÂ to NetbeansÂ & Glassfish deployment?