Saturday, February 11, 2012

JEE7: Looking ahead to a new era

Get educated about Java EE 7 JSRs.
With the release of Java EE 7 scheduled for the second half of 2012, projected JSRs are all up and running. The Java EE 7 release, which will reflect the evolving needs of the industry as it moves into the cloud, is date driven: anything not ready will be deferred to Java EE 8.

Here is an update and summary of the key features of different specifications in the Java EE 7 platform.


1.     Java EE 7 Specification (JSR-342)
§  Main theme: to easily run applications on private or public clouds
§  The platform will define an application metadata descriptor to describe the PaaS execution environment such as multitenancy, resources sharing, quality of service, and dependencies between applications.
§  Embrace latest standards like HTML5, WebSocket, and JSON and have a standards-based API for each one of them.
§  Remove inconsistencies between Managed Beans, EJBs, Servlets, JSF, CDI, and JAX-RS.
§  Possible inclusion of JAX-RS 2.0 in the Web Profile, revised JMS 2.0 API.
§  Technology refresh for several existing technologies and possible inclusion of Concurrency Utilities for Java EE (JSR-236) and JCache (JSR-107).
§  Status:
·         Approved by the JCP.
·         Spec leads: Linda DeMichiel, Bill Shannon (Oracle).
·         Project page
·         Mailing list archive, jsr342-expert@javaee-spec.java.net , users@javaeespec.java.net

2.     Java Persistence 2.1 (JSR-338)
§  Support for multitenancy.
§  Support for stored procedures and vendor function.
§  Update and Delete Criteria queries.
§  Support for schema generation.
§  Persistence Context synchronization.
§  CDI injection into listeners.
§  Status:
·         Approved by the JCP
·         Spec lead: Linda DeMichiel (Oracle)
·         Project page
·         Mailing list archive, jsr338-experts@jpa-spec.java.net , users@jpa-sepc.java.net

3.     JAX-RS 2.0: The Java API for RESTful Web Services (JSR-339)
§  Client API—low level using builder pattern and possibly a higher level on top of that.
§  Hypermedia—easily create and process links associated with resources.
§  Form or Query parameter validation using Bean validation.
§  Closer integration with @Inject.
§  Server-side asynchronous request processing.
§  Server-side content negotiation using “qs”.
§  Status:
·         Approved by the JCP, Early Draft available, Draft Javadocs
·         Spec leads: Santiago Pericas- Geersten, Marek Potociar (Oracle)
·         Project page

4.     Java Servlet 3.1 Specification(JSR-340)
§  Optimize the PaaS model for Web applications
§  Multitenancy for security, session, and resources
§  Asynchronous IO based on NIO2
§  Simplified asynchronous Servlets
§  Utilize Java EE concurrency utilities
§  Enable support for WebSockets
§  Status:
·         Approved by the JCP
·         Spec leads: Shing-Wai Chan, Rajiv Mordani (Oracle)
·         Project page

5.     Expression Language 3.0 (JSR-341)
§  Separate ELContext into parsing and evaluation contexts.
§  Customizable EL coercion rules.
§  Reference static methods and members directly in EL expressions.
§  Adding operators like equality, string concatenation, and size of.
§  Integration with CDI such as generating events before/during/after the expressions are evaluated.
§  Status:
·         Approved by the JCP
·         Spec lead: Kin-man Chung (Oracle)
·         Project page
·         Mailing list archive, jsr-341-experts@el-spec.java.net , users@el-spec.java.net

6.     Java Message Service 2.0 (JSR-343)
§  Ease of development—changes to the JMS programming model to make the application development simpler and easier.
§  Remove/clarify ambiguities in the existing specification.
§   Integration with CDI.
§   Clarification of the relationship between JMS and other Java EE specs.
§   A new mandatory API to allow any JMS provider to be integrated with any Java EE container.
§   Multitenancy and other cloud-related features from the platform.
§   Status:
·         Approved by the JCP
·         Spec lead: Nigel Deakin (Oracle)
·         Project page
·         Mailing list archive, jsr-343-experts@jms-spec.java.net , users@jms-spec.java.net

7.     JavaServer Faces 2.2 (JSR-344)
§  Ease of development—making configuration options dynamic, make cc:interface in composite components optional, shorthand URLs for Facelet tag libraries, integration with CDI, OSGi support for JSF artifacts.
§  Support implementation of Portlet 2.0 Bridge (JSR-329).
§  Support for HTML5 features like HTML5 Forms, Metadata, Heading and Section content model.
§  Flow management, listener for page navigation events, and new components like FileUpload and BackButton.
§  Status:
·         Approved by the JCP, Early Draft available
·         Spec lead: Ed Burns (Oracle)
·         Project page

