Skip to main content

Java EE 6 Platform Public Review

Posted by robc on January 23, 2009 at 11:53 AM PST

It is my pleasure to announce that yesterday we published on the JCP web site the public draft of the Java EE 6 Platform specification. The review will last 30 days, ending on February 23. The email address for feedback hasn't changed: it's javaee-spec-feedback<at>sun.com.

One JSR, Two Specifications

The first surprise when you download the specification is that there are two documents: in addition to the platform specification, we are publishing for the first time the Web Profile specification.

The "meat" of the specification is the list of component technologies, which I'll get to in a second. First, I'd like to draw your attention to chapter WP.1. Since the Web Profile is the first profile in the history of the Java EE platform, we thought of including some background material. In addition to a description of the class of applications that the profile targets, we also included a fairly general discussion on how to determine which requirements are applicable to a given profile. In general, this is not a trivial operation, since there are many sources of requirements and many allowed combinations of technologies. We hope that definers, implementors and users of present and future profiles will all benefit from these clarifications. Before diving into this material, please make sure to read chapter EE.9 of the platform spec, which contains the general rules that all profiles must follow.

Web Profile

After much deliberation, the platform expert group chose to go with a mid-range version of the Web Profile, close to option B in my earlier writeup.

The required technologies are:

Servlet 3.0
JSP 2.2
EL 1.2
Debugging support for other languages (JSR-45) 1.0
JSTL 1.2
JSF 2.0
JSR-250 1.1

EJB 3.1 Lite
JTA 1.1
JPA 2.0

You may notice that some of the version numbers don't match the latest published API (e.g. EL 1.2). That's because we plan on making minor changes to the corresponding technology via a maintenance review. I'll be providing more details as they become available.

What about JAX-RS?

JAX-RS is not a required component of the Web Profile. The expert group concluded that it is too early to mandate the inclusion of JAX-RS, given that not every web application out there is going to expose a web API to its users. As the popularity of JAX-RS grows, we may include it in a future version of the Web Profile. In the meantime, JAX-RS will be fully pluggable in all Servlet 3.0 containers, hence in all Web Profile products. And of course JAX-RS is a required component of the full Java EE 6 Platform. (For a a description of the pluggability mechanism, please refer to chapter 8 of the servlet spec. The servlet expert group is still working on some of the details, which will appear in the upcoming proposed final draft.)

What about Web Beans?

Web Beans is not listed as a required component either in the Web Profile or the full platform. On the other hand, it is mentioned in section EE.6.29 as a component under consideration for inclusion. The expert group would like to solicit feedback from the community on this subject.

Observant readers will also have noticed that the Web Beans specification, currently in public draft, was extensively updated just yesterday. Gavin King's blog has all the details of the changes, which were triggered by feedback mostly coming from the JSR-316 expert group. Among the biggest changes, the term "Web Beans" itself has disappeared from the spec. While this may come as a shock to some, it's really a positive development, since it signifies the merging of the functionality that Web Beans provided with the established Java EE concepts of "containers" and "components". I believe that the end result is a more usable, better integrated, easier to learn "Web Beans", now providing contextual support and dependency injection for the whole Java EE platform.

What about Bean Validation (JSR-303)?

Even more observant readers will have noticed that JSR-303 is in public review, yet it is not listed as a Java EE 6 component JSR. This is simply a matter of timing; the platform expert group just started discussing the inclusion of JSR-303, so no decision had been reached at the time the public draft of the platform specification was sent to the (virtual) presses. I should point out that the JSR-303 expert group, lead by Emmanuel Bernard, has done a lot of work to address the needs of JPA and JSF in the area of validation, so I'm confident that JSR-303 will be well received by the community.

What About the Schedule? Aren't You Late?

Yes, we are a little behind schedule, thanks for noticing. As always, we face a trade-off between pushing stuff out aggressively and doing the right thing, in this case aligning the specs better and making sure Web Beans and Bean Validation fit well with the overall model. In my opinion, the choice is a no-brainer, given that developers have to live with a version of the platform for a long time. With the release of the public draft of the platform spec, every JSR scheduled for inclusion in Java EE 6 is now public, so we are getting close to the finishing line.

Please keep the feedback coming and let us know how we can improve your development experience!

Related Topics >>

Comments

+1 for JSR-299 +1 for JSR-303 Thanks.

Neither JSR-236 nor JSR-237 are part of Java EE 6. By the way, JSR-237 was withdrawn.

Roberto, Are JSR-236 Timer for Application Servers JSR-237 Work Manager for Application Servers part of the spec? They appear in http://jcp.org/en/jsr/detail?id=316, but not in the downloadable version of spec. Thanks, Devadasan

+1 for JSR-299 +1 for JSR-303 These JSR's provide the linking pin between JPA and JSF that has been missing for so long.

Will JDCI be included in a different profile other than the Web profile? Will Seam be required to use JCDI?

+1 JSR-299. As a Seam 2 developer, the contextual component model with bijection has made for very interesting and easier dev/test cycles with AJAX, etc. The lack of conversation context support and bijection in EE 6 would be a failure in my belief. Please consider and include JSF-299.

+1 JSR-299 +1 JSR-303 +1 JAX-RS +1 JavaMail rdelaplante's arguments bring it to the point: "The WebBeans JSR was created out of necessity". thx.

Sorry, please ignore my post. I was misled by one of my colleagues ;) S. Fermigier, Nuxeo

Roberto, what's the proper way to complain about, for instance, JAX-RS and JSR299 being left out ? I guess a comment in a blog doesn't carry the same weight as a proper issue filed in the JCP. S. Fermigier, Nuxeo

+1 on JavaMail in web profile. Every web app I've written and used uses JavaMail.

Great work Roberto et al. I think `webbeans.dead` will be very nice to have as Java Context and Injection Framework thank you.

Is JavaMail a part of the web profile? I really hope it is--I seem to be using it for just about every web app that I write (mostly for the "forgot your password?" functionality)

JSR-299 (formerly Web Beans) fills some important gaps, so please include it.

+1 on JAX-RS in Web Profile

I'm really looking forward for EE 6, but I must agree rdelaplante. Bean validation and Java Contexts & DI (renamed Web Beans) are the must for web and full EE 6 profile. It doesn't make sense to withdraw them. My opinion is also that JAX-RS is the crucial part of new way of writing web application in Java EE and it is also nonsense to exclude it. Maybe you should think about dividing Web profile on Lite and Standard ;)

+1 JAX-RS +1 JSR-299 +1 JSR-303 +1 JavaMail Thanks.