I don’t want to start religious wars on the issue of which framework is better. I myself come with over 10 years experience in managing R&D teams, and during the course of my career used and evaluated JSP, Struts, JSF, WebWork and other frameworks. For that reason I know that there’s no perfect web framework in general, but there’s one for every specific project. In the past the choice was easy. Either it was dictated by “legacy” code, or presentation layer was simple enough to use Struts or even JSP. Well, not anymore. I’m currently evaluating technology for a new start-up, which is going to provide revolutionary financial services to general public. We hope to generate a lot of buzz, and it’s impossible without having state-of-the-art GUI (I’d say WEB-2.0, but I hate this term). While its more or less clear with regards to the server side (JBOSS, EJB-3.0), the presentation layer keeps me awake at night. It seems like I’m trying to reconcile the irreconcilable.
First of all, there are the HTML pages. They’re going to be designed by professional designers, with all the usual bells and whistles, like CSS, frames, table layouts, embedded Flash and banner graphics. Obviously the designers know nothing of “framework concept”, and I’d like to simplify the integration as much as possible. Especially since these pages will be updated very frequently. Tapestry and Wicket do a great job in integrating HTML with dynamic components, but Tapestry has long learning curve, and Wicket is relatively new, and I’m not sure how mature it is.
Next, there’s the issue of components. I very much like component-based frameworks (JSF may not be the best example, though). Components, like tree menus and grids most definitely will be used. One of the major requirements is to provide easy support for basic CRUD operations.
Another important issue is the learning curve. Having all members of my team spending a few months on learning new technology will be a major setback. Of cause, having good documentation and good community support is also a big plus. Lastly, maybe it’s just me, but I truly hate excessive XML configuration, and prefer Java code or annotations instead.
So far I’ve considered JSF+Facelets+Icefaces and Wicket, but there might be far better options.
I’d love to hear your opinions on the subject.