Java临时缓存API –测试早期草案评审RI

它被称为“ 永无止境的故事 ”。 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

翻译自: https://www.javacodegeeks.com/2012/10/java-temporary-caching-api-test-driving-the-early-draft-review-ri.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值