A Oracle anunciou este mês que a especificação JCACHE foi finalizada. Criada em 6 de março de 2001 a JSR-107 era a especificação mais antiga ainda aberta. Após treze anos de evolução e desenvolvimento, a "API Java Cache Temporary" vai trazer uma interface comum para interagir com sistemas de cache.
A Oracle já sabia do alto nível de interesse para o JCACHE ser incluído no lançamento do Java EE 7, mas após perder "alguns prazos críticos", a JSR foi descartada da lista de candidatos. No recente levantamento feito pela Oracle no Java EE 8 survey, aproximadamente dois terços de todas as respostas expressaram interesse de ter o JCACHE incluído como parte da linguagem na próxima edição Enterprise Edition. Com o anúncio da finalização da especificação, a Oracle fez um anúncio informando que o projeto da implementação de referência pode ser utilizado em aplicações Java EE 6 ou Java EE 7, sem ter que esperar pelo Java EE 8.
JCACHE fornece um Map-Like API para acesso aos caches, SPIs (Special Peripheral Interface) para spooling caches para persistência em disco, uma API para recuperar um named cache e uma API para registrar listeners de eventos. Não é, no entanto, uma estratégia para especificar desalojamento, replicação ou transações. O trabalho para definir as características do sistema de cache está sendo feito como parte da JSR-347-JGRID, para o qual JCACHE é um precedente e um componente fundamental.
O InfoQ conversou com Ben Cotton, que é membro da JSR-107 e do grupo de peritos JSR-347, para fazer algumas perguntas sobre JCache e o futuro do cache na JVM:
InfoQ: Por que JCACHE?
JCACHE será para a comunidade Java Caching exatamente o que o JDBC foi para a comunidade Java RDBMS.
Isto promete dar ao Java uma API padrão com a qual os programadores poderão utilizar o JCACHE de forma transparente para operação de dados, independente de sua localidade. Com pontos de junções explicítas para Hibernate e JPA L2, não importando se a operação dos dados é de uma coluna em uma base de dados ou um Map.Entry."
InfoQ: Qual o planejamento para o futuro?
"O suporte transacional tem tido uma alta demanda, por isso estamos trabalhando nisso. Além disso, estamos construindo suporte a interação com o JGRID. Também estamos abrindo pontos de acesso para API de operação de dados altamente performáticas conhecidas como "ultra-premium Java locality libraries" (por exemplo, de Peter Lawrey OpenHFT SharedHashMap)"
Além da implementação de referência de código aberto, a especificação JSR-107 está disponível gratuitamente na página do projeto no GitHub, incluindo edições e histórico de atualizações.