18 months ago I had an opportunity to work briefly with Tapestry and quite liked it. Currently using JSF 1.2 with facelets (so that no JSPs only XHTML). I feel even though Tapestry is a well designed and powerfull framework it is not easier to grasp and has a faster learning curve compared to JSF. Eg. concept of page pooling etc.
What are your thoughts on this and why do you think despite Tapestry's deisgn excellence JSF is more widely used?
[ March 03, 2008: Message edited by: arulk pillai ]
[ March 03, 2008: Message edited by: arulk pillai ] [ March 03, 2008: Message edited by: arulk pillai ]
Firstly the author will have a better insight into Tapestry's strengths and where it shines over JSF. Also books on frameworks need to convince the user why it is better suited compared to other similar frameworks to convince the reader. There are myriad of frameworks for developing web applications and it is vital to choose the right framework based on its merits.
I'm not the author (and the promo doesn't official start until tomorrow), but I'll throw one reason in the ring - JSF is a "standard". This makes some shops more likely to consider it in hopes that Sun won't abandon it.
Originally posted by arulk pillai: Firstly the author will have a better insight into Tapestry's strengths and where it shines over JSF.
Not if the author doesn't know diddly about JSF.
Originally posted by arulk pillai: Also books on frameworks need to convince the user why it is better suited compared to other similar frameworks to convince the reader. There are myriad of frameworks for developing web applications and it is vital to choose the right framework based on its merits.
Agreed, sort of. If all books regarding web frameworks dealt with the "why is it better than A, B, C, and D" then there would be no room left for anything else. And it would have been great if the above statement was included in your original post. My point was that your question stated nothing about the book aside from the title of your post. [ March 03, 2008: Message edited by: Gregg Bolinger ]
As a matter of fact, comparing Java web frameworks was the topic of my MSc dissertation, and I compared Tapestry (at that time in version 3) to Struts and JSF. I keep reading about how JSF progresses, and Facelets is actually an example of how JSF can gradually become "less standard".
In fact, I will be not surprised if in the future, say in its 3rd version, JSF will become more like Tapestry than what it is now. We already have an example of what can happen with a standard framework - EJB3.
The greatest benefit of Tapestry over JSF, from my very practical point of view is that in Tapestry creating a custom component is as easy as to create a page. On the other hand, in JSF creating a custom component requires a knowledge of the moving parts of the framework and is a relatively advanced task. Custom components are a very important part of any project because all the time you create some solutions that could be reused on different pages or in different projects.
Another benefit of Tapestry is the way how it works with page templates - it is very easy to convert an HTML mock up into a Tapestry template, and edit it afterwards without breaking the logic.
Behind the scenes, Tapestry is more efficient because it doesn't recreate the component tree but uses a pool of page objects.
But perhaps most importantly, Tapestry is actually much *easier* to learn than JSF to the level where you can use it productively. The legend by the steep learning curve of Tapestry is caused by two factors. One of them is the absence of easy to understand books - and my book should be helpful here. The other one is that Tapestry 3 and 4 used abstract methods extensively, and that was a difficult concept for many newcomers.
Tapestry 5 is much easier because its pages are POJOs - nothing abstract anymore! I gave my book to a number of young developers here in the company and they say that Tapestry 5 is very easy. So I do recommend you to try it and then make your own conclusions about how it compares to JSF.
I would add to this that learning Tapestry 5 you will be surprised how widely the principle of convention over configuration is used in it. It doesn't imitate Rooby on Rails, as other frameworks do, but it is close to it in spirit and from the purely presentation tier point of view it goes much further.
[ March 04, 2008: Message edited by: Alexander Kolesnikov ] [ March 04, 2008: Message edited by: Alexander Kolesnikov ]
Alexander Kolesnikov<br />Java Web Developer<br />SCJP 1.4, SCWCD 1.4, SCBCD 1.3<br /><a href="http://sundraw.ws" target="_blank" rel="nofollow">Tapestry 5: Building Web Applications</a><br /><a href="http://sundraw.ws/batik.jsp" target="_blank" rel="nofollow">Java Drawing With Apache Batik</a>
Joined: May 31, 2007
Alexander you convinced me to try Tapestry 5. As I said before I had a brief experience with it and quite enjoyed building components with it.
I'm also one of those confused souls in the java web development world. Yes I have read articles about how easy it is to develop custom components in tapestry. Then you have blog entries like this - easy custom jsf development
In fact facelets allow jsfc attribute similar to jwcid and facelets allow for template previewability as well?
Now am not sure if developing custom components is tough in JSF either. I also read a blog that says that facelets will become a standard in JSF 2. JSF controller classes are POJOs as well. But you say that JSF does not perform as well as tapestry,
So even after JSF 2, JSF will be a easy but non-performant java web standard?
Joined: Feb 26, 2005
Well, I've read an article proving that creating JSF components is easy. To declare that it is easy is one thing, to prove that is another, and having experience of creating Tapestry components I wouldn't say that that article showed anything that was easy.
I believe that as JSF goes to next version, it will adopt more ideas from Tapestry, and Facelets is an example of how standard technology (JSF) can get rid of its standard predecessors (JSP). Look at what happened with EJB specification. I think something similar will happen with JSF - it will adopt the best solutions from open source projects, Tapestry in the first place.
JSF is less efficient because it recreates components tree each time the page is requested. Tapestry uses pooled preconfigured page classes instead, which is much better in terms of efficiency.