Matt RaibleMatt Raible is a Java Champion and Developer Advocate at Okta. developer.okta.com

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: AngularJS, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.

10+ YEARS


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

Comparing Web Frameworks: Time for a Change?

I first came up with the idea to do a "Comparing Web Frameworks" talk in 2004. I submitted a talk to ApacheCon and it got accepted. From there, I outlined, created sample apps and practiced this talk before ApacheCon. Believe it or not, that was my first time speaking in front of a large audience.

Historical note: October 2004 was a pretty cool month - I discovered Rails and Roller had a 1.0 release candidate.

When I created the presentation, it was in large part due to all the WebWork and Tapestry folks harassing me on this very blog. I started using Struts in June 2001 (the same month 1.0 was released) and had used it successfully on many projects. Part of the reason this blog became so popular was I posted lots of tips and tricks that I learned about Struts (and its related project) while using it. After a while, the noise became too heavy to ignore it - especially after I'd tried Spring MVC. So in an effort to learn more about the the other frameworks, I submitted a talk and forced myself to learn them. It seems to have worked out pretty well.

With that being said, I think it's time for a change. The reason I originally wrote this was to educate developers on how the top Java web frameworks differed and encourage developers to try more than one. A while later, I realized there's different tools for different jobs and it's not a one-size-fits-all web framework world. It's not a component vs. request-based framework world either. There's lots of options now. When I've delivered this talk earlier this year, I've always felt like I've left quite a few frameworks out. The solution could be to add more and more frameworks. However, I don't think that's a good idea. The talk is already difficult to squeeze into 90 minutes and it's unlikely that adding more frameworks is going to help.

The change I'd like to do is to reduce the number of frameworks down to (what I consider) the top web frameworks for deploying to the JVM. What are those frameworks? IMHO, they are as follows, in no particular order:

  • GWT-Ext
  • Wicket
  • Grails
  • Flex/OpenLaszlo
  • Seam
  • Struts 2

The RIFE, Tapestry and ZK folks can start bitching now. Sorry - less frameworks make for a more interesting talk. Maybe I'll add you in the future and I can ask the audience which ones they want compared then we can choose four and go from there. Why don't I mention Spring MVC? Because I think Struts 2 is easier to learn and be productive with and I also like it's more open and active community. I've written applications with both and I like Struts 2 better. As for Flex vs. OpenLaszlo, I'm somewhat torn. It seems like learning Flex is going to be better for your career, but it's likely useless without the Flex Builder - which is not open source. However, at $250, it's likely worth its price. I know the Picnik folks used Flex for their UI - I wonder how much they used Flex Builder in the process?

What do you think? Are these the top web frameworks for JVM deployment today? The next time I give this talk is this Thursday at ApacheCon. I may try to re-write my talk and then give the audience a choice of old vs. new. The downside of doing the new talk is I won't have time to write apps with GWT, Flex or Seam. Anyone care to post their top three pros and cons for any of these frameworks?

Posted in Java at Nov 12 2007, 04:46:56 PM MST 50 Comments
Comments:

I am looking forward to your presentation at ApacheCon this year. I was wondering where JSF was in your list? Do you not consider it a web framework. As far as commercial penetration for new projects I am seeing all of my new projects being dictated as either struts-2 or JSF with the main focus (10 projects) being on JSF. Granted these are large corporations but that is all that I am seeing right now in new development good or bad. Flex is attractive but the commercial model has some people a little wary as does the Google GWT model as people are not yet comfortable with those companies really doing open source without some catch(Their words not mine). I have also run across a few companies that have chosen to use Wicket or Tapestry only to discover the availability of resources with skills in those technologies are nearly non-existent. I think they are great frameworks but if you can't get local cheap talent to support your deployments they are a little risky. On the up side I am getting at least 10 calls a week looking for Wicket talent since I have a project under my belt they are trying to get me to do another.

I hope to get a chance to catch your talk later this week in Atlanta.

Posted by Scott Ryan on November 12, 2007 at 06:43 PM MST #

