Reply to Comparing Java Web Frameworks
Last week Shaun Abram wrote an interesting blog about the talk Rickard Pack gave on JavaOne titled “Choosing Your Java Web Framework”
It basically said Grails, Tapestry, Wicket and GWT were 4 of the most popular web frameworks. JSF was left out because Richard didn’t have a very high opinion of it. Shaun mentioned Peter Thomas and Bruno Borgers agreed with that.
I initially posted a reply on Shaun’s blog, but because it became a bit longer than intended and didn’t seem to come through correctly, I’ll repost it on my blog here.
There are a few remarks I would like to make about Shaun’s post and Richard’s presentation. First of all, on what statistic is it based that Tapestry is among the 4 most popular web frameworks?
If you look at the poll held by zeroturnaround in 2011 year, Tapestry ends last:
(source: Java EE Productivity Report 2011)
Another zeroturnaround poll in 2011 held specifically for developers in India shows the same thing:
In 2012, the zeroturnaround poll wasn’t that different, and again Tapestry ends last:
- Spring MVC (30%)
- JSF (23%)
- Struts (17%)
- GWT (14%)
- Play! (8%)
- Wicket (7%)
- Grails (7%)
- Vaadin (7%)
- Stripes (2%)
- Tapestry (2%)
(source: Java EE Productivity Report 2012)
And in 2014, the zeroturnaround poll didn’t even list Tapestry directly anymore:
- Spring MVC (40%)
- JSF (21%)
- Vaadin (16%)
- GWT (10%)
- Grails (7%)
- Play 2 (6.5%)
- Struts 2 (6%)
- Struts 1 (4.5%)
- Other (Wicket, Seam, Tapestry, Play 1, ZK, VRaptor, 40 others) (18.5%)
(source: Java Tools and Technologies Landscape for 2014)
If you take a look at the poll recently held by the German JAXenter, then Tapestry is at number 13, with again only a meager 1% of the votes:
Welches ist Ihr präferiertes Webframework?
- Vaadin (18%)
- JSF (16%)
- Grails (15%)
- Play! (10%)
- Wicket (8%)
- ZK (7%)
- Spring MVC (6%)
- GWT (5%)
- Ruby on Rails (3%)
- Lift (2%)
- JAX-RS (Jersey) (2%)
- Struts (1%)
- Tapestry (1%)
- Flex (1%)
- Stripes (1%)
- Spring Roo (0%)
- Roma (0%)
- JavaFX (0%)
- Click (0%)
- Anderes (4%)
(source: Und das populärste Webframework ist…)
In a survey by OIO, published in April 2012, Tapestry is not even present. JSF is the clear winner there, with second place Spring MVC a good deal behind:
(source: OIO Compass: Java web frameworks)
Via a rather informal (to say the least) survey hold on Devoxx ’12, about the preferred way to build the UI of a business app with, nobody even bothered to mention Tapestry:
- Vaadin (22)
- JSF (17)
- JSP/SpringMVC/Struts (17)
- GWT (17)
- JavaFX (11)
- Wicket (10)
- Swing (8)
- RCP (7)
- Angular (6)
- ZK (5)
- Grails (4)
- OmniFaces (3)
- Play! (3)
- DART (2)
- Flex (2)
- Java Applet (1)
- AWT (1)
- India (1)
- REST + JS (1)
- SAP v15 (1)
(source: Devoxx ’12 whiteboard)
And just compare the jobs offered for e.g. JSF vs Tapestry:
In absolute numbers JSF dwarfs Tapestry. Now many smaller frameworks can claim some popularity based on relative growth (since it’s often easier to go from 1 to 2 jobs, than from 100000 to 200000), but even there Tapestry shows no growth and is dwarfed by JSF:
Relatively Tapestry is completely obliterated by GWT:
On StackOverflow JSF is also clearly much more popular than Tapestry:
(source: Stack Overflow tag trends)
According to the above graph, on StackOverflow JSF, Grails and GWT are the biggest ones, while Tapestry is one of the smallest. JSF in particular is even more popular on StackOverflow than the above graph suggest, since a lot of questions use the “JSF-2″ tag instead of “JSF” and tags at StackOverflow are not hierarchical. JSF + JSF-2 is much bigger than just JSF.
When looking at just JSF and Tapestry, the difference becomes even more clear:
(source: Stack Overflow tag trends)
If I play with the numbers using various other sources (forums, amazon books, postings on dzone, etc etc) they all show the same thing: Tapestry does not seem to be very popular.
So again, I wonder why Richard came to the conclusion that Tapestry is among the top 4? I personally don’t think Tapestry is bad or anything, but I just don’t see it being so popular.
Then specifically about JSF, citing Peter Thomas and Bruno Borges about not liking JSF is questionable at best. Both these two are very much hardcore Wicket evangelists, who seem to have a hard time accepting JSF is apparently more popular than their favorite Wicket. Look at Bruno’s comments on the outcome of the zeroturnaround poll where JSF scored high, and where he tries to downplay the outcome by using the “JSF is not a free choice” card (but the other polls and the amount of open source projects based on JSF prove this is nonsense).
A lot of anti-JSF feelings are based on the older 1.x series (especially 1.0 and 1.1), which indeed wasn’t so good. But from 2.0 onwards, JSF is really a very good web framework and it’s hard to find a lot of concrete faults with it.
For instance, JAXEnter did a direct and in-depth comparison between Wicket and JSF 2.0 and there is no mention at all of the supposed facts that Wicket is so much superior to JSF and that JSF has so many faults. Instead, the article explains both frameworks have strong points and neither is fundamentally ‘bad’.
If you look at the blog of Peter Thomas, all the things he cites are for JSF 1.x. Among his latest additions are that the JSF EG had disbanded after 2.0 with no people to continue it (obviously nonsense, since 2.1 has been released since and 2.2 is in progress, see What’s new in JSF 2.2?), and that James Gosling said he hated JSF (this was nonsense; it’s well known he meant to say JSP).
Shaun mentioned the following in his blog:
[I] have heard enough negative comments on JSF to not want to touch it.
I think Shaun should really give the latest JSF 2.1 release a try. It’s absolutely really good and a completely different experience compared to the old 1.x releases. See Minimal 3-tier Java EE app, without any XML config for a very simple introduction and JSF 2.0 tutorial with Eclipse and Glassfish plus Communication in JSF 2.0 for a more elaborate introduction.
JSF being the standard from Java EE and Oracle just naturally attracts more negative comments since it’s well, just popular to bash all things Oracle (and before Sun). I’ve seen people screaming how bad EJB is without ever once having tried it :( Anyway, there are also plenty of negative comments about the other web frameworks (note that I don’t necessarily agree with all of them). E.g.
Why Google Web Toolkit Rots Your Brain
Google Web Toolkit Follow-up
I hate GWT
When not to use Google Web Toolkit?
Why I give up using SmartGWT (not GWT itself, but popular extension)
Addressing Misconceptions about Google Web Toolkit
GWT – Common Problems with Solutions
Extra comment for the above link
GWT is cool, but not complete
The disadvantages of the Google Web Toolkit