I’m working with Java EE 6 for a long time. When talking with people, I oftentalk about the individual specs and benefits. But I realize that one ofthe main benefits of Java EE 6 is the overall picture. Developers can focuson the real and area-specific problems in their application, and if theirproject is well-written, a Java EE 6 Application Server will allow theapplication to scale well, to be transactional, to handle persistence,…
I don’t have numbers. But from what I hear at JavaOne and read online, theadoption of Java EE 6 is going very well and much faster than with theprevious version of the Java Enterprise specification. Glassfish sets thepace, and the majority of the other application servers is following.
Java EE 6 contains the infrastructure that is needed for a large numberof todays business applications. In early days, every business applicationhad to provide its own infrastructure (database coupling, messaging system,transactional logic,…). The core functionality of the application gotoften interwoven with the infrastructure.
Previous versions of the Java Enterprise specifications also providedthe infrastructure needed to run enterprise applications, but due to itscomplex nature, developers and deployers needed to be experts in theinfrastructure area themselves. The EJB 2.x Entity Bean model, for example,did a lot of work that was shielded from the developer, but the configurationto get it working well was still very complex. In order to be able to usethe functionality provided by the old application servers, you almostneeded to understand everything that was supposed to be hidden.
With Java EE6, this is no longer the case. The application server providesthe infrastructure that the application can rely upon. If you writeyour business application in a clever way, you don’t have to do lots oftasks that are related to the environment/context and you can concentrateon your business logic.
Moreover, if you try to do non-functional stuff,you might get in trouble. I’ve seen problems in many Enterprise projectsthat were due to an own implementation of transactions or thread pooling— reasonably, the developers of enterprise applications are mainlyexperts in a specific field.
The different implementations of the Java EE 6 specification try to competewith each other by providing the best possible implementations. Databaseconnection pooling has been implemented over and over by individualdevelopers, and I still see it in lots of applications. But if you wantit to be scalable and performant, you better rely on what the experts in thisfield already did for you. You don’t develop a “scaling application”.You develop an application that can be scaled on the right infrastructure— i.e. the one that is provided by a Java EE 6 implementation.