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

Compare with Current View Page History

« Previous Version 7 Next »


A component-oriented framework for creating highly scalable web applications in Java.

Java Power

Tapestry pages and components are simple Java POJOs, with easy access to all Java language features and the vast Java ecosystem. Thanks to Java's advanced concurrency API, Tapestry handles requests fast without sacrificing security or stability.

Scripting Ease

Tapestry features live class reloading: change your Java code, refresh the browser and see the changes... instantly! Have your cake and eat it too: the speed and depth of Java, the agile development style of Ruby or Python.

Super Productivity

 Simple POJO classes, streamlined templates, live class reloading, state-of-the-art exception reporting, first-class Ajax support, and a big library of built-in components: Tapestry is designed from the ground up to give you great productivity.

Unknown macro: {div}

We think you will love Tapestry! Give us 20 minutes and follow our quickstart guide.

Unknown macro: {div}

[Follow Tapestry]

Tapestry 5.8.2 is a new release introducing CORS (Cross-Origin Resource Sharing) support and also includes a number of bug fixes and small improvements. Tapestry 5.8.2 is a drop-in replacement and recommended upgrade for Tapestry 5.7.0+ projects. Please check all the details in the release notes page.
Tapestry 5.8.1 release
Hello, Tapestry community! We've just released Tapestry 5.8.1. It's mostly about getting Tapestry-IoC to support all Java language features introduced between Java 9 and 17 https://docs.oracle.com/en/java/javase/17/language/.  It also includes some other bug fixes and small improvements. Tapestry 5.8.1 is a drop-in replacement and recommended upgrade for Tapestry 5.7.0+ projects. All the details are in the release notes. Happy coding!
Tapestry 5.8.0 release
Hello, Tapestry community!Tapestry 5.8.0 has just been released. It's focused on a couple of new features: Support for writing REST endpoints. Read more about this on its documentation page: https://tapestry.apache.org/rest-support-580.html https://tapestry.apache.org/rest-support-580.html. Support for Servlet API 3.0+ asynchronous requests. Full release notes at https://tapestry.apache.org/release-notes-580.html https://tapestry.apache.org/release-notes-580.html. Tapestry 5.8.…
Tapestry 5.7.3 is a new release focused on some improvements and new features. Main ones are: Upgrading Hibernate's version from 5.1.1.Final to 5.4.32.Final. This required some changes in tapestry-hibernate due to some non-backward-compatible changes between these 2 Hibernate versions. If your project doesn't work with this new Hibernate version, you should be able to use version 5.7.2 of tapestry-hibernate and tapestry-hibernate with 5.7.3 of everything else without issues.…
Tapestry 5.6.4 is a drop-in replacement and recommended upgrade for Tapestry 5.4, 5.5 and 5.6 releases. To upgrade, just update the dependency in your build configuration (Maven POM, Gradle build script, etc.) – or Download https://cwiki.apache.org/confluence/display/TAPESTRY/Download the new JAR file -- and the new version will just work. However, please review the How to Upgrade https://cwiki.apache.org/confluence/display/TAPESTRY/How+to+Upgrade instructions before upgrading.…
Tapestry 5.7.2 is a drop-in replacement and recommended upgrade for Tapestry 5.7 releases. To upgrade, just update the dependency in your build configuration (Maven POM, Gradle build script, etc.) – or Download https://cwiki.apache.org/confluence/display/TAPESTRY/Download the new JAR file -- and the new version will just work. However, please review the How to Upgrade https://cwiki.apache.org/confluence/display/TAPESTRY/How+to+Upgrade instructions before upgrading.…
Tapestry 5.6.3 is a drop-in replacement and recommended upgrade for Tapestry 5.4, 5.5 and 5.6 releases. To upgrade, just update the dependency in your build configuration (Maven POM, Gradle build script, etc.) – or Download https://cwiki.apache.org/confluence/display/TAPESTRY/Download the new JAR file -- and the new version will just work. However, please review the How to Upgrade https://cwiki.apache.org/confluence/display/TAPESTRY/How+to+Upgrade instructions before upgrading.…
Tapestry 5.7.1 is a drop-in replacement and recommended upgrade for Tapestry 5.7.1 To upgrade, just update the dependency in your build configuration (Maven POM, Gradle build script, etc.) – or Download https://cwiki.apache.org/confluence/display/TAPESTRY/Download the new JAR file -- and the new version will just work. However, please review the How to Upgrade https://cwiki.apache.org/confluence/display/TAPESTRY/How+to+Upgrade instructions before upgrading.…
Tapestry 5.7.0 is a new major version which needs a migration step for projects using previous versions. To upgrade, update the dependency in your build configuration (Maven POM, Gradle build script, etc.) – or Download https://cwiki.apache.org/confluence/display/TAPESTRY/Download the new JAR file. Please check the Upgrade Guide section below for details. This is a step that only needs to be done once. Please also review the How to Upgrade https://cwiki.apache.…
Tapestry 5.6.2 is a drop-in replacement for Tapestry 5.4, 5.5 and 5.6 releases. It's a recommended upgrade for 5.6.1 and 5.6.0. To upgrade, just update the dependency in your build configuration (Maven POM, Gradle build script, etc.) – or Download https://cwiki.apache.org/confluence/display/TAPESTRY/Download the new JAR file -- and the new version will just work. However, please review the How to Upgrade https://cwiki.apache.…

