Thursday Aug 30, 2012

Java EE 7 Roadmap

The Java EE 6 Platform, released in December 2009, has seen great uptake from the community with its POJO-based programming model, lightweight Web Profile, and extension points. There are now 13 Java EE 6 compliant appserver implementations today!

When we announced the Java EE 7 JSR back in early 2011, our plans were that we would release it by Q4 2012. This target date was slightly over three years after the release of Java EE 6, but at the same time it meant that we had less than two years to complete a fairly comprehensive agenda — to continue to invest in significant enhancements in simplification, usability, and functionality in updated versions of the JSRs that are currently part of the platform; to introduce new JSRs that reflect emerging needs in the community; and to add support for use in cloud environments. We have since announced a minor adjustment in our dates (to the spring of 2013) in order to accommodate the inclusion of JSRs of importance to the community, such as Web Sockets and JSON-P.

At this point, however, we have to make a choice.

Despite our best intentions, our progress has been slow on the cloud side of our agenda. Partially this has been due to a lack of maturity in the space for provisioning, multi-tenancy, elasticity, and the deployment of applications in the cloud. And partially it is due to our conservative approach in trying to get things "right" in view of limited industry experience in the cloud area when we started this work. Because of this, we believe that providing solid support for standardized PaaS-based programming and multi-tenancy would delay the release of Java EE 7 until the spring of 2014 — that is, two years from now and over a year behind schedule. In our opinion, that is way too long.

We have therefore proposed to the Java EE 7 Expert Group that we adjust our course of action — namely, stick to our current target release dates, and defer the remaining aspects of our agenda for PaaS enablement and multi-tenancy support to Java EE 8.

Of course, we continue to believe that Java EE is well-suited for use in the cloud, although such use might not be quite ready for full standardization. Even today, without Java EE 7, Java EE vendors such as Oracle, Red Hat, IBM, and CloudBees have begun to offer the ability to run Java EE applications in the cloud.

Deferring the remaining cloud-oriented aspects of our agenda has several important advantages:

  • It allows Java EE Platform vendors to gain more experience with their implementations in this area and thus helps us avoid risks entailed by trying to standardize prematurely in an emerging area.
  • It means that the community won't need to wait longer for those features that are ready at the cost of those features that need more time.
  • Because we have already laid some of the infrastructure for cloud support in Java EE 7, including resource definition metadata, improved security configuration, JPA schema generation, etc., it will allow us to expedite a Java EE 8 release. We therefore plan to target the Java EE 8 Platform release for the spring of 2015.

This shift in the scope of Java EE 7 allows us to better retain our focus on enhancements in simplification and usability and to deliver on schedule those features that have been most requested by developers. These include the support for HTML 5 in the form of Web Sockets and JSON-P; the simplified JMS 2.0 APIs; improved Managed Bean alignment, including transactional interceptors; the JAX-RS 2.0 client API; support for method-level validation; a much more comprehensive expression language; and more.

We feel strongly that this is the right thing to do, and we hope that you will support us in this proposed direction.

Wednesday Aug 29, 2012

GlassFish Server 3.1.2.2 Maven Coordinates

GlassFish Server 3.1.2.2 was released a few weeks ago. This micro release fixed a couple of important bugfixes - one in JAX-WS (JAX-WS-1059) and another one related to JK listener with Apache + mod_ajp_proxy (GLASSFISH-18446). This release is already integrated in NetBeans 7.2 and you can download separately from here.

Maven coordinates for this build are now also described on the download page. The following fragment in your pom.xml will allow you to invoke embedded-glassfish:run, embedded-glassfish:deploy, and other similar commands.

<dependency>
    <groupId>
org.glassfish.embedded</groupId>
    <artifactId>maven-embedded-glassfish-plugin</artifactId>
    <version>3.1.2.2</version>
</dependency>

GlassFish Embedded Server Guide provide more details about setup etc.

Similarly full platform or Web profile implementation of GlassFish can be included as a single JAR using

<dependency>
    <groupId>
org.glassfish.main.extras</groupId>
    <artifactId>glassfish-embedded-web</artifactId>
    <version>3.1.2.2</version>
</dependency>

Of course, you need to replace "glassfish-embedded-web" with "glassfish-embedded-all" to get complete platform. 

The download page provide more details different bundles and complete maven coordinates. Or you can get started with the simple zip bundle as well.