Yesterday I was at the Developer Day of Swiss Railways.
Florian Seidl talked about future enterprise software architecture where he doubt that the application still plays a central role in Java EE.
A lot of people argue that it is a pain to relay on a out dated full blown Java EE application server and therefore use a Spring/Tomcat stack or simply use Spring on top of the application server.
It seems that there is a problem in how Java EE is defined. In my opinion it would make sense to divide all the Java EE specs in two parts.
One part should contain all the specs that are directly related to the application server and on the other side there should be the specs where the application code is built on top.
App server related topics are web containter, threading, JTA, JCA, JAAS, JMS etc.
Application related are i.e. JPA, CDI, EJB, JSF.
The idea behind the separation is that one could update the application related implementations without changing the application server version.
For example I don't see any reason for not using JPA 2.1 in a Java EE 5 application server.
Sure these lists are just a first guess and incomplete but I would be interested what you think.