Now that Java 7 SE (Standard Edition) has officially been released, Oracle and members of the JCP (Java Community Process) have started mulling over what features to include in the next version of the programming language, Java SE 8. On the agenda for this new release: engineering Java for the cloud.
"Java 8 is supposed to set the scene for the cloud, for a wider deployment arena," said Mark Little, senior director of engineering for Red Hat's middleware business, as well as Red Hat's primary liaison for the JCP. Oracle left out many of the advanced features planned for Java 7 in order not to further delay the release, he noted. Those releases may very well be included in Java 8.
At least two of those features will prove instrumental in making the next version of Java ready for wide-scale cloud deployment, Little said. One is multitenancy, or the ability for the Java Virtual Machine (JVM) to safely run multiple applications. The other is modularity, or a reorganization of the JDK (Java Development Kit) into a set of cleanly defined though interdependent modules.
"Modularity and true multitenancy within the JVM will be critical for 8 if Java will be dominant in the cloud," Little said.
Modularity is what Red Hat would most like to see in Java 8, Little said. Modularity would cut the size of most Java deployments, because not all deployments need all of Java's core libraries. It would also help developers more easily interact with Java, allowing them to only use the parts they need rather than grapple with the entire codebase.
Modularity would also help with a developer problem that Little describes as "classloader hell."
Developers experience classloader hell when a Java program accesses multiple JARs (Java Archives), or collections of commonly used routines. An app may use a class from one JAR when it actually needs a different version of that class that resides in another JAR. Or it may use a JAR used by another program, and once that other program terminates, the JAR is removed, causing the first application to stop working.
"In order to have modules swapped in and out at will without screwing up the whole environment, you need to have support in the JVM as well," Little said.
One effort, Project Jigsaw, has been working on this goal. When Sun Microsystems controlled Java (Oracle purchased Sun in 2010), that company's engineers preferred Jigsaw over another approach, OSGi (Open Services Gateway initiative), overseen by the OSGI initiative.
Project Jigsaw was slated for Java 7, though it got pulled in 2010 in order to ship Java by 2011, Little said. Nonetheless, either the work from Jigsaw or OSGi should be folded into Java 8, Little predicted. "There will be some modularity present in Java SE 8," he said.
In addition to modularity, Java 8 may also feature multitenancy, or the ability to safely run multiple applications from one JVM.
Such a feature would be essential for Java to be used in cloud computing, where multiple parties may share the same infrastructure.