> I was wondering where JSF was in your list?

JSF is represented by Seam. I think they've fixed a lot of JSF's issues and tend to promote best practices (Facelets, Ajax4JSF). With the dollars Red Hat is spending to develop and market Seam, it's difficult to ignore. While AppFuse's JSF version has a lot of the same ingredients, Seam is likely to be much more actively developed because of the dollars behind it.

> Flex is attractive but the commercial model has some people a little wary as does the Google GWT model as people are not yet comfortable with those companies really doing open source without some catch (their words not mine).

I agree that's true for some companies. However, both of these projects mailing lists have activity that blows away the Java web frameworks. Not everyone feels this way. I think Google is doing an excellent job with its open source projects - not so sure about Adobe.

Posted by Matt Raible on November 12, 2007 at 06:55 PM MST #

I am going to say something that I shouldn't because I know nothing useful about these RIA frameworks. Bearing that disclaimer, if I have to choose between Flex and Open Laszlo, I would certainly try Laszlo first because history has clearly shown the amount of industry push to be inversely related to framework quality and ease of use.

I do know a bit about Wicket and am happy to see my framework of choice feature in your shortlist!

Posted by Emiel van der Herberg on November 12, 2007 at 07:06 PM MST #

I am going to sound biased in recommending Seam, so I will vote for two others as well. Grails looks amazingly promising, especially for folks that really dig Groovy and have lots of Rails envy. My next pick would be GWT based on the rave of coworkers, but honestly I think that the future of the web (or at least portions of it) are a move away from the jail cell of HTML+Javascript. Therefore, I am going to say OpenLazlo.

Posted by Dan Allen on November 12, 2007 at 07:37 PM MST #

Call me bias as well, but I'm with Dan on the recommendation for Seam. However, Groovy/Grails look very appealing just from reading about it, and looking at the code. I'm a big fan of frameworks/tools that emphasize on brevity and reduced LoC so you can see why these are my winners.

Posted by Hung Tang on November 12, 2007 at 08:32 PM MST #

Seam looks promising but IMHO will need some polish to work well on others application server (like Glassfish). I tried version 1 and found quite hard to make it work well on glassfish so later I decide to use only core jsf for my development. It is true Seam solve many jsf glitches but until I can manage it well will be more for my personal use.

Posted by Kenneth Mark on November 12, 2007 at 09:06 PM MST #

FYI, Seam2 works much more smoothly on GlassFish.

@Matt: nice selection of frameworks - you picked exactly the ones I'm most interested in right now!

Posted by Gavin on November 12, 2007 at 09:15 PM MST #

Do you know if this is going to be recorded? It would be great for little ol' New Zealand to have access to this kind of stuff.

Posted by Antony Stubbs on November 12, 2007 at 09:37 PM MST #

> Do you know if this is going to be recorded?

I doubt it. ApacheCon doesn't usually tape/publish their talks. The only ones I've seen that do are TSSJS, QCon and Javapolis. Maybe it's better that I submit this talk to JavaOne and spend a bit more time preparing it and experimenting with the various frameworks? I believe they publish some talks.

Posted by Matt Raible on November 12, 2007 at 10:22 PM MST #

Hey Matt,

You don't really need Flex Builder to do Flex development. Once you've downloaded the Flex SDK, any text editor will work for you. Just write your ActionScript or MXML (or both), compile and run. (There are Ant tasks out there for interacting with the SDK if you want to roll that way.) Tools like Aptana are also developing as free alternatives to buying Flex Builder. You may find that after spending the 30-day free trial of Flex Builder using it as a learning tool, you're fine without it. There are online resources that can sub-in for the GUI aspects of Flex Builder (search on Flex style explorer and then search for Flex component explorer. Both will let you play with components and generate some sample code for you.) I've developed with Struts 1, 2, Spring MVC, a handful of Ajax frameworks, and nothing compares with Flex's productivity on the client-side. Back it with Restlet or Rails and you'll be flying... at no cost.

