You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

What is Apache Tapestry?

Apache Tapestry is an open-source framework for creating dynamic, robust, highly scalable web applications in Java. Tapestry complements and builds upon the standard Java Servlet API, and so it works in any servlet container or application server.

Tapestry divides a web application into a set of pages, each constructed from components. This provides a consistent structure, allowing the Tapestry framework to assume responsibility for key concerns such as URL construction and dispatch, persistent state storage on the client or on the server, user input validation, localization/internationalization, and exception reporting. Developing Tapestry applications involves creating HTML templates using plain HTML, and adding a small java class for each. In Tapestry, you create your application in terms of objects, and the methods and properties of those objects – and specifically not in terms of URLs and query parameters. Tapestry brings true object oriented development to Java web applications.

Tapestry is specifically designed to make creating new components very easy, as this is a routine approach when building applications.

Tapestry is architected to scale from tiny, single-page applications all the way up to massive applications consisting of hundreds of individual pages, developed by large, diverse teams. Tapestry easily integrates with any kind of backend, including JEE, Spring and Hibernate.

It's more than what you can do with Tapestry ... it's also how you do it! Tapestry is a vastly productive environment. Java developers love it because they can make Java code changes and see them immediately ... no redeploy, no restart! And it's blazingly fast to boot (even when files change). Designers love it because Tapestry templates are so close to ordinary HTML, without all the cruft and confusion seen in JavaServer Pages. Managers love it because it makes it easy for large teams to work together, and because they know important features (including localization) are baked right in. Once you work in Tapestry there's no going back!

Tapestry is released under the Apache Software Licence 2.0.

New And Of Note

Main Article: Release Notes

  • Tapestry now uses the Blackbird JavaScript console.
  • Tapestry now automatically combines multiple JavaScript libraries into a single request.
  • An Ajax event request may now return a MultiZoneUpdate instance to update multiple zones in the client web browser.
  • Client-side numeric validation is now locale-sensitive.
  • Some significant performance improvements over Tapestry 5.0.18: the time to initially load a page, and the time to render a page have decreased.
  • Tapestry IoC services can now be easily advised as well as decorated (both of these refer to Aspect Oriented Techniques applied to Tapestry IoC services).
  • Tapestry Services can now be injected into Spring Beans, when using the Tapestry/Spring integration library.
  • Tapestry now compresses responses for clients that support GZIP compression. Context and classpath assets are now handled uniformly: versioned URLs, far-future expiration headers, and GZIP compression where applicable.
  • Ordered and mapped configurations can now have overrides.
  • Property expressions have been improved: You can now invoke methods with parameters, or create a list (very useful for link contexts).
  • IoC Service contributions may now be made in terms of classes (that are automatically instantiated) as well as instances.
  • A simpler method of overriding built-in services has been added.

Roadmap

The 5.1 release is out and available now, work is finished on the imminent 5.2 release, and developers are beginning to focus on 5.3.

The goal is to produce such releases on a regular schedule, every 4 - 6 months.

High priorities for upcoming releases include Spring Web Flow integration, support for developing Tapestry applications as Portlets, a Javascript abstraction layer, removal of Javassist, IoC improvements, more add-on libraries and components, and improvements to documentation.

Third Party Libraries, Tutorials and Resources

A number of third party libraries, tutorials and resources are listed on the Tapestry Home page.

About Snapshots and Releases

Tapestry is built using Maven, which makes it really easy to download the source and build it yourself, either the whole project, or just one single module.

Better yet, you can pull down Tapestry modules from the central Maven repository.

The use of Maven has let us move with great speed, providing preview releases and snapshots.

Snapshots are intermediate versions of releases. As of this writing, the most recent preview release is 5.0.2 and the current snapshots are for 5.0.3-SNAPSHOT. Maven keys off the -SNAPSHOT suffix and handles the dependency specially. It knows that snapshot releases can change frequently, so it will keep checking (at least once a day, maybe more often) to see if there's an updated version of the snapshot.

A nightly build process on Tapestry's continuous integration server creates new snapshots every night.

Snapshots don't go in the central Maven repository (that's reserved for full releases). Instead, they go into the Tapestry snapshots repository at http://tapestry.formos.com/maven-snapshot-repository.

To access this repository, you may add -DremoteRepositories=http://tapestry.formos.com/maven-snapshot-repository to the command line when running Maven.

Your best bet is to use the quickstart Maven archetype to create your initial Tapestry project; it generates a full project directory, including a POM that links to the Apache snapshots repository.

Documentation on this site usually refers to the latest snapshot ... that is, it is usually ahead of the last official release. In some cases, it is written as if the snapshot release is stable; if documentation refers to version 5.1.x.x and that doesn't work, try 5.1.x.x-SNAPSHOT.

  • No labels