CINXE.COM
Apache Tapestry
<!DOCTYPE html> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="keywords" content="tapestry, apache, apache tapestry, framework, java, web, component, open source, application, dynamic, scalable, robust, servlet"> <meta name="description" content="Apache Tapestry is a open-source component-oriented 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."> <title> Apache Tapestry </title> <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/images/apache-tapestry-icon-144.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/images/apache-tapestry-icon-114.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/images/apache-tapestry-icon-72.png"> <link rel="apple-touch-icon-precomposed" href="/images/apache-tapestry-icon-57.png"> <link rel="shortcut icon" href="/images/apache-tapestry-icon-32.png"> <link rel="stylesheet" href="/resources/bootstrap/bootstrap.min.css"> <link rel="stylesheet" href="/resources/font-awesome/5.13.0/css/all.min.css"> <link rel="stylesheet" href="/resources/prism/1.20.0/prism.min.css"> <link rel="stylesheet" href="/resources/fonts/fonts.css"> <link rel="stylesheet" href="/styles/main.css"> <script type="text/javascript"> if (window.location.protocol === 'http:' && window.location.hostname !== 'localhost') { window.location = window.location.href.replace('http://', 'https://'); } </script> <script src="/resources/jquery/jquery-3.4.1.slim.min.js"></script> <script src="/resources/bootstrap/popper.min.js" defer></script> <script src="/resources/bootstrap/bootstrap.min.js" defer></script> <script src="/resources/prism/1.20.0/prism.min.js" defer></script> <script src="/resources/prism/1.20.0/prism-autoloader.min.js" defer></script> <!-- Matomo --> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(["setDoNotTrack", true]); _paq.push(["disableCookies"]); _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://analytics.apache.org/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '71']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Matomo Code --> </head> <body> <!-- /// Navigation Start --> <div id="navigation"><div class="aui-message aui-message-error"><p class="title"><strong>Error rendering macro 'html'</strong></p><p>Notify your Confluence administrator that "HTML for Confluence" requires a valid license. Reason: EXPIRED</p></div></div> <!-- /// Navigation End --> <article> <div class="container-fluid"> <div class="container pt-5"> <div class="row"> <div class="col-12"> <!-- /// Content Start --> <div id="content"> <div id="ConfluenceContent"><p></p><div class="row" id="top"><div class="col-md-8 home-banner"><p><span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image" draggable="false" height="250" src="index.data/apache-tapestry-icontext-600.png"></span></p></div> <div class="col-md-4" style="padding: 0 2em 2em"><p>A component-oriented framework for creating highly scalable web applications in Java.</p></div> </div> <div class="row" id="features"><div class="col-sm-4"><h3 id="Index-JavaPower">Java Power</h3><div class="feature relief"><p>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 <em>fast</em> without sacrificing security or stability.</p></div> </div> <div class="col-sm-4"><h3 id="Index-ScriptingEase">Scripting Ease</h3><div class="feature relief"><p>Tapestry features <em>live class reloading</em>: 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.</p></div> </div> <div class="col-sm-4"><h3 id="Index-SuperProductivity">Super Productivity</h3><div class="feature relief"><p> 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.</p></div> </div> </div> <div id="bar"><p><strong>We think you will love Tapestry!</strong> Give us 20 minutes and <strong><a href="getting-started.html">follow our quickstart guide</a></strong>.</p></div> <div class="row"><div class="col-md-8" id="left-content"><p></p><div style="margin:1em"><p></p><div class="row" id="whatIs"><h3 id="Index-WhatisTapestry?">What is Tapestry?</h3><div class="col-md-6"><div id="is-polyglot"><h4 id="Index-PureJavaandPolyglot">Pure Java and Polyglot</h4><p>Written in pure Java: code your pages and components in Java, Groovy or Scala.</p></div> <div id="is-productive"><h4 id="Index-HighlyProductive">Highly Productive</h4><p>Live class reloading means that the time between seeing an error and providing the fix is seconds, not minutes.</p></div> <div id="is-reporting"><h4 id="Index-AdvancedExceptionReporting">Advanced Exception Reporting</h4><p>Gives you all the tools you need to fix your problem: not just a stack trace, but details about what Tapestry was doing and why, what went wrong, and how to fix it.</p></div> <div id="is-fast"><h4 id="Index-Fast">Fast</h4><p>Pure Java; no reflection, not even for property expressions. Built to cleanly support large numbers of concurrent threads without contention. Integrated GZip content compression, JavaScript aggregation and compression, and client-side caching.</p></div> </div> <div class="col-md-6"><div id="is-injection"><h4 id="Index-ConventionoverConfiguration">Convention over Configuration</h4><p>Dependency injection and meta-programming through annotations and naming conventions.</p></div> <div id="is-scalable"><h4 id="Index-Scalable">Scalable</h4><p>Scales up big on a single server, and works great in a cluster. Keeps session state minimal by design.</p></div> <div id="is-testable"><h4 id="Index-Testable">Testable</h4><p>Committed to testability throughout design; built-in utilities to enhance TDD. Support for Selenium for integration testing.</p></div> <div id="is-modular"><h4 id="Index-AdaptableandModular">Adaptable and Modular</h4><p>Architecture is open and extensible. There's a clean way to add your own extensions, or override built-in logic. Provides integration with Hibernate, JPA and Spring. Third-party integrations with other tools, such as Quartz and Lucene.</p></div> </div> </div>  </div> <div style="margin: 1em"><p>More on <a href="principles.html">Tapestry philosophy</a> - Who uses <a href="applications.html">Tapestry </a>?</p><p><a class="external-link" href="http://twitter.com/apachetapestry" rel="nofollow"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" src="index.data/twitterTapestry.png"></span></a></p></div> </div> <div class="col-md-4" id="twitter-container"><div class="aui-message aui-message-error"><p class="title"><strong>Error rendering macro 'html'</strong></p><p>Notify your Confluence administrator that "HTML for Confluence" requires a valid license. Reason: EXPIRED</p></div><h3 id="Index-Latestnews"><a href="news.html">Latest news</a> <a href="https://cwiki.apache.org/confluence/createrssfeed.action?types=blogpost&spaces=TAPESTRY&title=Apache+Tapestry+News+RSS+Feed&labelString%3D&sort=created&maxResults=10&timeSpan=12&confirm=Create&showContent=true&showDiff=false"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" draggable="false" src="index.data/Feed-icon.gif"></span></a></h3> <div class="blog-post-listing"> <div class="logo-heading-block"> <span class="logoBlock"> <span class="aui-avatar aui-avatar-large"> <span class="aui-avatar-inner"> <a class="userLogoLink" href="https://cwiki.apache.org/confluence/display/~thiagohp"> <img class="userLogo logo" src="/images/confluence/icons/profilepics/default.svg" alt="User icon: thiagohp" title="thiagohp"> </a> </span> </span> </span> <span class="blogHeading"> <a class="blogHeading" href="/confluence/pages/viewpage.action?pageId=318605731">Tapestry 5.8.7 released</a> </span><div class="page-metadata not-personal"> <a class="url fn confluence-userlink" href="https://cwiki.apache.org/confluence/display/~thiagohp">Thiago Henrique De Paula Figueiredo</a> posted on Aug 12, 2024</div> </div> <div class="wiki-content"> Tapestry 5.8.7 is a mostly bugfix release, although it also includes a couple improvements. It fixes a few regressions caused by the multiple classloader mode/smarter page cache invalidation feature. It's a recommended upgrade for Tapestry 5.7.0+ projects. Please check all the details in the release notes page https://tapestry.apache.org/release-notes-587.html.  </div> </div> <div class="blog-post-listing"> <div class="logo-heading-block"> <span class="logoBlock"> <span class="aui-avatar aui-avatar-large"> <span class="aui-avatar-inner"> <a class="userLogoLink" href="https://cwiki.apache.org/confluence/display/~thiagohp"> <img class="userLogo logo" src="/images/confluence/icons/profilepics/default.svg" alt="User icon: thiagohp" title="thiagohp"> </a> </span> </span> </span> <span class="blogHeading"> <a class="blogHeading" href="/confluence/pages/viewpage.action?pageId=301795997">Tapestry 5.8.6 released</a> </span><div class="page-metadata not-personal"> <a class="url fn confluence-userlink" href="https://cwiki.apache.org/confluence/display/~thiagohp">Thiago Henrique De Paula Figueiredo</a> posted on Apr 16, 2024</div> </div> <div class="wiki-content"> Tapestry 5.8.6 is a bugfix release, being a  drop-in replacement and recommended upgrade for Tapestry 5.7.0+ projects. Please check all the details in the release notes page https://cwiki.apache.org/confluence/display/TAPESTRY/Release+Notes+5.8.6. </div> </div> <div class="blog-post-listing"> <div class="logo-heading-block"> <span class="logoBlock"> <span class="aui-avatar aui-avatar-large"> <span class="aui-avatar-inner"> <a class="userLogoLink" href="https://cwiki.apache.org/confluence/display/~thiagohp"> <img class="userLogo logo" src="/images/confluence/icons/profilepics/default.svg" alt="User icon: thiagohp" title="thiagohp"> </a> </span> </span> </span> <span class="blogHeading"> <a class="blogHeading" href="/confluence/pages/viewpage.action?pageId=300026422">Tapestry 5.8.5 released</a> </span><div class="page-metadata not-personal"> <a class="url fn confluence-userlink" href="https://cwiki.apache.org/confluence/display/~thiagohp">Thiago Henrique De Paula Figueiredo</a> posted on Mar 31, 2024</div> </div> <div class="wiki-content"> Tapestry 5.8.5 is a bugfix release, being a  drop-in replacement and recommended upgrade for Tapestry 5.7.0+ projects. Please check all the details in the release notes page. </div> </div> </div> </div> <p></p><p></p><p></p><p></p><p></p></div> </div> <!-- /// Content End --> </div> </div> </div> </div> </article> <!-- /// Footer Start --> <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache feather logo, and the Apache Tapestry project logo are trademarks of The Apache Software Foundation.</p><p><br clear="none"></p><div class="aui-message aui-message-error"><p class="title"><strong>Error rendering macro 'html'</strong></p><p>Notify your Confluence administrator that "HTML for Confluence" requires a valid license. Reason: EXPIRED</p></div><br clear="none"><p><br clear="none"></p></div> <!-- /// Footer End --> </body> </html>