Java EE 7 specification (JSR 342) includes support for cloud computing to help developers build applications that are portable across Java EE PaaS platforms. It will provide the API for developing PaaS based applications as well as the support for multi-tenancy, capacity on demand, and auto-provisioning of cloud services. InfoQ spoke with Anil Gaur, Vice President of Software Development at Oracle, about cloud computing support in Java EE 7, project road map and timeline, cloud API in Java EE 7, and cloud development and deployment tools.
InfoQ: What are the main components of Java EE 7 specification?
Anil: The Java EE 7 specification, like previous releases, provides a platform that addresses the broad set of needs for enterprise applications. This includes a set of programming models, APIs, and frameworks. Each of them is useful and important in their respective domains. For example, the Java Persistence API provides Object-to-Relational Mapping (ORM); Java Server Faces (JSF) is a rich component-based Web Application Framework; and JMS provides Enterprise Messaging. Others are more cross-cutting, such as Bean Validation and Contexts and Dependency Injection (CDI). All of these great components are tightly integrated within the Java Platform Specification, which defines a common set of deployment and runtime contracts that provide a productive and seamless enterprise application development experience. In Java EE 7, we are planning on introducing some great new components like JSON (JSR 353), WebSockets (JSR 356), Batch (JSR 352), State Management (JSR 350), jCache (JSR 107), and the Concurrency Utilities for Java EE (JSR 236). When you put it all together, you can clearly see that developers no longer need to rely on proprietary frameworks to be productive and build top-notch enterprise applications.
InfoQ: At JavaOne 2011 Conference Oracle team talked about the Cloud Computing support in Java EE 7 specification. Can you talk more about what is the extent of Cloud support in this version?
Anil: One of the great architectural constructs that Java EE introduced was the abstraction of the Java EE container. The container abstraction allows us to decouple the runtime environment from the services that an application depends on. The next logical step is to make Java EE a service itself and leverage application metadata, deployment infrastructure, and container services to simplify provisioning and runtime management of cloud-enabled applications. Specifically, in Java EE 7, we are aiming to provide formalization of the Java EE 7 service constructs so that users can build applications that are portable across Java EE PaaS platforms.
InfoQ: What is the road map and target timeline for Java EE 7?
Anil: We are planning to deliver the final release of Java EE 7 in late Q1, early Q2, 2013. Early drafts of the various components specs have already started to be published, with more coming soon. Most specs should be at the Public Review stage by this summer. This will be the most transparent Java EE release to date. All Oracle led JSRs will be developed in the open, and we are encouraging developers to follow the progress of the specs and provide input along the way. A great way to get started is to visit the Java EE spec website for more information on how to get involved with the Java EE 7 community.
InfoQ: Can you talk about the PaaS Infrastructure and Java EE Application Level Services that are part of the Java EE 7 cloud spec?
Anil: The Java EE product vendor and cloud provider will be responsible for the infrastructure. The user/customer will simply see a cloud service to which Java EE applications can be deployed and run without needing to install and operate the underlying hardware and software. The application will describe what additional services it needs to run, such as a database service or a messaging service, and the Java EE 7 product running in the cloud will automatically provision those services for the application.
InfoQ: Will there be API support for cloud service management tasks like server instance startup, shutdown, and monitoring capabilities available via the cloud API in Java EE 7?
Anil: We are designing APIs and contracts that enable users to move beyond thinking about individual server instances and their lifecycle, and start thinking in terms of services and SLAs. While there will undoubtedly be a need for users to monitor applications, the lifecycle management of application servers, database servers, and other aspects of the cloud infrastructure will be the responsibility of the cloud provider.
InfoQ: What kind of enhancements will be made to the existing specifications in Java EE platform such as JPA, Servlets, EJB, and Web Services to meet the JavaEE 7 cloud specification?
Anil: Most of the Java EE specifications are already well suited to the service environment of the cloud. We have lots of exciting new features coming in the individual JSRs. For example, JPA 2.1 will include support for tenant isolation, many new mapping and query functionality enhancements (including support for stored procedures), and unsynchronized persistence contexts. Servlet 3.1 will leverage NIO 2 from Java SE 7 and provide the necessary semantics for negotiating Web Socket connections. People are also very excited about the JMS 2.0 work; the community has been putting a lot of effort into enhancing JMS to make it even easier than ever to build messaging driven applications. While incremental enhancements are being made to existing JSRs, Java EE 7 will add specifications as well.
Additionally, we are planning on providing metadata that applications can use to describe their needs for other services in the cloud.
InfoQ: What about support for other API like REST and JAX-RS 2.0?
Anil: We have seen lots of adoption of REST style applications using JAX-RS. In JAX-RS 2.0, we are going to provide a standard client API and Hypermedia support among other things. Another cool addition will be the ability to leverage the Bean Validation JSR in POJOs that are exposed as REST services via JAX-RS, making JAX-RS even more productive.
InfoQ: How will the new web standards like HTML 5 and Web Sockets be integrated into the specification?
Anil: We have a lot of investments going on in this space. At JavaOne 2011 we announced project Avatar, which represents an umbrella of projects targeted at ensuring Java remains the most productive environment for building HTML 5 applications. This work is well under way. We have started work on a Web Socket JSR to define the programming model for Web Sockets within the Java EE platform. Additionally, as mentioned earlier, we have also started to address how this will impact existing APIs like the Servlet API.
InfoQ: Security aspects are even more critical in the Cloud hosted solutions. What is the support in the Java EE 7 spec for security in the areas of authentication, access control, auditing and monitoring?
Anil: Java EE has always provided a very strong security model, but there are some unique security challenges that arise when deploying cloud-enabled applications. JSR-196 went a long way in terms of providing some pluggability, but if time permits we would like to make it easier for folks to deal with key management within the Java EE platform when deploying within a PaaS environment. We're also considering what additional security metadata should be provided with an application when deployed to a cloud environment.
InfoQ: Where does the modularity or OSGi fit in this new model in terms of provisioning and de-provisioning of the applications on the cloud as well as managing the dependencies between the applications?
Anil: Modularity is obviously an important part of any service-oriented environment and one can imagine OSGi or a similar modularity solution playing a role in the implementation of a Java EE 7 container. This is especially true when it comes to the provisioning subsystem for distributing and provisioning Java libraries. As part of Java SE 8, we are planning for project Jigsaw to provide the modularity solution for the Java platform, and we expect that in the Java EE 8 release the community will define how users can leverage that modularity in Java EE applications and containers.
InfoQ: What will be the tool support in terms of coding, testing (developer and integration) and deployment of cloud applications?
Anil: One of the problems for tools providers right now is the lack of common development model for PaaS systems. Java EE brings some much-needed programming standards to the cloud and will give tools a standard to target. As the cloud deployment model becomes more pervasive in the enterprise, we think you will see lots more tools development from Java EE licensees and Oracle. Java EE 7 should enable tools and runtime vendors to provide full development lifecycle tooling and supporting infrastructure all the way from source level debugging to application provisioning and promotion from test to preproduction and production systems.
InfoQ: Thanks for your time Anil.
About the Interviewee
Anil Gaur currently works as Vice President, Software Development at Oracle. He is responsible for the Java EE and GlassFish development teams. He also managed the delivery of Java EE 6 Platform and SDK.