Seam
I have to admit, there's something about Seam that intrigues me. Maybe it's because they put up a really nice-looking demo (I'm a sucker for eye-candy), or maybe it's because it seems to be well documentated, or maybe it's the fact that it's based on J2EE standard technologies (EJB3 and JSF). It could also be that I greatly respect the work of Gavin King (who's always been respectful to me when I asked Hibernate questions back in the day).
It could be the lack of configuration, but I think it's the simplicity that gets me. A POJO (Entity Bean), a Session Bean for your business logic, and a view page (w/ Facelets no less, which is very cool). Other new frameworks this year include Wicket and Stripes. While these frameworks look cool, I really like the idea of a full-stack framework much better (I do use AppFuse after all). Well done Gavin - Seam looks very cool IMO.
On a related note, I upgraded AppFuse to MyFaces 1.1.0 yesterday w/ minimal effort. You can grab the latest from CVS if you'd like to get started with MyFaces quickly.
Posted by Alonso on September 21, 2005 at 04:46 PM MDT #
Posted by Matt Raible on September 21, 2005 at 04:56 PM MDT #
If your goal is building a team of developers that are productive, Schwarzkopf is right. Maybe we have different goals, but that is my current responsibility so in that respect I will take the .Net problems instead of the issues from the java communities fork-and-mutilate approach.
Posted by Alonso on September 21, 2005 at 05:19 PM MDT #
I think what you are seeing is a flipped mentality on Java frameworks right now. Instead of requiring you to integrate with frameworks, frameworks are integrating with you. They do so with implicit behavior-- defaulting property names, column names, method signatures.
RoR does a great job of this. There's no need to integrate or write tedious code, everything is defaulted to some degree via Ruby's dynamic capabilities over your persistence layer. Java doesn't have those capabilities, so lets attack the problem from the middle via POJOs.
An example is I can use the EJB 3 entity manager to persist a plain old Java object-- defaulting property names and class names directly to columns and tables. Seam provides that same kind of behavior, except that it provides that implicit behavior in the direction of the UI layer, leveraging the existing EJB 3 capabilities.
Posted by Jacob Hookom on September 21, 2005 at 07:06 PM MDT #
As far as I am aware, no other framework on the market addresses the problems Seam addresses.
>> Divide and conquer.
On the contrary, Seam is based on *standards*: JSF, EJB3, Java EE 5. The idea is absolutely not to reinvent things that already exist and work well.
>> What problems is Seam solving? "Maintaining server side state has traditionally been a painful and bugprone task." really?
Yes, really. For example: how many of the web applications that you have written actually support multi-window operation? If some of them did, how much code did you have to write to make that work reliably?
For a second example: how many times have you heard advice that applications should be twisted into a stateless architecture in order to be able to scale? Have you considered the costs of that?
With respect to .net, what I've seen in the .net community is that every organization is still using their own homegrown frameworks. At least in Java we have a fairly delimited range of popular open source choices in each category.
Posted by Gavin on September 22, 2005 at 01:31 AM MDT #
Thanks man! :-)
>> Gavin King (who's always been respectful to me when I asked Hibernate questions back in the day).
I would like to think that the Hibernate team is always respectful to people who are considerate of us - which means staying polite, following the user forum rules, and being understanding of the fact that answering questions is a huge drain on our time, and is often frustrating. At least that is what we strive for.
Posted by Gavin on September 22, 2005 at 01:41 AM MDT #
Posted by Phillip Toland on September 22, 2005 at 03:09 AM MDT #
Posted by Alonso on September 22, 2005 at 03:26 AM MDT #
Posted by 24.163.167.196 on September 22, 2005 at 03:50 AM MDT #
It is the behavior that was *chosen* for the booking app. You have many choices of behavior, for example:
(1) state held in isolated conversations per browser tab
(2) state shared in the session context
Flexibility is the strength of Seams context model.
You can of course design a Seam app that is *not* conversational. But for applications where it is a business requirement that the user be able to do two isolated things at once (a common enough requirement), the conversational behavior is correct and a great improvement upon most webapps today.
And, even better, you can actually use both share sessional and conversational state and have them interact by well-defined rules. For example, I could have designed the booking app so that the list returned by the search screen was sessional, but hotel booking was conversational. Then the search results would be shared on all tabs, and right clicking on view hotel would take you to the hotel and start a new conversation. You would still be able to make multiple bookings concurrently. I didn't do it this way, because I was trying to make it easier to demonstrate the idea of conversations.
OK, so hotel booking is not a great example. On good example is JIRA. JIRA pisses me off on a daily basis, because I *often* have multiple search screens open simultaneously. Trouble is, if a change a search parameter, and refresh the search, I usually end up with the most recent search i ran, not the one that was perviously displayed in that page.
Don't mean to rag on JIRA which is a truly great product. The fact is that this kind of broken behavior is common in *many* web-based applications.
>> I say this as someone who 2 years ago almost gouged my eyes out instead of taking a development position doing c#/.net development. It killed me to 'jump sides'. It still kills me to watch java implode. <<
You sound very angry, and it seems to be clouding your openness to new ideas. I assure you it is not as bad as all that. Everything you are saying, you could have said about Hibernate, when I started that project 3 years ago. Well, Hibernate is generally agreed to have been a great success, and the ideas in Hibernate have now been standardized in EJB3. So I don't see where the problem is with experimenting with new ideas in open source, and making the successful ones standard across the industry.
Posted by Gavin on September 22, 2005 at 03:57 AM MDT #
Posted by Brian Vaughn on September 22, 2005 at 04:04 AM MDT #
Alonso, It sounds to me like a question from someone who stayed too long on the MS side of the fence... From my side, I don't see it as a "divide and conquer" problem but rather as a "convince and conquer" one.
Delivering THE web framework that will convince everybody is the task the community is currently working on. I like to see it as a huge project currently in its early phase. A couple of teams are providing their "prototypes" to the users (all of us) who criticize. But each time, they get better...
The .NET community tries to achieve the same goal differently. It has a unique authority that takes the decisions. we will see the outcome...
Posted by Thomas on September 23, 2005 at 08:06 AM MDT #
Posted by Rick Hightower on September 30, 2005 at 03:22 PM MDT #
Posted by Micah on February 11, 2006 at 08:45 PM MST #
Posted by Jim Jones on October 25, 2006 at 07:19 AM MDT #