The Evolution of Java Caching: An Interview with Miko Matsumura

The fall elections for 13 open seats on the Java Community Process (JCP) Executive Committee (EC) were held in October, and some new members have joined the august body charged with guiding the evolution of Java.

Among them is Hazelcast, the Palo Alto, Calif.-based provider of an open-source, In-Memory Data Grid (IMDG) solution by the same name. The company has strong ties to the JCP; Hazelcast CEO Greg Luck, who will represent his company on the EC, is the co-spec lead on JSR-107, the request for a Java Temporary Caching API, better known as JCache, and the longest running spec request in history. (The JSR-107 Expert Group was formed in 2001, and it was finally approved in March of this year.)

Before the annual Silicon Valley Turkey Day Shutdown (Christmas Shutdown to follow soon, and then there's sort of break in the Spring -- sometimes working here really is like being in college), I talked with Miko Matsumura, Hazelcast's VP of Developer Relations. Miko served as Chief Java Evangelist at Sun Microsystems in the late 90s, so he's been watching the evolution of Java and the community around it since the JCP was formed.

He explained why the final approval of JSR-107 was such a big deal, and how the definition of "caching" has begun to change.

"Java hasn't really had a clustered memory semantic," Matsumura said. "When people think about the Java Virtual Machine, they tend to think about a single machine. Back in the olden days of Java, it was like, it's a Windows machine or it's a Mac or it's a Linux box. There was this mindset that the 'machine' was this monolithic, single operating system. But over time, that construct has become much more of a programmatic abstraction. When people deploy Java applications, it's only a machine in a conceptual sense. Developers think of the Java machine as a machine just because that allows them not to break their heads."

The long awaited approval the JCache spec, he said, is the harbinger of a fundamental shift away from the old JVM paradigm.

"I think what's happening is that Java is going through an inflection from the classical single VM mentality, into more of a distributed clustered semantics," he said.

Matsumura also sees the Lambda functional programming support in the Java 8 spec as further evidence of this clustered memory evolution.

"Lambdas are a much easier abstraction for dealing with clustered semantics distributed computing," he said. "You can declare a lambda and that can be done in a much more asynchronous, concurrent model, where you can take a lambda and just put it into a cluster. It's much easier to program distributed cluster semantics using things like functional programming, which is why it emerged in environments like the Scala language first."

The very concept of "caching" is changing, Matsumura believes. What used to be a kind of afterthought is now and early-in-the-process consideration.

"Cache is kind of a wrong old word," he said, "because it's really about elastic scale as the base layer of your pyramid. You think about elasticity and caching because you're living in the cloud era, the mobile and viral era, the multi-channel responsive era. And you need to think about how your thing is going to scale, because it just might take off. And if it does, you're not going to have the luxury of slowing growth and users who are willing to put up with irritation over time. Even in the enterprise, the consumerization of IT has driven people toward a lack of patience. They expect all applications to be as performant as Angry Birds.

"In today's development world you want to do this thing called cache-first."

He also pointed to the JCache API, which includes the concept of an entry processor.

"This is where caching starts to go nouveau," he said. "The entry processor is a paradigm that uses implicit locking, and it operates in a distributed cluster and executes on the node that houses the data. So what we're really talking about is IMDG that is maximally performant and 'event driven,' because you can set up entry processors to manage entries. You can set up execution that's 'driven' by the event of people going after or changing a piece of data."

Hazelcast has traditionally be viewed as an IMDG, and that is what the product is, but Matsumura said that he has seen an increased interest among users who've never heard the term, and think of the product more in terms of a modern caching use case, like e-commerce.

"There's always a funny struggle of what to call something," he said. "If it is new, you still have to use the name of something old. We're starting to realize that there's something very different going on from the classical in-memory data grid."

The Hazelcast seat on the JCP EC was one of five Open Election seats. The other four winners were ARM Inc., Azul Systems, Werner Keil, and Geir Magnusson, Jr. The winners of the Ratified Seats were Freescale, Gemalto M2M GmbH, Goldman Sachs, MicroDoc, SAP, Software AG, TOTVS, and V2COM.