Posted by ebc on November 13, 2007 at 12:43 AM MST #

I use IntelliJ IDEA 7.0.1 for most of my Flex development, Flex Builder for debuggin purposes only.

Posted by Den on November 13, 2007 at 01:11 AM MST #

Absolutely perfect choice. I would love to attend your presentation. Grails, Seam, GWT-Ext are my favourites in this mix.

Posted by Sakuraba on November 13, 2007 at 01:11 AM MST #

I was intrigued by Seam and tried to develop a simple application and I ran into a lot of headaches along the way. (I was using Seam 1.2) Recently, I have developed a project using Tapestry4 and found it a bit more friendly and easier to use (although I did run into some things I don't like about it).

A couple of people above seem pretty positive about Seam. I would love to get in touch with you and discuss it a bit. I would hate to reject a good framework before talking with some people who have had positive experiences. Seam users, drop me a line if you have some time =) My e-mail is kryptolus atttttt gmail dooooot com

Actually, I'd love to talk to people using any other frameworks as well. I don't have time to experiment with every framework there is. Hopefully I'll get at least one e-mail. =)

Posted by Vadim Berezniker on November 13, 2007 at 01:56 AM MST #

Matt,

I see how Appfuse 3 will look like :).

Nobody thinks Spring Web Flow has a future ??

(BTW, It gives excellent support for JSF development (for navigation, resolving variables, custom scoping and decision making. May be a bit tough for newcomers to understands terms, I mean continuation, flow registry etc :( )

Posted by Deepak on November 13, 2007 at 02:09 AM MST #

We are developing large enterprise banking application using GWT framework in a presentation layer. Based on our experience I came to the following pros and cons.

GWT Pros:

  1. Pure lightweight Java solution for building web GUI. This means you can use such features like debugging, refactoring, unit testing for your UI in the same way as you do this on the server-side.
  2. Built-in effective Ajax development. All you do in GWT is compiled to Ajax based javascript so you get desktop like application at one stroke. In addition GWT optimizes Javascript code to great extent so GWT application performs very well.
  3. Fast learning curve. You do not have to learn any other technologies or frameworks except standard Java to start developing with GWT. And if you have some experience in web applications, CSS and GUI frameworks (like Swing) you will be able to start building very complex GWT apps at once.

GWT Cons:

  1. GWT compiler restrictions:
    • Currently only Java 1.4 syntax and subset of Java core packages is supported (though this is going to change in GWT 1.5)
    • GWT compilation is rather slow comparing to standard Java compiler.
  2. Need to design presentation layer architecture very carefully. When building large complex web application with GWT you end up with a huge number of classes. To be able to maintain and extend application code you will have to use some architectural patterns for building GUI (like HMVC, PAC etc).
  3. A lack of advanced GWT widgets (although this is rapidly changing with coming such a great libraries like gwt-ext, mygwt, google-web-toolkit-incubator etc)

Posted by Leonid on November 13, 2007 at 03:26 AM MST #

For info: Seam 2.0 broke the JSF dependency and is open to new UI Web Framework.

From Norman's blog:

"Removing the JSF dependency The Seam core has been completely overhauled. In addition to extensive packaging changes, Seam has now been de-coupled from JSF so that it can be more easily used with other web frameworks. We've included some experimental GWT integration that shows how this might work. Want Seam with your favorite web framework? We've opened the doors for the ambitious."

Personally, I'm really happy JSF is not there as a standalone solution.

And I'm waiting for Wicket integration into Seam 2.0 to have the "almost" perfect Web Framework.

Will be there soon ;-)

Posted by Frederic Simon on November 13, 2007 at 05:37 AM MST #

I think it will always be hard to have a list that'll satisfy all people as different people have different tastes. I for one use Click and it's very easy and it adheres to the DRY principle. I know a lot of people probably do not know about it as it's not hyped but the little that it does, it does it well.With Click you get some pre-built components (control) and things like validation for free. I'm also looking at GWT and the programming model between it and Click does not look too dissimilar.

BTW prior to switching to Click i was using SpringMVC and it was very verbose but very flexible, but i've recently glanced at SpringMVC's new annotation style and i think it looks very promising especially with the new Context scanning capability of Spring. Has anyone looked at this improved SpringMVC and what do they think of it?

Posted by Twice on November 13, 2007 at 10:13 AM MST #

Besides limiting the number of frameworks you discuss, is there a particular reason you're not including Tapestry? In my opinion it was a great framework that lost a lot of momentum in the 4 versus 4.1 versus 5 shuffle.

Posted by MrChucho on November 13, 2007 at 10:29 AM MST #

Seam, Struts2/Spring and Grails are excellent choices. I think all three have unique strengths. Add jQuery and you've got agile solutions for Java shops. PS. I hate Maven

Posted by Tom on November 13, 2007 at 12:20 PM MST #

> Besides limiting the number of frameworks you discuss, is there a particular reason you're not including Tapestry? In my opinion it was a great framework that lost a lot of momentum in the 4 versus 4.1 versus 5 shuffle

Yes, the primary reason I excluded Tapestry was because I don't want to cover too many frameworks. The second reason was because there's too much instability between releases for many companies to adopt it. Who wants to use a framework that's going to have no migration path to its next version? Also, how can you believe its developers when they say it's an awesome framework if they rewrite it every couple of years?

That being said, I think Tapestry 5 will be great. However, I wouldn't be surprised if there's a complete rewrite for Tapestry 6.

Howard has said that Tapestry 5 will provide a solid foundation for future releases, and this will be the last rewrite for many years. However, he also once said:

Wicket seems to have a page-state version number encoded into the URL to detect browser back button issues (Tapestry, of late, has been moving towards storing more data in the client to circumvent problems caused by mismatched client- and server-side state).

Mostly, I'm envious of the chance to start with a clean slate. The demand for backwards compatibility is surely holding me back from fixing a good number of things.
...
If I start fresh, it won't be in Java. There's no point in splitting the community. 3.0 -> 4.0 has been damaging enough.

So the 3.0 -> 4.0 was a painful transition, yet it's being done again. Sorry to throw you under the bus Howard - I couldn't resist. ;-)

