BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Hazelcast Joins the Eclipse Foundation

Hazelcast Joins the Eclipse Foundation

This item in japanese

Hazelcast, a provider in open source In-Memory Data Grid (IMDG), recently joined the Eclipse Foundation to collaborate with the other members of the Eclipse community. They will mainly focus on JCache (JSR-107), Eclipse MicroProfile, and EE4J. Hazelcast offers a native implementation of JCache based entirely on the JSR-107 specification.

Mike Milinkovich, executive director at the Eclipse Foundation, was pleased to welcome Hazelcast into the Eclipse community:

Hazelcast has demonstrated a strong commitment to open source and an open specification process for enterprise Java. Its participation in the Eclipse MicroProfile and EE4J communities will help ensure the overall success of these open source projects.

As defined in the JCache specification:

The Java Caching API provides a common way for applications to use and adopt caching thus allowing developers to focus on application development and avoid the burden of implementing caches themselves. This specification defines caching terminology, semantics and a corresponding set of Java interfaces.

The main components of JCache are:

  • Cache
  • CacheManager - manages all caches
  • CachingProvider - manages the lifecycles of CacheManagers
  • Configuration - configures caches

These components work together as shown below:

Getting Started

The code below demonstrates the basics on how to get started using JCache:

    
CachingProvider cachingProvider = Caching.getCachingProvider();
CacheManager cacheManager = cachingProvider.getCacheManager();

// create a simple, but typesafe configuration for the cache
CompleteConfiguration<String,String> config = new
MutableConfiguration<String,String>()
.setTypes(String.class,String.class);

// create and get the cache
Cache<String, String> cache =
cacheManager.createCache("myCache",config);
cache.put("key1","value1");
cache.put("key2","value2");
assertEquals("value1",cache.get("key1"));
assertEquals("value2",cache.get("key2"));
cacheManager.close();
    

An example application along with a suite of JUnit tests can be found on GitHub.

Greg Luck, CEO at Hazelcast and co-specification lead of JSR-107, spoke to InfoQ about Hazelcast joining the Eclipse Foundation.

InfoQ: Can you expand a bit on the factors that led to Hazelcast joining the Eclipse Foundation?

Greg Luck: We are very community oriented. So when we saw Eclipse doing MicroProfile plus doing EE4J, we thought we should join.

I am not sure if we would move JCache to Eclipse. The biggest issue to me is that, at least currently, any new APIs will not be allowed to use javax. Today we use javax.cache. This would mean that JCache 2 would need to change its package name. We have 13 implementations out there and a huge amount of user code that uses javax.cache. This would be an extremely disruptive change.

InfoQ: As stated in the press release, Hazelcast will "popularize JCache." Can you clarify what this means and how you intend to accomplish this goal?

Luck: JCache is one of the most widely implemented JSRs ever, according to the PMO. We have 13 implementations, from large distributed commercial only such as Oracle Coherence and IBM ExtremeScale, to very widely-used caches such as Ehcache to open source IMDGs such as Hazelcast IMDG, Apache Ignite and home-grown in-process caches such as Blazing Cache. So this part has been very successful.

Spring have fully adopted JCache in their APIs. So far, EE has not even though it was the most highly voted feature request, so I want to try again in EE4J.

Finally, anyone building a framework can use JCache. It only relies on JDK 1.6 or higher. It does not have a dependency on a CDI container, but it does define annotations that they can use if present. There are lots of people using it, but we would always like more.

Perhaps the biggest issue was a license issue in the 1.0 release where we mistakenly released the JCache API under a JCP license rather than an open source one. I know of several projects and OEMs who this gave pause to. This is now fixed in 1.1 and we use the Apache 2 license. See https://github.com/jsr107/jsr107spec/blob/master/LICENSE.txt and the header of all the source code files.

InfoQ: Are there plans to ultimately include JCache as an API in MicroProfile (similar to Metrics, CDI, and Fault Tolerance)?

Luck: Yes. I got involved in MicroProfile last year and worked with the Payara implementation to integrate JCache. I also wrote a draft specification to show how JCache could be integrated into MicroProfile.

This has not happened yet partly because of priorities and partly because of objections about the license issue mentioned above. Now that that is fixed I want to try to get this back on the agenda.

InfoQ: What's on the horizon for Hazelcast and JCache?

Luck: With the release of JCache 1.1 we are rolling in support of that into our next release, which will be 3.10 coming out end of February 2018.

Our very largest use cases with clusters of hundreds of nodes (scale out) and thousands of GB of data (using our scale-up version) use JCache so it is a very important API for Hazelcast.

InfoQ: Finally, can you explain your current responsibilities at Hazelcast in a bit more detail, that is, what do you do on a day-to-day basis as CEO? Are there any responsibilities that you've had to delegate that you miss?

Luck: Well you can probably guess from my involvement above that I have retained the CTO title as well. So I am CEO/CTO. For JCache and MicroProfile, I do these on the weekends pretty much the way I have done all of my standards and open source work.

Hazelcast has 90 employees now and we just passed the 40 million monthly phone home mark which is 10x growth since 2014. So things are busy here. I have heads of Engineering and Product Management, so I tend to pick and choose what technical topics and projects I get involved in. Some examples:

  • We launched Hazelcast Jet in 2017 in which I was very heavily involved.
  • And 3.10 will have FlakeIDs and some CRDT data structures which have the property of lossless mergeabilty after split brain.

It is not well known about me, but I had a whole previous career as a chartered accountant at KPMG. With that was a commerce degree and seven years of experience in accounting and insolvency. I have also sat in executive committees in a number of startups. So when I became CEO 3 1/2 years ago, I dusted off that part of myself and got to work. Day to day, I do all the usual CEO activities with an executive team reporting to me.

The helpful part is that I am a Technical CEO, so I do things a bit differently:

  • I can marshal the whole resources of the company to solve a technical problem.
  • I care about open source and get a weekly report on all of our community answers and personally follow-up unanswered questions on forums.

Resources

Rate this Article

Adoption
Style

BT