Oracleは今月、JCACHEの仕様が完成したことを発表した。JSR-107は最古の仕様で、2001年の3月6日に起草された。13年に渡る進化と開発を経て、"Java Temporary Caching API"はJavaにキャッシュシステムとやり取りをする共通のAPIを提供する。
JCACHEが昨年のJava EE 7のリリースに含まれることに対してOracleに大きな関心が寄せられていた。しかし、いくつかの"致命的な納期"を守れなかったことで候補リストから外されてしまった。Oracleが最近行ったJava EE 8の調査によれば、回答者の3分の2がJCACHEがJavaの次のEnterprise Editionに含まれることに関心を示している。今回の仕様完成の報を受け、Oracleはこのプロジェクトの参照実装がJava EE 8を待つまでもなく、Java EE 6やJava EE 7のアプリケーションのドロップインとして使われいることを注記している。
JCACHEはキャッシュにアクセスするためのMapに似たAPIを提供する。また、キャッシュを永続化ディスクにスプールするためのAPI、名前付きキャッシュを検索するAPI、イベントリスナを登録するAPIを提供する。しかし、レプリケーションやトランザクションの仕様は提供しない。これらの機能を定義するのはJSR-347 - JGRIDの一部はJCACHEはこのJGRIDの基盤となるコンポーネントのひとつだ。
InfoQはBen Cotton氏にJCACHEとJVMでのキャッシュ機構の将来について話を聞いた。氏はJSR-107とJSR-347の専門グループのメンバだ。
InfoQ: なぜJCACHEなのですか。
JCACHEは、JDBCがJavaのRDBMSコミュニティに提供したものと同等のものを提供します。
JCACHEプログラマーがが透過的にデータを操作できるようにするための標準的なAPIをJavaに提供します。hibernateやJPA L2と連携するためのポイントも明確です。したがって、データのオペランドがデータベースのカラムであろうが、Map.Entryであろうが問題ありません。
InfoQ: 今後の計画を教えてください。
まず、トランザクションです。
次にJGRID (JSR-347)との連携です。JCACHEは"木"であり、JGRIDは森です。
そして、局所的なライブラリのデータオペランド(例えばPeterのOpenHFT SHM)との透過的なAPI連携ポイントです。
オープソースの参照実装に加え、JSR-107の仕様はGitHubのページから自由に入手できる。課題やコメント履歴も閲覧できる。