它被稱為“ 永無止境的故事 ”。 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 {@Testpublic void testApp() {}
}
搞定。 為簡化起見,我將在測試用例中添加一些緩存功能。
基本概念
從設計的角度來看,基本概念是CacheManager,用于保存和控制Cache的集合。 緩存具有條目。 基本的API可以認為類似于地圖。 就像地圖一樣,數據通過鍵存儲為值。 您可以放置??值,獲取值和刪除值。 但是它沒有像keySet()和values()這樣的網絡成本高的映射方法。 通常,它更喜歡零或低成本回報類型。 因此,雖然Map具有V put(K鍵,V值),但是javax.cache.Cache具有void put(K鍵,V值)。
// Name for the cacheString cacheName = 'myfearsCache';// Create a cache using a CacheBuilderCache<Integer, String> cache = Caching.getCacheManager().<Integer, String>createCacheBuilder(cacheName).build();// define a valueString value1 = 'Markus';// define a keyInteger key = 1;//put to the cachecache.put(key, value1);// get from the cacheString value2 = cache.get(key);//compare valuesassertEquals(value1, value2);
// remove from the cachecache.remove(key);// ceck if removedassertNull(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