Статьи

API Временного Кэширования Java — Тестирование RI

Он был известен как « Бесконечная история ». 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 .