Driving higher densities: Optimizing virtual Java runtimes in the cloud

Cloud computing introduces new layers of abstraction that create challenges for optimizing virtual Java runtimes. But IBM is finding new ways of driving higher densities on their servers.

TheServerSide.com recently had the opportunity to speak with John Duimovich, a Distinguished Engineer with IBM, who also happens to be IBM's Java CTO and a keynote speaker at OracleWorld 2013. Seeing that it has now been over three years since Oracle beat out IBM in a bid to acquire Sun Microsystems and Sun's Java platform, the first thing we wanted to know from Duimovich was his insights on how the enterprise computing landscape would have changed if IBM had won the battle to become stewards of the Java platform instead of Oracle. And like any good IBM exec, Duimovich dodged the questions with grace and determination. "That's a fairly loaded question. If you catch me in a bar without a media person present, then maybe I'd talk about it. Speculation is fun, but I'd rather talk about the topics we will be covering at JavaOne."

There's a whole bunch of work being done to make Java more efficient by having applications use fewer resources. 

John Duimovich, IBM Distinguished Engineer

So what exactly will be John's focus at this year's JavaOne? Working the Sunday keynote at the Moscone center, Duimovich's talk is entitled Java Flies in Blue Skies and Open Clouds, with the reference to Blue Skies being a not-so-subtle inference to the fact that Duimovich will be elucidating the crowd about IBM's vision for the future of enterprise computing with Java. The keynote will cover emerging Platform-as-a-Service (Paas) offerings and growing cloud offerings, but don't expect the typical marketing fluff from John. Duimovich is a technical guy who seems the most at ease when digging deep into the technology. Given the fact that so many enterprises are hosting their server based software in either public, private, or hybrid based clouds, we asked Duimovich about the new challenges that arise when trying to optimize Java runtimes in  hypervisor based environments. After all, how do you know what to optimize when all of these new layers of abstraction have eliminated that direct link between the server based software that is running, and the hardware that is running it? "This is a topic that is near and dear to my heart," said Duimovich. "We call it the layer of liars," although John does admit that this is a rather crass way to describe the stack of abstraction that makes cloud based computing work.

"First, there is real hardware. Then there is a hypervisor between you and the hardware. Then there is an operating system that is abstracting even more. And then there is the JVM that is abstracting one more time," said Duimovich. "There is a lot of abstraction going on, and this can make it difficult to get the maximum level of performance because the abstraction hides many of the optimization opportunities." Off the cuff, Duimovich notes three important things IBM is doing to optimize Java Virtual Machines (JVMs) running within virtualized environments.

1. Driving higher density per server

When a multitude of JVMs are running on a shared server, there are responsibilities that get duplicated over and over again. By sharing everything from cached classes to just-in-time (JIT) compiler code, memory use can be reduced by up to 20%, startup times can be improved by up to 30%, and more virtual machines can run on a single piece of hardware.

2. New levels of cooperation between running JVMs

When a JVM is initially configured, it's allocated a certain amount of memory at startup, and the JVM addresses all of that memory, regardless of whether it is needed or not. But when multiple JVMs are running on the same server, IBM is making it possible to shift memory from one JVM to another. Perhaps one JVM is idle while another one is working overtime? By sharing memory and other resources across JVMs, in ways that have not been possible in the past, cloud based servers are making it possible to host greater workloads while consuming fewer resources.

We call it the layered lair of liars. 

John Duimovich, IBM Distinguished Engineer

3. Simply use less resources

"There's a whole bunch of work being done to make Java more efficient by having applications use fewer resources," says Duimovich. Of course, readers of TheServerSide are likely snickering to themselves as they hear spokespeople for the company that brought the world the behemoth known as WebSphere talking about using less resources, but the fact is, IBM has made great strides in terms of reducing the footprint of their  server based software. The WebSphere Liberty profile is extremely lightweight, helping software developers to package and deploy applications that very efficiently include nothing more than the core components than are needed to execute properly at runtime.

It is genuinely interesting to witness the various innovations vendors such as IBM are coming up with to optimize the various layers of the hardware and software stack, while at the same time getting those optimized layers to work well with each other in a highly abstracted, cloud-based environment. IBM and Duimovich are clearly leaders in this field, and if you're interested in learning more about how this all leads into IBM's vision for the future of enterprise computing, be sure to tune in for Duimovich's JavaOne Keynote.

How do you optimize your Java runtime for the cloud. Let us know.

Dig Deeper on Java performance tuning

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.