Posted by Matt Raible on November 13, 2007 at 12:34 PM MST #

I agree with the earlier post regarding GWT's learning curve. It really takes no more than 3-4 hours to "get it" and a couple of days to start building apps if you're familiar with Java.

I've also been playing around with Wicket and think its one of the front-runners in building web apps for Internet sites / applications (like social sites ) where SEO is a requirement and Wicket has a very nice way of having the designers come up with html / CSS and the developers plugin functionality like providing the dynamic aspects feeding real data. And needless to say, I really find GWT a great technology for rich desktop-like applications (for example enterprise / ERP apps).

I think Flex is also a very powerful technology and kicks ass when it comes to collaboration, handling large volumes of data, push technology but to me the right use of Flex is not an all out Flex app (which people are averse to for a number of reasons like sluggishness), but selectively using Flex components and features where the requirements demand such functionality like server push, collaboration and other multimedia capabilities.

I feel that JSF is really in no-mans land. Wicket does a better job when building Internet sites + apps (like linkedin or other social sites) while GWT is a lot easier and more powerful to build rich desktop like apps. The other big win with GWT is that the entire UI is build using javascript making it rather simple to support an offline version of the app (using Gears or Apollo). With JSF, this is more than a few steps away to accomplish as the controller logic sits on the server.

Regarding Spring MVC, I use it not for serving user interfaces but for restful services that serve XML / Json to a consuming service like mobile apps or integration points.

Posted by Sanjiv Jivan on November 13, 2007 at 12:40 PM MST #

Apple's WebObjects framework is pure Java and for 10 years has had the features that are just now getting into the other java frameworks. It powers the iTunes store and other high-profile web applications. It's not widely used because it's not open-source and it's sort of mac-only, but it's free and FAR superior.

