Written in pure Java: code your pages and components in Java, Groovy or Scala.
Div
id
injectionBox
Convention over Configuration
Say goodbye to endless XML configuration files: dependency injection and meta-programming through annotations and naming conventions.
Div
id
productiveBox
Highly Productive
Live class reloading means that the time between seeing an error and providing the fix is seconds, not minutes.
Div
id
scalableBox
Scalable
Scales up big on a single server, and works great in a cluster. Keeps session state minimal by design.
Div
class
col-md-6
Div
id
reportingBox
Advanced Exception Reporting
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.
Div
id
testableBox
Testable
Committed to testability throughout design; built-in utilities to enhance TDD. Support for <a href="http://seleniumhq.org/">Selenium</a> for integration testing.
Div
id
fastBox
Fast
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.