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.
News
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, which means little or no configuration effort. It is based on components which allows heavy reuse of elements across multiple pages. It supports live class reloading: simply change a class and refresh the page in the web browser.
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 ... productive
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 ... 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 for 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 ... 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 ... 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 a 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?
Wooki : Opensource collaboration app
Seesaw : Video streaming
RecurTrack : Personal Budgetting
Yanomo : Calendar-based time & task tracking
Cubiculus : Lego Building Instructions