Posted by John Huss on November 13, 2007 at 12:44 PM MST #

Why is GWT-Ext on this list? If you wanted to discuss JavaScript libraries then sure, but Web Frameworks? I don't think so. I don't see JQuery or Prototype? I know you mentioned Zk also but I wouldn't consider them anywhere close to the same thing as Wicket, etc. (that is not an endorsement for Wicket)

Posted by Gregg Bolinger on November 13, 2007 at 01:29 PM MST #

> Why is GWT-Ext on this list?

Because I believe that most folks that use GWT will use it in place of a web framework. While Grails, Seam and others have GWT support, I expect it's more common usage is w/o a secondary web framework on the server side. I could be wrong. Please let me know if I am.

> If you wanted to discuss JavaScript libraries then sure, but Web Frameworks? I don't think so. I don't see JQuery or Prototype?

I think it's possible to use HTML + an Ajax framework to develop your web frontend. That's what SOFEA/SOUI is all about. Isn't this what Google does with Gmail?

Posted by Matt Raible on November 13, 2007 at 01:55 PM MST #

Is there any specific reason for excluding Stripes from the mix? I think it is an excellent MVC framework that performs great and makes developer more productive.

Posted by Dave on November 13, 2007 at 03:59 PM MST #

> Is there any specific reason for excluding Stripes from the mix?

The biggest reason is because I think it's important to concentrate on a limited number of frameworks. I've done 7 and that's too many - hopefully 6 will be the sweet spot.

I agree that Stripes is an excellent framework. However, its small community hinders its adoption and I've talked with a few companies that are unwilling to use it because of that. I also think that Struts 2 and Spring MVC are/have adopted most of its ideas and you can get the same benefits from using those frameworks + you get the larger communities.

Posted by Matt Raible on November 13, 2007 at 05:03 PM MST #

Matt, I think you do the right thing. Just one question, is 6 really a reduction? (I havent looked at appfuse in a year or more), I still think it sounds like a big number.

Posted by manuelito on November 13, 2007 at 05:08 PM MST #

> Just one question, is 6 really a reduction?

It's a reduction if you compare it to the last Comparing Web Frameworks presentation I did at JavaZone. In that talk, I compared JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket. From what I've seen over the last 6 months, there's too much noise in the blogosphere about Flex, GWT, Grails and Seam to ignore them anymore. If I simply added them, that's 10 frameworks and it'd be too long (and probably too boring) to be an interesting talk.

> I still think it sounds like a big number.

I agree, but which one would you drop? Hype wise, possibly Struts 2 (because it's not as hyped as the others), but I don't think you can really drop the tried-and-true solution (request-based MVC frameworks) that've been so successful (Struts 1.x and Rails).

As I mentioned in my post, I think it'd be cool to come up with some sort of "comparison framework" (or criteria for comparison) and let the audience choose the 4 they'd like compared (out of a possible 10). Then again, most audiences I talk to have barely heard of anything outside of Struts 1, Spring MVC and JSF. Also, the problem with comparison criteria is it often depends on the requirements for the application you're writing.

The truth is, some frameworks are better than others for particular applications. If you can tell me the type of application you're developing and your top 3 priorities (scalability, maintainability, rapid development, etc.), I can probably tell you the 2 or 3 frameworks you should evaluate. It's more about the application you're building than the framework you're building it with. These frameworks should not be used as hammers looking for nails.

Posted by Matt Raible on November 13, 2007 at 05:19 PM MST #

> I think it's possible to use HTML + an Ajax framework to develop your web frontend.

Well, sure. But a web framework doesn't consist of front-end only. I guess it depends on whether or not you say Web Framework or Web Application Framework. But you've chunked everything into Web Framework which seems a bit too general for a comparison chart. My 2-cents anyway. :)

Posted by Gregg Bolinger on November 13, 2007 at 05:52 PM MST #

I see Struts2 and Spring MVC almost the same thing with a different color. Both has quite similar capabilities, request oriented... I really don't get your 'productivity gains', so struts 2 might be more of your kind ¿?

