Written in pure Java: code your pages and components in Java, Groovy or Scala.
Div
id
is-productive
Highly Productive
Live class reloading means that the time between seeing an error and providing the fix is seconds, not minutes.
Div
id
is-reporting
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
is-fast
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.
Div
class
col-md-6
Div
id
is-injection
Convention over Configuration
Say goodbye to endless XML configuration files: dependency Dependency injection and meta-programming through annotations and naming conventions.
Div
id
is-scalable
Scalable
Scales up big on a single server, and works great in a cluster. Keeps session state minimal by design.
Div
id
is-testable
Testable
Committed to testability throughout design; built-in utilities to enhance TDD. Support for Selenium for integration testing.
Div
id
is-modular
Adaptable and Modular
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.