Hello, my name is Brian O'Neill, and I've been J2EE free for almost 8 years now.
A long time ago in a blog post far away, I asked the question "Is J2EE dead?". Almost five years later, I'm here to say that, "Yes, J2EE is dead". In fact, I'd say that it is now generations removed from the emerging technologies, and an ancestor to current enterprise best practices.
Originally, I thought that the MVC and HTTP/CRUD portions of J2EE would be replaced by rapid development frameworks like Rails. The back-end non-http portions of the system (e.g. JMS) would move outside the container into Enterprise-Service Bus's (ESBs) and other non-J2EE based event-driven systems.
In large part, I think we've seen this trend. Increasingly, enterprises are adopting Fuse, Camel and Mule to form an event-driven backbone for the enterprise and although I don't believe we've seen as wide an adoption of Rails in the enterprise, I think we've seen a strong movement towards light-weight non-J2EE containers for web application deployment. In fact, I didn't realize just how much the deployment landscape has changed, until I saw this survey, which showed that half the enterprise servers are running Tomcat followed by Jetty at 16%.
We're perhaps on the extreme end, since we've abandoned war files entirely, swapping them out for the Dropwizard framework with an embedded Jetty Server. (and we're loving it)
Meanwhile, back at the (server) farm, our java-heads can crank out light-weight services, which replace the stub JSON files with real services that interact with the back-end systems. To keep them productive, again we cut the fat, we stay in J2SE and roll simple JAX-RS based services that we *could* deploy to Tomcat, but we choose to deploy as individual processes using DropWizard. They are simple java classes that anyone can pick up and start coding after only reading the first couple chapters of Java in 21 days.
This not to say that we don't leverage elements of the J2EE stack (e.g. JMS and Servlet Filters for security, etc.), but even those we are beginning to replace with web-scale equivalents (e.g. Kafka). I can see the day coming where J2EE will be naught but a distant memory.
"Alas poor J2EE, I knew him (well)." We'll miss you.
(BTW -- keep your eye on the up and coming Apigee. They hint at even more radical (and productive) architecture strategies that focus your time away from infrastructure entirely, focusing your time on only the elements of your application that are unique. Its a glimpse of things to come.)