Enterprise Java

Java EE 7 Public Draft was published. I demand Java EE Light Profile!

On December 20, 2012 a public draft of Java EE 7 has been uploaded. From the first sight, the new spec is rather an improvement of the subsequent specs in Java EE 6. For instance, I really like the Web Profile idea. But is is a shame that it wasn’t a part of Java EE 6 Web Profile.

The Web Profile is targeted at developers of modern web applications IMO, most of the modern web applications make use of REST. Or at least this is my perception. In Rails world, AFAIK, violating REST principle is a subject for brutal prosecution by the colleagues. Luckily Java EE 7 fixes that mistake and JAX-RS specification is now a part of Web Profile.

Targeting “modern” web applications then implies offering a reasonably complete stack, composed of standard APIs, and capable out-of-the-box of addressing the needs of a large class of web applications.

OK, now you can really develop ‘modern’ web apps with Web Profile, but…

In terms of completeness, the Web Profile offers a complete stack, with technologies addressing presentation and state management. (JavaServer Faces, JavaServer Pages), core web container funtionality (Servlet), business logic (Enterprise JavaBeans Lite), transactions (Java Transaction API), persistence (Java Persistence API) and more.

Sounds like redundancy to me. For instance, why would you need EJBs there? If CDI supported interceptors properly there wouldn’t be a need for EJBs in that sense. Or, JSF? Well, I’m just not a fan of that.

What I’m trying to say here is that since for compatibility reasons there wouldn’t be possible to drop specs from Web Profile, maybe it is now time to create a ‘Light Profile’? A minimalistic set of Java EE specs that would be sufficient for building modern web applications.

Of course the term is a bit foggy – what should we consider a modern web application. These days it is a combination of a REST backend and UI technologies such as HTML5 and JavaScript. My logic says that since Java EE doesn’t specify UI technology then the main specification that required is JAX-RS and the complementary specifications to support transactions (JTA/JTS), persistance (JPA), and dependency injection (CDI). Of course, there are some nice complementary specifications such as Bean Validation and Java API for JSON processing. But I would definitely drop JSF and EJBs for sure.

This would bring the containers like Tomcat and Jetty even closer to the spec and who knows maybe one day we will have a Java EE ‘Jetty Profile’, why not
 

Reference: Java EE 7 Public Draft was published. I demand Java EE Light Profile! from our JCG partner Anton Arhipov at the Code Impossible blog.

Anton Arhipov

Anton is JRebel Product Lead at ZeroTurnaround. Professional interests include programming laguages, middleware and tooling. Java enthusiast, vim fan, IntelliJ addict and JetBrains Academy member. He blogs at "Code Impossible" blog and speaks at Java conferences.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Tadas Šubonis
Tadas Šubonis
11 years ago

The main point of EJB (now) is to have transaction handling across multiple resources and endpoints (DB, Messaging other stuff). I doubt you would achieve that easily with CDI. If you are going to code your one interceptors that would provide transactions and their scoping, you would be almost reimplementing EJB. Just including it is way easier.

arhan
arhan
11 years ago
Reply to  Tadas Šubonis

Yes, EJBs bring some goodness also. However, iIf CDI could support interceptors, then you could achieve the transactional behavior just with CDI beans with no support from EJBs.

Back to top button