8.     Enterprise JavaBeans 3.2 (JSR-345)
§  Enhancements to the EJB architecture to enable PaaS, such as multitenancy.
§  Factorization of container-managed transactions to use outside EJB.
§  Further use of annotations.
§  Alignment and integration with other specifications in the platform.
§  Status:
·         Approved by the JCP
·         Spec lead: Marina Vatkina (Oracle)
·         Project page
·         Mailing list archive, jsr-345-experts@ejb-spec.java.net , users@ejb-spec.java.net

9.     Contexts and Dependency Injection for Java EE 1.1 (JSR-346)
§  Global ordering of interceptors and decorators.
§  API for managing built-in contexts.
§  Embedded mode to allow startup outside Java EE container.
§  Declarative control over which packages/beans are scanned in an archive.
§  Injection for static members such as loggers.
§  Send Servlet events as CDI events.
§  Status:
·         Approved by the JCP, Early Draft available
·         Spec lead: Pete Muir (RedHat)
·         Project page
·         Mailing list archive, twitter feed

10.   Bean Validation 1.1 (JSR-349)
§  Integration with other Java EE specs.
§  JAX-RS: Validate parameters and return values on HTTP calls.
§  JAXB: Convert constraints into XML schema descriptor.
§  Method level validation.
§  Apply constraints on group collection.
§  Extend the model to support AND and OR style composition.
§  Status:
·         Approved by the JCP.
·         Spec lead: Emmanuel Bernard (RedHat).
·         Project page.
·         Mailing list archive.

11.   JCACHE: Java Temporary Caching API (JSR-107)
§  API and semantics for temporary, in-memory caching of Java objects, including object creation, shared access, spooling, invalidation, and consistency across JVMs.
§  Package: javax.cache.
§  Status:
·         Approved by the JCP
·         Spec leads: Yannis Cosmadopoulos (Oracle), Cameron Purdy (Oracle), and Gregory Luck (Software AG)
·         Project page
·         Mailing list archive.

12.   Java State Management (JSR-350)
§  API that can be used by applications and Java EE containers to offload the responsibility of statement management
§  To third-party providers with different QoS characteristics
§  Java SE–based callers can access the state data by querying the state providers
§  Providers with different QoS can be added, and API callers can query to meet their criteria
§  Package: javax.state and javax.state.provider
§  Status:
·         Approved by the JCP
·         Spec lead: Mitch Upton (Oracle)
·         Project page
·         Mailing list archive, jsr-350-experts@java-state-management.java.net.

13.   Batch Applications for the Java Platform (JSR-352)
§  Programming model for batch applications and a runtime for scheduling and executing jobs
§  Defines Batch Job, Batch Job Step, Batch Application, Batch Executor, and Batch Job Manager for the standard programming model
§  Package: javax.batch
§  Status:
·         Approved by the JCP
·         Spec lead: Chris Vignola (IBM)
·         Project page
·         Mailing list archive, issues@jbatch.java.net

14.   Concurrency Utilities for Java EE (JSR-236)
§  This JSR has been ongoing for several years and should be revived and completed in time for Java EE 7.
§  Provides a clean, simple, independent API by building on JSR-166, making it appropriate for use within any Java EE container
§  Package: javax.util.concurrent
§  Status:
·         Approved by the JCP
·         Spec leads: Anthony Lai, Naresh Revanuru (Oracle)
·         Project page: TBD
·         Mailing list archive: TBD

15.   Java API for JSON Processing (JSR-353)
§  The Java API for JSON Processing JSR has now been filed as JSR-353.
§  Status:
                 ·          Approved by the JCP
                 ·          Spec lead: Jitendra Kotamraju (Oracle)
                 ·          Project page
                 ·          Mailing list archive

The expert groups (EGs) for most of the JSRs have already been formed, but you can still participate by joining the publicly visible aliases and reviewing the drafts. The Oracle-led JSRs are all running transparently with dedicated projects on Java.net enabling, for instance, public access to EG discussions and thus anticipating the requirements set by the newly voted JCP 2.8 rules.

All the JSRs following JCP 2.8 are run more transparently. Here are some JCP 2.8 highlights:
§  Names of the EG members are publicly visible.
§  EG business is reported on a publicly readable alias.
§  The schedule is public, current, and updated regularly.
§  The public can read/write to a wiki to discuss the status so far.
§  There is a discussion board on jcp.org.
§  There is a public read-only issue tracker.

All of this will be integrated in GlassFish—the reference implementation for Java EE 7.


References:
Java Magazine 2012-1-2 by Arun Gubta

3 comments :

  1. Hi - great article. Could you send me a mail to james@dzone.com to discuss this further?
    Thanks
    James

    ReplyDelete