{include:Banner}
{include:Key Features}
{div:id=bar}
*We think you will love Tapestry\!* Give us 20 minutes and *[follow our quickstart guide|Getting Started]*.
{div}
{div:id=col}
h2. [!twitter_icon.png!|http://twitter.com/apachetapestry][Follow Tapestry]
{widget:url=http://search.twitter.com/search?q=tapestry5}
{blog-posts:max=10|sort=creation|reverse=true|content=excerpts}
h2. [News] [!Feed-icon.gif!|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]
{div}
{div:id=content|class=big-col}
h2. What is Apache Tapestry?
h3. 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.
h3. 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.
h3. 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.
h3. 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\!
h3. 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).
h3. 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.
h3. 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|http://hibernate.org] and [Spring|http://www.springsource.org/] projects, and third-party integrations with other tools, such as [Quartz|http://www.quartz-scheduler.org/].
h3. 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|http://tynamo.org/].
h3. 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.
h3. 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.
h3. 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|TAPESTRY:Principles]
h2. Who is using Tapestry?
{div2:id=references}
- !wooki.png!
[Wooki|http://wookicentral.com] : Opensource collaboration app
- !seesaw.png!
[Seesaw|http://www.seesaw.com] : Video streaming
- !oed.png!
The definitive [Oxford English Dictionary|http://www.oed.com/]
- !recurtrack.png!
[RecurTrack|http://recurtrack.com] : Personal Budgetting
- !yanomo.png!
[Yanomo|http://www.yanomo.com] : Calendar-based time & task tracking
- !cubiculus.png!
[Cubiculus|http://www.cubiculus.com] : Lego Building Instructions
- !mybet.png!
[myBet|http://www.mybet.com] : Sports Bets Casino Poker
{div3:class=clearer}{div3}
{div2}
{div2:class=clearer}{div2}
{div}
|