読者の皆様へ: あなたのリクエストに応じて、大切な情報を見逃すことなく、ノイズを減らす機能を開発しました。お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう。
オープンソースのインメモリデータグリッド(IMDG)を提供するHazelcastは先日、Eclipseコミュニティの他メンバとの協力を目的として、Eclipse Foundationに参加した。JCache{JSR-107)、Eclipse MicroProfile、EE4Jを主な対象に、JSR-107仕様に完全準拠したJCacheベースのネイティブ実装を提供する予定である。
Eclipse FoundationのエグゼプティブディレクタであるMike Milinkovich氏は、HazelcastのEclipseコミュニティへの参加を歓迎している。
Hazelcastは、オープンソースへの強いコミットメントと、エンタープライズJavaのオープンな仕様プロセスを標榜しています。Eclipse MicroProfileおよびEE4Jコミュニティへの参加は、これらオープンソースプロジェクト全般の成功を確実なものにしてくれるでしょう。
JCache仕様の定義によれば、
Java Caching APIは、アプリケーションがキャッシュを導入し利用するための共通的な方法を提供することにより、開発者がアプリケーションの開発に専念し、キャッシュ自体の実装に関わる負担を回避できるようにします。この仕様ではキャッシュの用語、セマンティクス、対応するJavaインターフェースを定義します。
JCacheの主要コンポーネントは次のものだ。
- Cache
- CacheManager – すべてのキャッシュを管理する
- CachingProvider – CacheManagerのライフサイクルを管理する
- Configuration – キャッシュの構成を定義する
これらコンポーネントが、下図に示すように連携して動作する。
入門
以下のコードは、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();
JUnitテストスイートを含むサンプルアプリケーションがGitHubで公開されている。
HazelcastのCEOでJSR-107の共同仕様リーダも務めるGreg Luck氏が、HazelcastのEclipse Foundation参加についてInfoQに語ってくれた。
InfoQ: HazelcastがEclipse Foundationに参加するに至った経緯について、もう少し詳しく説明して頂けますか?
Greg Luck: 当社はコミュニティを重視しています。ですから、EclipseがMicroProfileやEE4Jを手掛けているのを見て、当社も参加すべきだと思ったのです。
JCacheをEclipseに移行するかどうかはわかりません。最も大きな問題だと思うのは、少なくとも現時点では、新しいAPIでは一切
javax
を利用できないことです。今現在はjavax.cache
を使っているので、パッケージ名を変更しなくてはなりません。すでに13の実装と、膨大な量のユーザコードでjavax.cache
で使用しているため、これは非常に大掛かりな変更になります。
InfoQ: プレスリリースには、Hazelcastが“JCacheを普及させる”、とありましたが、その意味と、どうやってこの目標を達成しようとしているのかを教えて頂けますか?
Luck: PMOによると、JCacheは、これまでで最も広く実装されたJSRのひとつです。Oracle CoherenceやIBM ExtremeScaleなど大規模な分散型の有償製品を始めとして、Ehcacheのように広く使用されているキャッシュや、Hazelcast IMDGやApache IgniteなどのオープンソースIMDG、Blazing Cacheのような自社開発のインプロセスキャッシュに至るまで、13の実装があります。ですからこの面では、非常に成功しています。
SpringのAPIではJCacheを全面的に採用しています。ですがEEについては、最も投票の多かった機能要求であったにも関わらず、今はそれほどでもありません。ですからEE4Jで再挑戦したいのです。
そして最後に、JCacheはどのようなフレームワークでも利用可能です。JDK 1.6以上であればバージョンを問いませんし、CDIコンテナにも依存しません。アノテーションについては、それが利用可能であれば定義されます。すでにたくさんの人が利用していますが、もっと普及してほしいと思っています。
おそらく最も大きな問題は、1.0リリースのライセンス問題でした。私たちが誤って、オープンソースラインセンスではなく、JCPライセンスでJCache APIをリリースしてしまったのです。これが原因で、活動を停止したプロジェクトやOEMをいくつも知っています。この問題は1.1で修正されて、現在はApache 2ライセンスを使用しています。詳細はhttps://github.com/jsr107/jsr107spec/blob/master/LICENSE.txtと、ソースコードファイルのヘッダをご覧ください。
InfoQ: 最終的に、JCacheをMicroprofileのAPIとして(MetricsやCDI、Fault Toleranceのように)組み込む予定はありますか?
Luck: はい。私は昨年、MicroProfileに参加して、JCacheを統合するためにPayaraの実装チームと共同で作業しました。JCacheをMicroProfieに組み込む方法に関するドラフト仕様も書いています。
優先順位の問題や、先程述べたライセンスに関わる反対のため、まだ実現はしていませんが、その問題も解決したので、もう一度アジェンダに戻したいと思っています。
InfoQ: HazelcastとJCacheの今後について教えてください。
Luck: JCache 1.1がリリースされたので、今はそのサポートから次のリリースへ移っているところです。これは3.10として、2018年2月末のリリースを予定しています。
数千のノード(スケールアウト)を持つクラスタと数千GBのデータ(スケールアップ版を使用)を持つ、当社として最大のユースケースでJCacheを使っているので、HazelcastとしてもAPIは非常に重要なのです。
InfoQ: 最後に、Hazelcastにおける現在のあなたの責務、つまり、CEOとして日々どのようなことをしているのか、説明して頂けますか?他の誰かに委任せざるを得なかった責務は何かありますか?
Luck: これまで説明した内容からも分かるように、現在はCTOの肩書きも有しています。つまり、CEO兼CTOということです。JCacheとMicroProfileに関しては、これまでの標準やオープンソースに関する作業と同じように、週末を中心に行なっています。
Hazelcastには現在90人の社員がいて、先日には1ヶ月間のユーザ通知(phome home)が4,000万件に達しました。2014年以来、10倍以上の成長率になります。ですから、とても忙しいのです。私はエンジニアリングとプロダクト管理の責任者なので、自分の関与した技術トピックやプロジェクトを選択する傾向があります。例えば、
- 2017年に、私がこれまで深く関わってきたHazelcast Jetをローンチしました。
- 3.10ではFlakeIDといくつかのCRTDデータ構造が追加されて、スプリットブレイン(sprit brain)以降もマージ可能性を失わないようになります。
あまり知られていないと思いますが、私のこれまでのキャリアは、すべてKPMGの公認会計士としてのものでした。商業学位を取得してから7年間、会計と破産に関する経験を積んできたのです。いくつかのスタートアップでは執行委員会にも参加しています。ですから、3年半前にCEOに就任してからは、その当時の自分自身を引っ張り出して仕事に当たっています。毎日、幹部チームからの報告を受けながら、通常のCEOの職務をすべて行なっています。
有利な点として、私が技術畑のCEOであることから、少し違うこともしています。
- 会社の全リソースを集めて、技術的な問題の解決に当たることができます。
- オープンソースの開発に参加して、コミュニティの全回答に関する週次レポートを受け取ったり、フォーラムの未回答の質問に個人として答えたりしています。
リソース
- Using JCache with Hazelcast、Greg Luck (2014/7/10)
- Introduction to JCache、Baeldung (2017/10/29)
- Example JCache Application、Hazelcast
- Hazelcast Code Samples、Hazelcast
この記事を評価
- 編集者評
- 編集長アクション