I'm job hunting right now which means I sometimes have to explain why I chose Tapestry for a web application platform. ( http://www.linkedin.com/in/pwetter if your company needs a new Director of Web Development ).
I had an insight yesterday that I thought I would share. Tapestry is a compiler. That is, Tapestry considers your .tml files and your .java files as just a starting point. From that starting point it builds data structures, new classes, bytecodes and a host of other cool stuff behind the scenes. That's one of the reasons its so fast and efficient as an application framework while running. Unlike a lot of other frameworks that are essentially running as interpreters, Tapestry runs as compiled code. The key insight here is something I've known about T5 for a while: Your .java files and .tml files are just the starting point; they're essentially declarations that are re-interpreted by T5 to produce a lot of stuff behind the scenes. You may think that you have Component.java, which declares a class called Component with one or 2 methods, but by the time Tapestry is finished with it numerous additional methods and instance variables have been added, certain things in your class have been rewired, all kinds of cool stuff. Just as a few lines of declaration code imply a whole bunch of work by the java compiler behind the scenes, so does a few lines of Tapestry code imply a whole bunch of work by the "Tapestry compiler". I hope this insight helps people. Pierce
smime.p7s
Description: S/MIME cryptographic signature