Oracle a annoncé le mois dernier que la spécification JCACHE est maintenant finalisée. La JSR-107 était la plus ancienne des JSRs encore vivante dans les annales, et avait débuté le 6 Mars 2001. Après treize années d'évolution et de développement, l'"API de Cache Temporaire Java" apportera à Java une interface commune pour l'interaction avec les systèmes de cache.
Oracle avait reçu de nombreuses marques d'intérêt pour que JCACHE soit inclus dans la version Java EE 7 de l'année dernière, mais après avoir manqué "quelques jalons critiques", la JSR a été supprimée de la liste des candidats. Après le sondage récent d'Oracle sur Java EE 8, près des deux tiers des participants ont exprimé leur intérêt pour que JCACHE soit inclus dans la prochaine Edition Enterprise du langage. Avec l'annonce de la finalisation de la spécification, Oracle a mentionné que l'implémentation de référence du projet peut être utilisée comme drop-in pour une application Java EE 6 ou 7, sans attendre Java EE 8.
En elle-même, JCACHE fournit une API de type Dictionnaire pour accéder au cache, des SPIs pour le spool de cache sur le disque persistant, une API pour récupérer un cache par son nom, et une API pour enregistrer des abonnés d'évènements. Cependant, elle ne spécifie pas les stratégies d'éviction, de réplication ou de transaction. Le travail de définition de ces caractéristiques de cache est réalisé sous la JSR 347 - JGRID, dont JCACHE constitue l'un des composants fondamentaux.
InfoQ s'est entretenu avec Ben Cotton, un membre des groupes d'experts pour la JSR-107 et la JSR-347, et l'a questionné à propos de JCACHE et du futur du cache sur la JVM :
InfoQ : Pourquoi JCACHE ?
JCACHE apportera à la communauté Java du Cache exactement ce que JDBC a apporté à la communauté Java des SGBDD.
Elle promet de donner à Java une API standard avec laquelle les développeurs JCACHE peuvent agir de manière transparente sur leurs opérandes de données, indépendamment de la localisation de leurs données. Avec des points de jointure sur les vues Hibernate et JPA L2 ; il n'y aura pas d'incidence si l'opérande de données est une colonne d'une base de données ou une Map.Entry.
InfoQ : Qu'est-ce que vous avez planifié pour l'avenir ?
Le support des transactions a été très demandé, nous travaillons donc là-dessus. De plus, nous construisons le support d'interaction avec JGRID. Nous ouvrons également des hooks transparents de l'API à des opérandes de données de bibliothèques Java premium (c-à-d la SharedHashMap OpenHFT de Peter Lawrey).
En plus de l'implémentation de référence open source, la spécification JSR-107 est disponible gratuitement sur la page Github du projet, y compris les tickets et l'historique de commit.