Developing Java Web Applications with Tapestry 5



In this post I would like to share my experience with  developing Java Web Applications with Tapestry 5.

Tapestry is a component oriented framework for creating dynamic, robust, highly scalable web applications in Java. Tapestry is been is here for a while now, not really taken off as a web framework for Java. In the past, it is been critisized for non compatability of its versions. After the release of version 5 in 2008 it has been more consistant and popular with developers.

I have been using Tapestry for the last 15 months and used both version 5.0.18 and 5.2.6. One of the main issues with tapestry was the learning curve and that is been some what improved now, with the exelent documentation available at the project home page here. You don't see  a lot of tapestry resources online. If you search for the tapestry resources in internet you might end up getting t3 or t4 versions which will not be usefull with the new t5 version.

Having worked in tapestry for more than one year, I must say that I have mixed opinion about tapestry. Its POJO based approach is really nice and it also scores as a component based framework. The components are easily plug-gable in all the pages. There has been a lot of improvements in the ability of unit testing the pages. Even if you don't want to depend on tapestry's test classes you can create your own integration test cases as the pages are simple java classes. It has really good integration with spring that opens your window to all other frameworks and technologies.

The biggest pain is been when you are stuck with problems, the alternatives were really difficult. For example there is a grid component in tapestry which by default provides sorting for all the columns in the grid. If you need to disable sorting, there should be hell lot of things you have to do as told here. In another example, you might need to have 3 classes construct a simple drop down in tapestry as told here. In today world of IDE tapestry don't have much of IDE support and that can be a pain while you develop a page in tapestry.

Its been really difficult to find good resouces about tapestry and I thought of sharing some links that I found useful during my learning of tapestry. As I told already the getting started page is reaaly improved and now you can really get started with tapestry in that page. The wiki page contains lots of tips and tricks on how to use tapestry features.

The Tapestry Jump Start page is great place with lots of examples that will help you get into tapestry. Howard M. Lewis Ship the creator of Tapestry writes about tapestry in his personal blog is also a good read.  Recently I have found another site with lots of exapmle in tapestry.  Even the Tapestry360 is a fresh and new concept.I  really liked Mark Shead blog post is a good collection of usefull references about tapestry5.

When you are thinking about java web framework I think tapestry should be one of the choices. If You compare tapestry with other web framework there will be lots of diffidence have a look at Matt Raible presentation about comparing jvm web frameworks also the matrix comparing the web frameworks in Java. Also there is a post from Joshua about why you should consider tapestry5.