What i really like is the cleaner integration between spring mvc and the bean container, as expected ;). You also have config files in the same language (spring xml namespace) improving mantainability regarding configuration.

We are planning now a project heavily based on ajax calls to json/xml/html and we are evaluating Struts2, Spring MVC and Wicket.

What do you recommend?

thanks

Posted by jbaez on November 13, 2007 at 06:03 PM MST #

> What i really like is the cleaner integration between spring mvc and the bean container, as expected ;).

What I really like is a framework that uses conventions or allows me to configure things w/o writing XML. Struts 2 allows this with Zero Configuration, Codebehind and SmartURLs (yes, consolidation is needed here). Spring MVC allows this with annotations - but only in the latest 2.5. I think there's a lot to be said for using Spring MVC in its raw from (with annotations) for applications that need high performance, and then using Grails for smaller, less-trafficked applications. At least you're only using one framework under-the-covers.

> We are planning now a project heavily based on ajax calls to json/xml/html and we are evaluating Struts2, Spring MVC and Wicket. What do you recommend?

If you've widdled it down to 3, you owe it to yourself to prototype with all 3. You've already done the hard part (eliminating frameworks), now the easy part comes - writing code with each one. As part of your prototyping, think of your application and what it really needs and don't be afraid to eliminate one framework if it makes implementing things complicated. I think the most important thing ot remember is the major cost of software is rarely in the development of an application, but rather in the maintenance of that application.

Posted by Matt Raible on November 13, 2007 at 06:14 PM MST #

Den said: I use IntelliJ IDEA 7.0.1 for most of my Flex development, Flex Builder for debuggin purposes only.

The Flex SDK also comes with a command-line debugger. You can set breakpoints, step through, and send trace statements to the debugger console, still no Flex Builder required. I've done Flex development on Ubuntu this way. It works great.

Posted by ebc on November 13, 2007 at 09:52 PM MST #

> What I really like is a framework that uses conventions or allows me to configure things w/o writing XML. Struts 2 allows this with Zero Configuration, Codebehind and SmartURLs (yes, consolidation is needed here).

Stripes has always been this way and there no need to turn on plugins to allow it.

> We are planning now a project heavily based on ajax calls to json/xml/html and we are evaluating Struts2, Spring MVC and Wicket.

Really? You need something like Wicket to return JSON? Seems like overkill to me. Stripes has a StreamingResolution to return different content types if need be or a JavascriptResolution. Either one will return JSON just as easy as pie. I like pie. :)

Posted by Gregg Bolinger on November 13, 2007 at 10:47 PM MST #

Although I really like Stripes I can understand your arguments. That beeing said I would consider Wicket as the most promising framework. We are currently evaluating it and it sounds promising, especially for product development when you need the possibility to deploy on a wide range of application servers. Besides Flex I think your selection fits quite well to the reality when it comes to select a framework for enterprise applications. So thumbs up :-)

Posted by Kai Grabfelder on November 14, 2007 at 01:56 AM MST #

@gregg: we won't need any to return json ;) but some other parts might need classic user interaction as well.

@matt: the other thing that makes me feel less confident about struts 2 is the lack of plugins and stuff around it that make things look mature. One might be a better spring integration, eclipse plugin or a book (infoq has one available, though). But convention over configuration is a clear step forward here.

Posted by jbaez on November 14, 2007 at 04:57 AM MST #

[Trackback] Link: Raible Designs | Comparing Web Frameworks: Time for a Change?. Matt Raible is considering updating his evaluation of Java web frameworks - personally I can't wait to read the results of his research. I wish he was including Spring

Posted by I, Analyst on November 14, 2007 at 07:34 AM MST #

Hi Matt- yours is one 4 blogs out of 150 which I check several times a day. I found the SOFEA post and the paper quite interesting, and I agree with you we are on the cusp of a change - seems likely that it will take a fairly long time for server side MVC to fade away, but it probably will.

