Он был известен как « Бесконечная история ». JSR пнул 11 с половиной лет назад и передал обзорный бюллетень JSR 06 марта 2001 года . Если вы когда-нибудь задумывались, что нужно, чтобы получить причудливое низкое число JSR сотнями: в этом секрет. В отличие от немецкого фэнтезийного романа Майкла Энде, речь шла не о нехватке воображения людей, а о ресурсах, политических дискуссиях и, наконец, о лицензировании. Но давайте забудем о прошлом и перейдем к тому, что есть со вчерашнего дня. Обратите внимание, что этот материал был загружен в JCP в феврале, но был отложен, пока не выяснились юридические сложности с наличием двух компаний в качестве общих спецификаций. Это сделано и не будет проблемой в процессе.
О чем это все?
Кэширование известно тем, что резко ускоряет приложения. Те, которые обычно используют временные данные, которые дороги для создания, но имеют длительный срок службы, в течение которого они могут быть повторно использованы. Эта спецификация стандартизирует кэширование объектов Java таким образом, который обеспечивает эффективную реализацию и снимает с программиста бремя реализации истечения срока действия кэша, взаимного исключения, спулинга и согласованности кэша.
Он предназначен для работы как с Java SE, так и с Java EE. В последующем еще не гарантировано, что он будет включен в предстоящий выпуск EE 7, но EG усердно работает над этим и нуждается в вашем отзыве.
Как мне в это попасть?
Это просто. Все необходимые артефакты уже находятся в Maven Central. Давайте создадим очень простой пример для вас, чтобы вы начали. Запустите NetBeans и создайте новое Java-приложение Maven. Назовите его как угодно (например, cachingdemo, откройте pom.xml и добавьте к нему следующие две зависимости:
|
01
02
03
04
05
06
07
08
09
10
11
|
<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 для использования нового джунта:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
|
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)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
// 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)); |
Грядущие события
Это в основном все, что возможно в данный момент. Отправляясь в путь с последующими выпусками, вы сможете:
— Интеграция с Spring и CDI через @Annotations
— Используйте CacheEventListener
— Работа с транзакциями
EG активно ищет отзывы о доступных материалах. Итак, если вы можете получить в свои руки, попробуйте и дайте EG знать, что вы думаете!
Ссылки и чтение
Страница JCP:
JSR 107: JCACHE — API временного кэширования Java
Список рассылки группы
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
Ссылка: API временного кэширования Java — тестирование RI Early Draft Review от нашего партнера JCG Маркуса Эйзела (Markus Eisele) из блога Enterprise Software Development с Java .