With formatting: http://tapestryjava.blogspot.com/2010/12/announcing-tapestry-52.html
On Thu, Dec 16, 2010 at 2:22 PM, Howard <hls...@gmail.com> wrote: > I'm very proud to announce that the next major release of Tapestry, > release 5.2, is now available as Tapestry version 5.2.4. > This is the first stable release of Tapestry since 5.1.0.5 (back in > April 2009), which is far too long a cycle. You might wonder: what's > been the holdup? The answer, for myself personally, is that I've been > using Tapestry on two very, very different applications for two very, > very different clients and I've been updating Tapestry to embrace the > real world concerns of both of them. At the same time, I've done about > a dozen public and private Tapestry training sessions and gathered > reams of input from my students. > Let's talk about some of the major enhancements in this release: > Removal of Page Pooling > Prior versions of Tapestry used a page pool; for each page, Tapestry > would track multiple instances of the page, binding one page instance > to a particular request. This was an important part of Tapestry's > appeal ... all the issues related to multi-threading were taken over by > the framework, and you could code your pages and components as simple > POJOs, without worrying about the threading issues caused by running > inside a servlet container. > Unfortunately pages are big: it's not just one object but instead the > root of a large tree of objects: components and templates, bindings for > component parameters, component resources, and all the extra > infrastructure (lists and maps and such) to tie it together. Some of > the largest Tapestry projects have hit memory problems when they > combined deeply componentized pages with large numbers of parallel > threads. > Tapestry 5.2 rewrites the rules here; only a single page tree is now > needed for each page; the page and component classes have an extra > transformation step that moves per-request data out of the objects > themselves and into a per-thread Map object. Now, any number of > requests can operate at the same time, without requiring additional > page instances. Even better, the old page pooling mechanism included > some locking and blocking that also gets jettisoned in the new > approach. It's just a big win all around. Live Service Reloading > People love the ability to change page and component classes in a > Tapestry application and see the changes immediately; prior to 5.2 the > same people would be disappointed that they couldn't change their > services and see changes just as immediately. Tapestry 5.2 eliminates > that restriction in most cases. > This is super handy for services such as DAOs (data access objects) > where it is now possible to tweak a Hibernate query and see the results > as immediately as changing some content in a template. This is another > Tapestry feature that you'll find you can't live without once you use > it the first time! ClassTransformation API Improvements > At the heart of Tapestry is the Class Transformation API; the > extensible pipeline that is the basis for how Tapestry transforms > simple POJOs into working components. Prior to 5.2, if you wanted to do > any interesting transformations, you had to master the Javassist > psuedo-Java language. > Tapestry 5.2 reworks the API; it is now possible to do all kinds of > interesting transformations in strict Java code; Javassist has been > walled off, with an eventual goal to eliminate it entirely. Query > Parameter Support > Tapestry traditionally has stored information in the HTTP request path. > For example, a URL might be /viewaccount/12345; the viewaccount part of > the URL is the name of a page, and the 12345 part is the ID of an > Account object. Tapestry calls the latter part the page activation > context (which can contain one or more values). > That works well when the a page has a fixed set of values for the page > activation context, but not so well when the values may vary. For > instance, you may be doing a search and want to store optional query > parameters to identify the query term or the page number. > Tapestry 5.2 adds the @ActivationRequestParameter annotation that > automates the process of gathering such data, encoding into URLs as > query parameters, and making it available in subsequent requests. > Testing > A lot of work has gone into Tapestry's testing support, especially the > base classes that support integration testing using Selenium. The new > base classes make it easy to write test cases that work independently, > or as part of a larger test, automatically starting and stopping > Selenium and Jetty as appropriate. Further, Tapestry expands on > Selenium's failure behavior, so that failures result in a capture of > the page contents as both HTML and a PNG image file. It is simply much > faster and much easier to write real, useful tests for Tapestry. > JSR-303 Support > Tapestry now supports the Bean Validation JSR, converting the standard > validation annotations into client-side and server-side validations. > Documentation > Tapestry's documentation has always been a challenge; for Tapestry 5.2 > we've been doing a massive rework; doing a better job of getting your > started using Tapestry; it's still a work in progress, but since it's > based on a live Confluence wiki (and no longer tied to the release > process) the documentation is free to quickly evolve. > Better yet, you don't have to be a committer to write documentation ... > just sign your Apache Contributor License Agreement. > And in terms of exhaustive guides ... Igor Drobiazko's book is being > translated from German to English as Tapestry 5 In Action. Summary > I'm very proud of what we've accomplished over the last 18 months; > we've added new committers, new documentation, and lots of new > features. We even have a fancy new logo, and a new motto: Code Less, > Deliver More. > Tapestry 5 was designed so that it would be possible to make big > improvements to the internals and add new features to the framework > without impacting existing users and applications; Tapestry 5.2 has > validated that design and philosophy. It delivers a lot of punch in a > non-disruptive way. > So, if you are looking for a high-productivity, high-performance web > framework that doesn't get in your way, it's a great time to take a > closer look at Tapestry! > > -- > Posted By Howard to Tapestry Central at 12/16/2010 02:22:00 PM -- Howard M. Lewis Ship Creator of Apache Tapestry The source for Tapestry training, mentoring and support. Contact me to learn how I can get you up and productive in Tapestry fast! (971) 678-5210 http://howardlewisship.com