Have you had a look at TIBCO General Interface? IMO it's very close to the ideal model in the LATST paper. Supports what it calls a "split MVC" model, basically two MVCs one on client one on server, or just the one on the client, your choice. Allows for REST or WS-* services to backend. Pretty impressive developer workbench.

It's not without its challenges for bandwidth management, but it's improved quite a bit in the lastest release. TIBCO released it to public domain, with some qualifications, last year.

Bill Hutchinson

Posted by Bill Hutchinson on November 14, 2007 at 07:47 AM MST #

> Have you had a look at TIBCO General Interface?

I haven't looked at TIBCO GI, but I need to. It's named as one of the possible frameworks in the LATST paper and I've heard a lot of good things about it. They've contracted Joe Walker to help them with Ajax and to help DWR improve, so it definitely deserves some attention.

Of course, the hardest part about all these frameworks (and this new paradigm) is finding the time to learn them. Do you really need to learn them all? I don't think so. I think the best way to learn is to learn on-the-job and get paid to do it. That way, you can dedicate your full attention to it. In this type of learning environment, you should be able to learn and develop with a SOFEA stack in 2 weeks or less. The hard part is finding the gig that will pay you to learn and evaluate the various frameworks.

Posted by Matt Raible on November 14, 2007 at 08:12 AM MST #

I haven't actually used GWT for production, but rather for a spike in one of our projects. It wasn't suitable for our architecure (and it was a year ago :)) so we didn't use it. But I am familiar with it and try to keep up with what's going on in GWT world. So I may be wrong, but I believe using security framework like Spring's Acegi with GWT is much harder work than using it with Struts-like framework. The problem is that when you design a page, you may want to use the same page with some components only shown to users with particular rights. Acegi (and probably many other frameworks as well) support this in JSP Tag level. You can use tags to check to rights of the current user that will see the page and can decide whether to put the component or not. Something like (the tags are fictional :)):

<acegi:checkPermission type="user" permName="admin">
    <my:deleteButtonComponentTag />
</acegi:checkPermission>

This very easy and handy. You don't have to code anything in the control layer. It's only in your JSPs. The clients generated by GWT, on the other hand, heavily relies on javascript. And once you compile them its static for application server side. For such component based authorization support, you client will use GWT's RPC mechanism to talk to server to decide which components to render. This much work. Yes I believe you can create a framework for this once and reuse it naytime you want but it is still much more work.

As I have said, I am no expert. I may have misjudged the situation but I believe it's a point to consider.

Posted by Perit Bezek on November 15, 2007 at 02:30 AM MST #

In the new area of RESTful Web frameworks, I would suggest that you have a look at our Restlet project. It's a radically new way to design Web applications, based on Resource Orientation instead of MVC or OO paradigms. It allows for an unified development approach of dynamic Web sites and RESTful Web services.

Restlet is agnostic regarding the technology for persistence and for dynamic documents, but has integration with Velocity, Freemarker and Facelets.

Posted by Jerome Louvel on November 15, 2007 at 04:35 AM MST #

Hi Matt, Due to the length of my response, I've posted it on my blog: http://www.jamesward.org/wordpress/2007/11/15/matt-raible-comparing-jvm-web-frameworks/ Let me know your thoughts. Thanks! -James (Adobe)

Posted by James Ward on November 15, 2007 at 04:43 AM MST #

The biggest downside I see with Flex is the need for Flash on each client. While this may not immediately seem like a big problem, I think this is a problem if you think of an application which needs to be accessible by a large number of users, who could be working in a "restrictive" environment. People may be unable to download Flash, may have a failure in upgrading to the version of Flash needed, permissions on the client machine may prevent Flash installation etc. Any comments on that?

Posted by sdw on November 18, 2007 at 09:50 AM MST #

