[关闭]
@Rays 2018-01-13T13:59:17.000000Z 字数 3706 阅读 2228

Hazelcast加入Eclipse基金会

语言开发


摘要: Hazelcast是一家网格式内存数据(IMDG,In-Memory Data Grid)开源解决方案提供商。近期,Hazelcast宣布加入Eclipse基金会,并将与其它Eclipse社区成员开展合作。这一合作将主要聚焦于JCache(JSR-107)、Eclipse MicroProfile和EE4J。InfoQ就Hazelcast加入Eclipse基金会采访了Hazelcast的CEO Greg Luck。

作者: Michael Redlich

正文:

Hazelcast是一家网格式内存数据(IMDG,In-Memory Data Grid)开源解决方案提供商。近期,Hazelcast宣布加入Eclipse基金会,并将与其它Eclipse社区成员开展合作。这一合作将主要聚焦于JCache(JSR-107)、Eclipse MicroProfile和EE4J。Hazelcast已经提供了一种完全基于JSR-107规范的JCache原生实现。

Eclipse基金会执行董事Mike Milinkovich对Hazelcast加入Eclipse基金会表示欢迎:

Hazelcast已经展示了对开源和企业Java开放式规范流程的坚定承诺。Hazelcast对Eclipse MicroProfile和EE4J社区的参与,必将有助于确保这些开源项目取得整体成功。

JCache规范中给出了如下定义:

Java Caching API为应用程序提供了一种使用和添加缓存的通用方式,使得开发人员可以专注于应用程序的开发,避免了自己去实现缓存功能的负担。本规范定义了一些缓存术语、语义,以及一组相应的Java接口。

JCache的主要组件包括:

组件的工作结构如下图所示:

入门

下面的代码,展示了如何使用基础的JCache:

  1. CachingProvider cachingProvider = Caching.getCachingProvider();
  2. CacheManager cacheManager = cachingProvider.getCacheManager();
  3. // 创建一个基本缓存,其中具有类型安全(typesafe)配置。
  4. CompleteConfiguration<String,String> config = new
  5. MutableConfiguration<String,String>()
  6. .setTypes(String.class,String.class);
  7. // 创建并获取缓存。
  8. Cache<String, String> cache =
  9. cacheManager.createCache("myCache",config);
  10. cache.put("key1","value1");
  11. cache.put("key2","value2");
  12. assertEquals("value1",cache.get("key1"));
  13. assertEquals("value2",cache.get("key2"));
  14. cacheManager.close();

GitHub上给出了一个应用例子,以及一套JUnit测试。

InfoQ就Hazelcast加入Eclipse基金会采访了公司CEO Greg Luck。Luch也是JSR-107规范的联合牵头人。

InfoQ:您能更深度地解释一下Hazelcast加入Eclipse基金会的原因吗?

Greg Luck: 我们一向积极参与社区。当我们看到Eclipse正在推进MicroProfile plus和EE4J,我们认为自己也应该参与其中。

我并不确定JCache是否可以进入到Eclipse中。在我看来,至少当前最大的问题是所有的新API将不再允许使用javax命名。而目前我们使用的就是javax.cache。这一问题意味着在JCache 2中,我们将需要更改所有的软件包命名。我们已提供了13种实现方式,并有大量的用户代码使用了javax.cache。这一更改将是非常具有破坏性的。

InfoQ:在新闻公报中提及Hazelcast将“推广JCache”。您能对此作进一步澄清吗?Hazelcast将如何实现这一目标?

Luck: 据PMO(程序管理办公室)的统计,JCache是有史以来使用最广泛的JSR之一。我们提供了13种实现方式,范围涵盖了从大型分布式付费版本(例如Oracle Coherence和IBM ExtremeScale),到一些被广泛使用的缓存解决方案(例如Ehcache),以及开源IMDG(例如Hazelcast IMDG、Apache Ignite),还有本地进程内缓存解决方案(例如Blazing Cache)。这些都是十分成功的。

Spring已在其API中完全采用了JCache。尽管JCache被评为EE上票数最高的特性请求,但是截止目前,EE仍然尚未采用JCache。因此,我希望在EE4J上做再次尝试。

最后一点,任何构建框架的开发人员都可以使用JCache。它只依赖于JDK 1.6及更高版本,并不依赖于CDI容器,虽然它的确定义了一些开发人员可使用的注释。已经有很多开发人员在使用它,但我们希望会有更多。

最大的问题也许就是在1.0版本中的许可问题,我们在发布JCache API时,错误地使用了JCP许可证,而不是其它开源许可。据我了解,已经有几个项目和OEM因为许可问题而停滞不前。现在,我们已在1.1版本中解决了这个问题,改为使用Apache 2许可。大家可以参阅https://github.com/jsr107/jsr107spec/blob/master/LICENSE.txt。在所有源代码文件的头部,也可以看到许可的变化情况。

InfoQ:Hazelcast是否计划最终将JCache以API形式添加到MicroProfile中(类似于Metrics、CDI和Fault Tolerance那样)?

Luck: 当然。我去年就已参与MicroProfile并致力于Payara,以实现对JCache的集成。我还编写了规范草案,阐述如何将JCache集成到MicroProfile中。

这目前依然尚未实现,部分原因在于其它一些优先事项,部分原因也在于我上面提及的许可问题,因为在许可问题上存在着一些反对意见。现在这些问题都已解决,我想尽量将API的问题重新提上日程。

InfoQ:Hazelcast和JCache的下一步工作是什么?

Luck: 随着JCache 1.1的发布,我们都会参与到下一个版本的工作中。该版本称为3.10版,将在2018年二月底推出。

最大规模的使用JCache用例是数百个节点的集群(横向扩展),以及数千GB的数据(使用了我们的纵向扩展版本)。因此,JCache对于Hazelcast是非常重要的API。

InfoQ:最后,能否更详细地解释一下您当前在Hazelcast的职责,也就是作为CEO的日常工作情况。是否其中有一些您必须要承担的责任,但却被您遗漏了?

Luck: 你大概可以从我上面介绍的参与工作情况,猜测到我还保留了CTO的头衔。因此,我是公司的CEO兼CTO。我是在周末做JCache和MicroProfile的相关工作。所有的标准和开源工作同样也是在周末完成的。

Hazelcast现在有90名雇员,并刚刚达到了四千万的月度使用数据统计(译者注:Hazelcast使用Phone Home统计IMDG的使用情况),相比于2014年增长了10倍。因此,我的工作是很繁忙的。公司有工程和产品管理负责人,这样我可以倾向于选取一些自己可以参与的技术主题和项目,例如:

  • 我深度参与了2017年推出的Hazelcast Jet产品。
  • 在3.10版中,将会提供FlakeID及一些CRDT数据结构,这些数据结构具有拆分后可无损合并的特性。

也许很多人并不知道,我的前期职业生涯都是担任KPMG的特许会计师。我具有商业学位,以及七年的会计和破产领域工作经验。我曾在一些初创公司的执行委员会中任职。所以,当三年半前我成为公司的CEO时,我就从原来的工作中脱身,并投身于新的职业。我每天都履行一名CEO的正常职责,并有一个管理团队向我汇报。

我以自己是一名技术型CEO为荣。因此,我做事会稍有不同:

  • 我可以整合公司的全部资源去解决一些技术问题。
  • 我关注开源问题,每周我都会收到我们社区所有问答情况的报告,并亲自跟进论坛上一些未解答的问题。

相关资源

查看英文原文: Hazelcast Joins the Eclipse Foundation

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注