I've written several "Enterprise Apps" with Tapestry and I would say as of
5.4 it's pretty much perfect for that class of web applications. The best
feature of Tapestry is it's easy to build components and piece them
together is various ways to build applications. The obvious place to start
is with the tml/java UI components but with Tapestry pretty much everything
is a building block that that can be combined in various ways. For example
BeanEditor/Grid/Hibernate can handle CRUD with only a few lines of code and
produce a working prototype in a few minutes. By leveraging datatypes,
validators, mixing, components and services the prototype can be turned
into the final product. All the parts can easily be refactored into a
library and the next application is even easier. The addition of Bootstrap
makes everything pretty without much work.

While Java is perhaps the new Cobol that's a feature in the Enterprise
world. Tapestry hides some of the worst parts like server restarts and if
you do things right it's faster to build prototypes with Tapestry than
almost anything else and they will work in production and be maintainable.
With annotations most of the high level code can be declarative and it's
possible to make sweeping changes without changing the tml/Java files. It's
possible to plug into the rendering pipeline in various ways so complexity
can be isolated and finally if you use Maven the structure is defined and
builds are easy (really).

As far as performance I run 5 applications on one virtual machine with 4
instances of Tomcat. I load balance the apps across 2 so I can deploy
without downtime. I run Hudson in 1 to schedule jobs and the last instance
runs all the batch jobs. The machine gets about 10 page hits a second and
runs about 10% cpu. I'm sure all of them could be run on the smallest AWS
EC2 instance.

The whole stack (except perhaps the database) is free and Enterprise
friendly. I'm not sure what else you could want.

As far as one page apps go I have built some GWT apps that run on top of
the Tapestry stack  but I've been moving them back to Tapestry one by one.
While there have been complaints about Tapestry backward compatibility some
of my applications started with version 3 and are now 5.4 While it's taken
some work the fundamental ideas have remained pretty constant. Currently
this does not seem to be the case with Javascript frameworks and long term
maintenance is a problem.

While single page apps are the new hotness I think they fill a perhaps
small niche. They are not currently SEO or Enterprise friendly. That said
Google maps would be painful as an old school web app.

Reply via email to