I'm new AJAX and find that the analysis of each of these frameworks to be extremely useful. I've used Struts for a few projects, but have mostly developed backend Java WebServices for years. I was referred to Raible Revisits Comparing Web Frameworks by a local Denverite Mark Wilson, which led me to this site as well. I decided to take Sanjiv Jivan's recommendation about using Wicket and found it "very" refreshing. It's what I expected from Struts when initially introduced. I browsed GWT, and JSF, but decided it may be too steep for my immediate deliverable time frame. I dipped my toe into the AJAX waters with a simple Html Test Page to POST XML by dynamically switching the Post URLs based upon a configuration criteria. I had the page functional within the hour, (which included building out the project with accompanying scripts for deployment into Tomcat). I obviously don't have the Frontend experience of the people on this post, but thought giving input from a newbie might be beneficial. As Matt pointed out in his article the two most important factors to me of a framework are: 1) "Easy of Use" (allows for newcomers to get involved) 2) "Extensility" (allows for the experts to implement complex requirements) These two criteria allow for rapid "Critical Mass". One good example of this: the Ubuntu Linux Distro.

Posted by Dewayne Richardson on November 28, 2007 at 08:07 AM MST #

Hi Matt

Right now I am integrating your (very cool) AppFuse 2 with GWT and MyGWT (http://mygwt.net). Results is already very interesting.

I am doing it in bounds of one commercial project, but framework itself will be mine and I plan to make it open source. Probably it is good idea to contribute what I have/will have to AppFuse to make it available to bigger quantity of people.

Note: I use MyGWT instead of gwt-ext because this one is completely written in pure java, which allows more control and better debugging.

Please let me know if you are interested in this.

Regards

Roman

Posted by Roman on December 01, 2007 at 12:24 AM MST #

It is a shame not to mention ZK. ZK is overlooked but it is the best framework I ever tried, including echo2, gwt, dwr and so on. It is truly simple yet powerful. my 2cents

Posted by Macro on December 20, 2007 at 01:59 AM MST #

Spring MVC, version 2.5 should be strongly considered, it shouldnt be discarded. The annotation based configuration is very simple to start with. I have tested out stripes and fell back to spring mvc (probably for feeling more comfortable with it), also stripes development appears slow and not very well documented.. Best regards

Posted by tester on January 03, 2008 at 12:24 PM MST #

I believe lift could take off. http://liftweb.net/

Posted by Brian Edwards on January 17, 2008 at 04:38 PM MST #

Hi,

what framework selection recommendation would you give in case the jvm 1.5 would be out of guestion and there would be ejb 2.0 ejb-components running on the Bea Weblogic server 8.1 server?. In this coming project there is a need to totally replace the presentation layer and now I'm asking for your advice to which frameworks could be best options to choose from. I have used sturts 1.0 and Wicket and Stripes frameworks in previous projects...but the necessity of running them in 1.42 jvm put some restricrtion for the framework selection

Posted by Pasi Haverinen on January 23, 2008 at 09:12 AM MST #

Few more frameworks which seem to be promising are ZK, AribaWeb, ITMill. Any comments on these, specially on the scalability and performance

Regards,
Raja Nagendra Kumar
C.T.O
www.tejasoft.com

Posted by Raja Nagendra Kumar on July 24, 2009 at 05:19 AM MDT #

Based on the time when you started this research, I understand why you did not consider ZK, but ZK has far exceeded the capabilities and shown more momentum as it is currently at Version 5 (released this year). I think that there is certainly some value to revisiting this list today based on what you have done in the past.

I think that the list of the most important 6 web gui frameworks would include:

1) ZK
2) Flex
3) GWT

But the rest of the list gets complicated:

perhaps YUI, but I think that it's needlessly complex and way too much javascript SEAM and Spring are nice backend frameworks, but they are not really WEB GUI frameworks. Struts has the same limitation and JSF is a waste of time in my opinion (though I've certainly jinxed myself as I will probably end up doing nothing but JSF over the next few years.

Thank you for this excellent site and your dedicated research.

- Dave

Posted by Dave Hamu on February 18, 2010 at 06:30 PM MST #

Post a Comment:
  • HTML Syntax: Allowed