它被称为“ 永无止境的故事 ”。 JSR在11年半前开始运作,并于2001年3月6日通过了JSR 评审投票 。 如果您想知道要获得成千上万个低JSR编号需要什么,那就是秘密。 与迈克尔·恩德(Michael Ende)的德国幻想小说不同,这不是关于人们缺乏想象力,而是关于资源,政治讨论以及最终关于许可。 但是,让我们忘记过去,回到昨天以来的样子。 请注意,该材料已于2月上载到JCP,但由于将两家公司作为共享的规范线索而导致的法律复杂性得到了解决,因此被推迟了。 这样做已经完成,并且在此过程中不会成为问题。
这是什么一回事呢?
缓存以极大地加速应用程序而闻名。 那些通常使用临时数据,这些临时数据创建起来很昂贵,但是使用寿命很长,可以重复使用。 该规范以允许有效实现的方式标准化Java对象的缓存,并减轻了程序员负担实现缓存过期,互斥,假脱机和缓存一致性的负担。
它旨在与Java SE和Java EE一起使用。 对于以后的版本,仍不能保证,它将被包含在即将发布的EE 7版本中,但是EG正在努力工作,需要您的反馈。
如何获得它?
那很简单。 所有必需的工件都已经在Maven Central中。 让我们为您构建一个非常简单的示例,以帮助您入门。 启动NetBeans并创建一个新的Maven Java应用程序。 随意命名(例如cachingdemo,打开pom.xml并添加以下两个依赖项):
<dependency>
<groupId>javax.cache</groupId>
<artifactId>cache-api</artifactId>
<version>0.5</version>
</dependency>
<dependency>
<groupId>javax.cache.implementation</groupId>
<artifactId>cache-ri-impl</artifactId>
<version>0.5</version>
</dependency>
如果您在那里,请将junit版本更改为4.8.2。
重构AppTest以利用新的junit:
package net.eisele.samples.cachingdemo;
import org.junit.Test;
/**
* Simple Cache Test
*/
public class AppTest {
@Test
public void testApp() {
}
}
搞定。 为简化起见,我将在测试用例中添加一些缓存功能。
基本概念
从设计的角度来看,基本概念是CacheManager,用于保存和控制Cache的集合。 缓存具有条目。 基本的API可以认为类似于地图。 就像地图一样,数据通过键存储为值。 您可以放置值,获取值和删除值。 但是它没有像keySet()和values()这样的网络成本高的映射方法。 通常,它更喜欢零或低成本回报类型。 因此,虽然Map具有V put(K键,V值),但是javax.cache.Cache具有void put(K键,V值)。
// Name for the cache
String cacheName = 'myfearsCache';
// Create a cache using a CacheBuilder
Cache<Integer, String> cache = Caching.getCacheManager().<Integer, String>createCacheBuilder(cacheName).build();
// define a value
String value1 = 'Markus';
// define a key
Integer key = 1;
//put to the cache
cache.put(key, value1);
// get from the cache
String value2 = cache.get(key);
//compare values
assertEquals(value1, value2);
// remove from the cache
cache.remove(key);
// ceck if removed
assertNull(cache.get(key));
即将发生的事情
这基本上就是目前所有可能的一切。 使用后续发行版,您应该能够:
–通过@Annotations与Spring和CDI集成
–使用CacheEventListener
–处理事务
EG正在积极寻找有关可用材料的反馈。 因此,如果可以尝试,请尝试一下,让EG知道您的想法!
链接和阅读
JCP页面:
JSR 107:JCACHE – Java临时缓存API
组邮件列表
http://groups.google.com/group/jsr107
在问题跟踪器中记录问题
https://github.com/jsr107/jsr107spec/issues
一个非常简单的演示
https://github.com/jsr107/demo
ehcache-jcache – 0.5规范的实现
https://github.com/jsr107/ehcache-jcache
参考: Java临时缓存API –在Java软件企业软件开发博客上,由我们的JCG合作伙伴 Markus Eisele 试运行早期草案评审RI 。