Interesting discussion. :)

As much as you can move logic from server- to client-side, there's still stuff that doesn't fit well in the client, specially security-sensitive stuff (including privacy issues and sensitive data that shouldn't leave the servers). So you want this stuff done server-side, and Tapestry and Tapestry-IoC (from which a large fraction of Tapestry-the-web-framework awesomeness comes from) are a very good choice, maybe even the better ones.

One example in which single-page applications wouldn't work: websitPubFactory (http://www.pubfactory.com/), which is built on Tapestry. Disclaimer: I'm part of the PubFactory team: https://www.safaribooksonline.com/blog/2015/11/23/my-life-with-open-source-or-how-helping-strangers-boosted-my-career/. From PubFactory's website:

"PubFactory is built from the ground up to support books, reference works and journals in a variety of XML formats, with full support for PDF, images and other rich media. It offers a full array of features for users, management tools for librarians and administrators, and a complete suite of back-end controls for publishers to control their content and manage relationships with their customers."

We could never pass the raw document data for it to be transformed and rendered client-side. It would be both a security issue (raw data in the client) and probably a performance issue (too much time and processing power needed to do the complex transformations if done in the client, specially in mobile devices). SEO is also a very important factor for PubFactory and its clients and it's not covered well by single-page applications yet.

On Tue, 29 Dec 2015 12:07:57 -0200, Barry Books <trs...@gmail.com> wrote:

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.


--
Thiago H. de Paula Figueiredo
Tapestry, Java and Hibernate consultant and developer
http://machina.com.br

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to