For the release of our new Portletsuite next year it was quite easy to find common understanding amongst my Tech Leads and helpfull architects to have Spring accepted with standards like OSGi and SCA to build our new backend. I mean, showing votes by hands is quite a democratic and easy system if practically all of the votes are for Spring and the remaining 1 vote says that we need to investigate more.
But when we got to the Front-end discussion it turned out Spring-MVC looked like to become the champion, but suddenly we had a new player: Wicket. Later research, actually by finding great comparison material, would prove that Tapestry and GWT could also have been contenders. But luckily we had already narrowed the choice down to Spring-MVC or Wicket. But still internally I found some of our people, of course many developers, who wanted to have at least a month to do research before making a choice.
In my opinion this just would take too long and the request were mainly based on the personal wishes of developers to find out things themselves before making a choice. In an era where new technologies are popping up continuously I think there is no holy grail, all choices have good and bad sides. So I agreed to have my developers to do more research and to do a PoC, but to start it off with Wicket. But of course as stubborn as I am I wanted to show that research could also be done differently. And the results of my research even more strengthened my suspicion that with Web 2.0 many more IT experts can help me sometimes better than some of my team members to make a management choice. I mean, can someone find out better conclusions within 40-80 hours, than so many other IT specialists who together have spent thousands of hours on the same subjects? Of course not …
Feel free to check out the results of my personal research, done within 8 hours online, and why I think Web 2.0 possibilities can really help IT managers:
His reply also really helped to form my opinion:
5. When I really need rich interactivity, I usually integrate a Flex widget in any of the above frameworks.
But, you need to make sure that they present you with a well written theory f adoption. (What does that mean?) If you are using both Spring MVC and Tapestry, make sure that they’ve identified the reasons why they made the selection, and exactly where each technology will be used. I believe that hybrid architectures are the way to go, but when you adopt a hybrid architecture, you need to make sure that you’ve defined the roles for each technology. Otherwise, you’ll end up with a grey area “Should we do this in Spring MVC? or should we do this in Tapestry?”
To answer your original question, I view Tapestry as a first-class alternative to Wicket. I wouldn’t discourage Tapestry if you are confident that your team has the ability to master it. It might not have some of the energy around GWT and Wicket, but what matters the most is if your developers are interested in it. If you are doing offshore development, one of the most important things you’ll want to find is a framework that is well-documented, books provide a set of ground-rules for a distributed development team.
And last but not least, I put some questions about this issue on lInkedIn:
If you would try to develop user friendly portlets with AJAX / FLEX. And you would want to port them to the JSR 286 standard. What kind of technology would you as web development framework for the front end? Would you use Spring MVC / Wicket / Tapestry / GWT. In the backend we’re using Spring combined with the OSGi standard. And for AJAX, would you use Dojo or Jquery?”
I got back some great answers for it:
I support using Spring MVC but only partly. There are great things about that that are underestimated, eg. AOP, transactions support. Also injections are great especially that you initialize portlet with no effort at all.
V of MVC is something that I really don’t like. M and C are great 😉
For V letter consider Wicket, please. As it was already written it provides a real separation of layer and demand no big effort to learn it.
Spring MVC is okay: since you’re already using Spring it will fit in quite nicely with the rest of your application. But I find it quite cumbersome in terms of XML configuration.
Neither of these technologies impose any restrictions on you or force you to do things a particular way like JSF does (which is one of the worst things about JSF IMO).
When I first heard about Wicket I thought: ‘O no, not ANOTHER web ui framework!’, but I have used it at my current customer and I have really come to like it. It provides you with even more freedom than Spring MVC does.
The downside is that it is not used as much as Spring MVC (yet), so it’s probably hard to find an expert on the matter.
Hope this helps you decide.
I personally prefer Spring MVC, especially when you are already using Spring framework. Spring is very flexable framework, not like JSP, which is very restricted, and you are forced to use many tags.
Also, JSP is not Ajax friendly – you have to either add am additional servlet just for doing Ajax, or you have to implement some event listener in order to do AJAX with JSF – none of the is a natural way (read this for the details: https://bpcatalog.dev.java.net/nonav/ajax/jsf-ajax/frames.html)
I agree with Marcin, “V” of MVC is not suitable for AJAX – you are not going to redaw the whole screen, only a part of it. (In the most extreme case of AJAX app, there will be no place for V: one page per app, all the consequent steps are replacing a part of the screen)
Since you are using Java, have you read this article?
I placed another question relating the issue to see how the choice technology might impact our offshoring model:
I have been reading many forums about the choice for a Java web framework. Currently my company is making the high level design choices. For the back-end we have chosen Spring as it’s very flexible and doesn’t exclude standards like OSGi. For the front-end of the development we have to choose between Spring MVC / Wicket. We left out JSF as it’s quite complex and it has some issues with portal development.
In this case the design is made by experienced architects in Europe and the development will be done by offshore development units. So this also introduces the factor what technology is easier to learn / carry out? ”
The choice between any model 2 (often called web mvc) framework or a component oriented framework like Wicket is easy: go for the latter. You can read my take on things in the first chapter of Wicket In Action (see http://www.manning.com/dashorst/) and (somewhat related) here: http://chillenious.wordpress.com/2006/07/16/on-page-navigation/
One of the things that makes Wicket suitable for development using offshoring is that components can be off any level (pages, panels, anything) and are self contained. This means that functionality can be independently developed and reused in multiple contexts. Which is quite impossible with model 2 frameworks (Struts, Spring MVC, etc).
Do give GWT a serious look as well. Both Wicket and GWT have their own strong and weak points (google around for discussions on this), and depending on what you do, one might be a better choice over the other.
Eelco Hillenius also suggests these experts on this topic:
I would not exclude Tapestry from your list of frameworks. It is a very flexible framework with a very customizable IoC. Pages are extremely easy to create. Version 5 should have a release candidate this month or at the beginning of next. Having been using this version for about four months now, I would say it is still very stable.
Although I have not used Spring personally, the guys I work with (who swear by Spring) are quickly becoming convinced Tapestry is not only easier to develop in but also more customizable.
If we are talking about UI framework here I would definitely look at GWT (Google Web Toolkit) – that’s what we are currently utilizing for our new projects. Developers will do need some efforts to learn it because this framework is somewhat different from usual MVC approach but on the other hand it will be easier for those who are familiar with AWT/Swing because it follows the same concepts. With GWT you’ll also be able to fully cover your UI code with unit tests which is not possible with traditional frameworks. Anyway I guess you should at least take a look.
It depends on experience of the developers.
Actually all these frameworks are good solutions, but the implement solutions are different.
In my opinion, for the front-end, Wicket has a very different approach than Struts or Spring, but maybe it is more immediate for a startup.
The problem is understanding if you can implement all types of web flows and necessary controls for your application using only Wicket.
My favorite frameworks these days are Seam, Struts2, Tapestry 5 and GWT.
Picking a framework is highly depending on projects nature (Internet or Intranet projects)
Personally, I’m allergic to SpringMVC, it is too flexible which it could be an annoying thing (at least to me).
Tapestry is dangerous…
You don’t know when it will be rewritten and it lacks a rich Ajax component shop, the shop that Seam enjoys.
As much as i love wickets innovation i think spring mvc suits you better why?, support and documentation, there are lots and lots of books and resources on spring, finding good and effective documentation on wicket is a hard chore, not to mention the fact that its pretty new and user support is not that big, on the other hand spring mvc’s user base is HUGE. If all you are looking for is a component based framework against a request based framework(spring mvc, stripes, struts) i think GWT will suit you better, again, because of the large user base (compared to wicket) and the amount of already available books and resources.
hope it helps you.