Spotlight on: Waratek, the Cloud VM for Java
Waratek have spent the last decade quietly working to bring virtualisation to Java. Now theyre ready to “do to the JVM what VMware did to operating systems”.
has a “big problem”, according to John Matthew Holt, CTO and
founder of Waratek. The shift towards increasing virtualisation and
cloud technologies has left it lagging behind competing JVM
languages, he says, and Java needs to be “significantly retooled,
or upgraded, as an architecture, as a language, and as a VM.”
He may have a point – after all, the introduction of cloud features into EE 7 seem likely to be pushed back a year to version 8 due to their complexity. Java is “not becoming cloud-enabled and cloud-ready quickly enough,” he says.
Holt’s solution is Waratek Cloud VM for Java, a new type of JVM able to provide “attributes like multi-tenancy, like elasticity, like utility computing and control”. However, he emphasises that Cloud VM for Java is more than just a stopgap while the official solution lags behind.
“We aim to do to the JVM what VMware did to operating systems, which actually is not multi-tenancy. Multi-tenancy is a side-effect of virtualisation, and so is elasticity. There are other features that virtualisation starts to provide that are not on any roadmap from any standards body in Java at all.”
He explains further: “the [Waratek Cloud VM] JVM can start one instance of this JVM, and the JVM can use this virtualisation engine to create very, very lightweight – what are called Java virtual containers – running within that JVM.”
The key to Cloud VM is the way that it allows multiple lightweight ‘Java virtual containers’ to be started in each JVM, says Holt. “A Java virtual container is a lot like a Linux container, or a hypervisor VM, in the way that it is a virtualised abstraction of the physical server underneath, and it’s a secure, isolated domain for the software running within.”
So within a single JVM, it’s possible to run 64 instances of RedHat JBoss servers, boasts Holt. Or, alternatively, a single JVM could host “28 Tomcats, 13 Jettys, one Glassfish and four [instances of] JBoss 7”.
This is achieved by reducing the “bloatware” traditionally associated with running multiple JVMs, each with their own concurrent garbage collectors and JIT compilers. Instead, virtual containers each take up only 400kb of memory, making it far more efficient.
These virtual containers are also elastic, able to configure memory allowances based on schedules; overall, Holt claims Cloud VM can provide “far higher hosting density for Java applications – by any measures, up to ten times higher”.
Cloud VM’s IaaS architecture
The company released their first public beta of Cloud VM in June
at the RedHat Summit (available to download from their
site). Holt said that feedback has been “very exciting, very
Waratek as an organisation has existed since 2002, but Holt describes its previous form as “principally a research project”, adding: “there were no customers, no prospect of customers. It was purely a think-tank.”
That said, saved versions of the Waratek website dating back to 2004 on the Wayback Machine speak of a “grid computing technology product for J2EE” called Replicode, which a press officer later told JAXenter was a development name for Cloud VM.
In 2009, he founded the modern incarnation of Waratek, now based in Dublin. “We saw Dublin, or Ireland, as the Silicon Valley of Western Europe,” says Holt. “Just a few blocks from here, we have the EMEA headquarters of Google, Facebook, Oracle, Yahoo!, Microsoft, Intel, IBM research laboratories. So Ireland is a bit of a hub of technical expertise.”
Since Java SE 7 was released after development of Cloud VM began, the team decided to focus on SE 6 certification for the first version for a solid grounding. “We’ll release the SE 7 enhancements with the certification test in the months ahead, more likely in the beginning of next year,” says Holt.
Besides that, future enhancements will include improvements to garbage collection and support for Libvirt, Red Hat’s virtualisation API. “Because our JVM behaves like a hypervisor for Java, we have developed our own driver for Libvirt,” says Holt. “So Libvirt can now attach to our JVM and treat our JVM as if it was a Java hypervisor – starting and stopping virtual containers within the JVM, just as if they were hypervisor VMs within hypervisor.”
It may have been a long time coming, but with the release of a beta, Waratek Cloud VM for Java is finally tangible. Now, the company has to prove it can deliver on its promises of bringing virtualisation to Java.