News

Unknown macro: {div}

What is Apache Tapestry?

Tapestry is ... a web framework for Java

Tapestry applications are written in Java, the most popular enterprise applications development language. Tapestry combines simple Java classes with straight-forward templates to form pages and components.

Tapestry is ... highly productive

Tapestry embraces convention over configuration, so say goodbye to endless XML configuration files. Tapestry is based on components, which allows heavy reuse of elements across multiple pages. Code and templates are lean and mean. Live class reloading means that the time between seeing an error and providing the fix is seconds, not minutes. Advanced exception reporting gives you all the tools you need to fix your problem: not just a stack trace, but every bit of information you need to know about what Tapestry was doing, why it was doing it, what went wrong, and how to fix it.

Tapestry is ... fast

Tapestry is pure Java. It doesn't use Java reflection, and is built to cleanly support large numbers of concurrent threads. Better yet, it automatically includes standard performance-enhancing strategies such as GZip content compression, JavaScript aggregation, and far future expires headers ... all of which cut down on the number of requests from the client, and the size of the responses sent back.

Tapestry is ... agile

Easy to code, easy to test, easy to deploy. Tapestry encourages you to work in small increments with immediate feedback so you are always making fast, forward progress. Want to code in Groovy or Scala instead? No problem!

Tapestry is ... scalable

Tapestry works well for everything from small applications with just a handful of pages, all the way up to large teams and applications with hundreds of pages and custom components. For big teams, Tapestry's pages-and-components design ensures that the efforts of different developers stay automatically integrated.

Tapestry scales up big on a single server, but also gives you great options when you need to switch to a cluster. Tapestry makes it easy to store information on the client (as hidden fields or query parameters) or on the server (in the session).

Tapestry is ... component based

Tapestry applications consist of pages and components. Components are easy to write, and easy to hook together. Simple components can be just a few lines of code, complex components may have their own templates and contain other components. Tapestry always has an overall map of your application, because it knows all the pages and all the components within the pages ... this lets Tapestry do all the "boring plumbing" of web application development.

Tapestry is ... adaptable

Tapestry's architecture is open and extensible. Don't like how Tapestry operates? There's a clean way to add your own logic, or substitute some of Tapestry's logic with your own. Tapestry modules make it easy to create components and package them for reuse in your current application, or across many applications.

Tapestry has built-in modules for integrating Tapestry with the popular Hibernate and Spring projects, and third-party integrations with other tools, such as Quartz.

Tapestry is ... modular

Tapestry's built-in Inversion of Control container is built to support richly layered applications as a stack of libraries. Just drop a library onto the classpath and start using the components, services and integrations it provides. Simple libraries add components and new features to Tapestry, more complex ones can change Tapestry from just a web framework into a full-stack Rapid Application Development solution.

Tapestry is ... global

Tapestry has built-in support for more than a dozen different languages, and makes it easy for your application to cleanly support multiple localizations. Tapestry automatically tracks the user's preferred locale and makes it easy to access user-localized messages across the entire application.

Tapestry is ... dependable

Tapestry's roots go back to 2003 as an Apache project, and even earlier as an open-source project. Thousands of applications run on Tapestry, including high-throughput sites such as SeeSaw.com. Tapestry applications have a history of running glitch-free.

Tapestry is ... fun

Tapestry removes the tedium of developing web applications, leaving just the fun parts. Tapestry keeps you "in the zone", having fun and coding up a storm! Tapestry: code less, deliver more!

More on Tapestry philosophy

Who is using Tapestry?

Unknown macro: {div2}
Unknown macro: {div3}
Unknown macro: {div2}
  • No labels