SlideShare a Scribd company logo
1 of 43
Download to read offline
Using JCache
GREG LUCK, CO-SPEC LEAD JSR107 @GREGRLUCK
CEO | HAZELCAST
28 NOVEMBER 2015
JCache
Agenda
• Introduction to Caching
• Java Caching (JCache), JSR-107
• Code Demo
Introduction to Caching
4
Benefits of Caching
Performance
Offload expenisve or non-scalabl parts of your
architecture
Scale up – get the most out of one machine
Scale out – add more capacity with more machines
Excellent Buffer against load variability
And…
Usually very fast and easy to apply
5
When to Use Caching
– When applications use the same data more than once
– When cost (time / resources) of making an initial copy is
less than fetching or producing the data again or when
faster to request from a Cache
1
2
3
4
Common Problem Areas that Benefit
Anything Web Scale Anything where the data is across
the network
Compound Data Objects Data Persistence
7
Database Caching
Cache Cache
ApplicationApplicationApplicationApplication
Data Store
Moving data from the database into the cache increases processing speed and can reduce
database licensing and maintenance costs.
Speed Costs Scalability  
~200 us
Average Response Time
Cache Cache
8
Flash/SSD
(serialized form)
Local Storage
Heap
(Objects)
Opaque to GC
in RAM
(serialized form)
<100 ns
< 100ns
+deserialization time
2
500
1,000+
Latency) Size (GB)
Caches are built primarily in RAM
in-process or distributed
Network Storage
Scaleout across the network
(serialized form)
< 50us
+deserialitzation time
< 140us for 1Gbps
< 70us for 10Gbps/40Gbps
+deserialitzation time
20,000+
‘s law
Predicted System Speedup
=
1 / ((1 – Proportion Sped Up) + Proportion Sped Up / Speed up))
Estimated Performance Improvements
10
Cache Efficiency
= cache hits / total hits
➡ High efficiency = high offload
➡ High efficiency = high performance
➡ How to increase:
➡Put reference data in the cache
➡Put long lived in the cache.
➡Consider frequency of mutability of data
➡Put highly used data in cache
➡Increase the size of the cache. Today you can create TB sized caches
10
11
Problems to Consider
• Standalone Caches and the N * problem
– As each entry expires, the backing system gets N requests
for data where n is the number of standalone caches.
Solution: Use a distributed cache
• Consistency with the System of Record
– How to keep the cache in sync with changes in a backing
system. Solution: Match mutability of data with data
safety configuration. Update the cache and backing store
at the same time.
• Consistency with other cache nodes
– How to keep all cache nodes in sync: Solution: Use a
distributed cache and match consistency configuration
with data mutability 11
Java Caching (JCache)
Java Caching (JCache)
• What?
– Java Caching (JCache) standardized Caching for the
Java Platform*
– A common mechanism to create, access, update
and remove information from Caches
• How?
– JSR-107: Java Caching Specification (JCache)
– Java Community Process (JCP) 2.9
Java Caching (JCache)
• Why?
– Standardize! Standardize! Standardize!
• Core Caching Concepts
• Core Caching API
– Provide application portability between Caching
solutions
• Big & Small, Open & Commercial
– Caching is ubiquitous!
Java Caching (Jcache)
When?
Item Date
JCache Final Spec Released 18 March 2014
Spring 4.1 September 2014
Hazelcast 3.3.1 TCK Compliant September 2014
Hazelcast 3.4 (with High-Density Memory
Store)
November 2014
Hazelcast 3.6 (with High-Density Caching) July 2015
Implementations
• Implementations
– JCache Reference Implementation
– Hazelcast
– Oracle Coherence
– Terracotta Ehcache
– Infinispan
– GridGain
– TayzGrid
• Keep Track
– https://jcp.org/aboutJava/communityprocess/implementati
ons/jsr107/index.html
16
Java Caching (JCache)
• Which Platform?
Java Caching (JCache)
Project Hosting
– JCP Project:
• http://jcp.org/en/jsr/detail?id=107
– Source Code:
• https://github.com/jsr107
– Forum:
• https://groups.google.com/forum/?fromgroups#!forum
/jsr107
Java Caching (JCache)
How to get it.
Apache Maven: (via Maven Central Repository)
<dependency>
<groupId>javax.cache</groupId>
<artifactId>cache-api</artifactId>
<version>1.0</version>
</dependency>
Caches and Caching
Caches and Caching
JSR107 Cache Definition: A high-performance, low-
latency data-structure* in which an application
places a temporary copy of information that is likely
to be used more than once
Maps vs Cache APIs
java.util.Map (Java 6/7)
Key-Value Based API
Supports Atomic Updates
Entries Don’t Expire
Entries Aren’t Evicted
Entries Stored On-Heap
Store-By-Reference
javax.cache.Cache (Java 6)
Key-Value Based API
Supports Atomic Updates
Entries May Expire
Entries May Be Evicted
Entries Stored Anywhere (ie:
topologies)
Store-By-Value and Store-By-
Reference
Supports Integration (ie: Loaders /
Writers)
Supports Observation (ie: Listeners)
Entry Processors
Statistics
JCache: Features
• java.util.ConcurrentMap like API
• Atomic Operations
• Lock-Free
• Read-Through / Write-Through Integration Support
• Cache Event Listeners
• Fully Generic API = type-safety
• Statistics
• Annotations (for frameworks and containers)
• Store-By-Value semantics (optional store-by-reference)
JCache: Features
• Topology Agnostic
– Topologies not defined or restricted by the
specification
• Efficiently supports:
– “local” in-memory Caching and
– “distributed” server-based Caching
JCache Key
Classes/Interfaces
JCache: Runtime Structure
Caching
“service loader”
CachingProvider
“SPI implementation”
CacheManager
“manager of caches”
Cache
“interface to a Cache”
Loads
& Tracks
*
*
*
Created
& Managed By
Created
& Managed By
“application”
Uses..
*
JCache: Cache Managers
javax.cache.CacheManager
• Establishes, configures, manages and owns named Caches
– Caches may be pre-define or dynamically created at runtime
• Provides Cache infrastructure and resources
• Provides Cache “scoping” (say in a Cluster)
• Provides Cache ClassLoaders (important for store-by-value)
• Provides Cache lifecycle management
JCache: Hello World
(via a Cache Manager)
// acquire the default CacheManager
CacheManager manager = Caching.getCacheManager();
// acquire a previously configured cache (via CacheManager)
Cache<Integer, String> cache =
manager.getCache(“my-cache”, Integer.class, String.class);
// put something in the cache
cache.put(123, “Hello World”);
// get something from the cache
String message = cache.get(123);
Cache Interface & Methods
(in IDE)
JCache: Entry Processors
(custom atomic operations for everyone!)
// acquire a cache
Cache<String, Integer> cache =
manager.getCache(“my-cache”,
String.class, Integer.class);
// increment a cached value by 42,
returning the old value
int value = cache.invoke(“key”, new
IncrementProcessor<>(), 42);
JCache: Entry Processors
(custom atomic operations for everyone!)
public class IncrementProcessor<K>
implements EntryProcessor<K, Integer, Integer>, Serializable {
@Override
public Integer process(MutableEntry<K, Integer> entry, Object... arguments) {
if (entry.exists()) {
int amount = arguments.length == 0 ? 1 : (Integer)arguments[0];
int current = entry.getValue();
entry.setValue(count + amount);
return current;
} else {
throw new IllegalStateException(“no entry exists”);
}
}
JCache: Entry Processors
(custom atomic operations for everyone!)
• Eliminate Round-Trips! (in distributed systems)
• Enable development of a Lock-Free API! (simplifies
applications)
*May need to be Serializable (in distributed systems)
Cache
Application
Cache
Application
JCache: Entry Processors
Which is better?
// using an entry processor?
int value = cache.invoke(“key”, new IncrementProcessor<>(), 42);
// using a lock based API?
cache.lock(“key”);
int current = cache.get(“key”);
cache.put(“key”, current + 42);
cache.unlock(“key”);
Annotations
• JSR107 introduces a standardized set of caching
annotations, which do method level caching
interception on annotated classes running in
dependency injection containers.
• Caching annotations are becoming increasingly
popular:
–Ehcache Annotations for Spring
–Spring 3’s caching annotations.
• JSR107 Annotations will be added to:
–Java EE 8 (planned?)
–Spring 4.1 (released)
Annotation Operations
• The JSR107 annotations cover the most
common cache operations:
• @CacheResult
• @CachePut
• @CacheRemove
• @CacheRemoveAll
Fully Annotated Class Example
@CacheDefaults(cacheName = "blogManager")
public class BlogManager {
@CacheResult
public Blog getBlogEntry(String title) {...}
@CacheRemove
public void removeBlogEntry(String title) {...}
@CacheRemoveAll
public void removeAllBlogs() {...}
@CachePut
public void createEntry(@CacheKey String title, @CacheValue Blog blog)
{...}
@CacheResult
public Blog getEntryCached(String randomArg, @CacheKey String title){...}
}
Specific Overrides
public class DomainDao {
@CachePut(cacheName="domainCache")
public void updateDomain(String domainId,
@CacheKey int index,
@CacheValue Domain domain) {
...
}
}
The Future?
• JCache 1.1 (2015)
– Maintenance Release being worked on
• JCache 2.0 (2016-)
– Java 8 Language Features (Lambda & Streams)
– Servlet 4.0 Integration / Session Caching?
– Java EE 8 Alignment?
• JCache 3.0 (2017?)
– Java 10 Language Features?
38
Working with
Hazelcast JCache
Hazelcast JCache Support
• Full implementation for:
– Hazelcast.newHazelcastInstance()
– HazelcastClient.newHazelcastClient()
• TCK Compliant
• JCache with Hi-Density Memory Store
• Docs: http://docs.hazelcast.org/docs/latest-
dev/manual/html-single/hazelcast-
documentation.html#jcache-overview
Check Out Hazelcast
Or Download
• Download from hazelcast.org/download
• Maven:
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
<version>3.5.4</version>
</dependency>
QUESTIONS?
43
• Greg Luck
– (@gregrluck)
– greg@hazelcast.com

More Related Content

What's hot

Caching In Java- Best Practises and Pitfalls
Caching In Java- Best Practises and PitfallsCaching In Java- Best Practises and Pitfalls
Caching In Java- Best Practises and PitfallsHARIHARAN ANANTHARAMAN
 
Ehcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroidsEhcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroidsAlex Snaps
 
Overview of the ehcache
Overview of the ehcacheOverview of the ehcache
Overview of the ehcacheHyeonSeok Choi
 
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusionAdvanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusionColdFusionConference
 
Proxysql use case scenarios fosdem17
Proxysql use case scenarios    fosdem17Proxysql use case scenarios    fosdem17
Proxysql use case scenarios fosdem17Alkin Tezuysal
 
Caching and JCache with Greg Luck 18.02.16
Caching and JCache with Greg Luck 18.02.16Caching and JCache with Greg Luck 18.02.16
Caching and JCache with Greg Luck 18.02.16Comsysto Reply GmbH
 
Web session replication with Hazelcast
Web session replication with HazelcastWeb session replication with Hazelcast
Web session replication with HazelcastEmrah Kocaman
 
Hazelcast 3.6 Roadmap Preview
Hazelcast 3.6 Roadmap PreviewHazelcast 3.6 Roadmap Preview
Hazelcast 3.6 Roadmap PreviewHazelcast
 
Introduction to hazelcast
Introduction to hazelcastIntroduction to hazelcast
Introduction to hazelcastEmin Demirci
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.Taras Matyashovsky
 
IMC Summit 2016 Breakout - Greg Luck - How to Speed Up Your Application Using...
IMC Summit 2016 Breakout - Greg Luck - How to Speed Up Your Application Using...IMC Summit 2016 Breakout - Greg Luck - How to Speed Up Your Application Using...
IMC Summit 2016 Breakout - Greg Luck - How to Speed Up Your Application Using...In-Memory Computing Summit
 
Barcelona mysqlnd qc
Barcelona mysqlnd qcBarcelona mysqlnd qc
Barcelona mysqlnd qcAnis Berejeb
 
Understanding MySql locking issues
Understanding MySql locking issuesUnderstanding MySql locking issues
Understanding MySql locking issuesOm Vikram Thapa
 
EDB Postgres DBA Best Practices
EDB Postgres DBA Best PracticesEDB Postgres DBA Best Practices
EDB Postgres DBA Best PracticesEDB
 
Caching: A Guided Tour - 10/12/2010
Caching: A Guided Tour - 10/12/2010Caching: A Guided Tour - 10/12/2010
Caching: A Guided Tour - 10/12/2010Jason Ragsdale
 
Optimizing MySQL for Cascade Server
Optimizing MySQL for Cascade ServerOptimizing MySQL for Cascade Server
Optimizing MySQL for Cascade Serverhannonhill
 

What's hot (20)

Caching In Java- Best Practises and Pitfalls
Caching In Java- Best Practises and PitfallsCaching In Java- Best Practises and Pitfalls
Caching In Java- Best Practises and Pitfalls
 
Ehcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroidsEhcache3 — JSR-107 on steroids
Ehcache3 — JSR-107 on steroids
 
Overview of the ehcache
Overview of the ehcacheOverview of the ehcache
Overview of the ehcache
 
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusionAdvanced caching techniques with ehcache, big memory, terracotta, and coldfusion
Advanced caching techniques with ehcache, big memory, terracotta, and coldfusion
 
Proxysql use case scenarios fosdem17
Proxysql use case scenarios    fosdem17Proxysql use case scenarios    fosdem17
Proxysql use case scenarios fosdem17
 
Caching and JCache with Greg Luck 18.02.16
Caching and JCache with Greg Luck 18.02.16Caching and JCache with Greg Luck 18.02.16
Caching and JCache with Greg Luck 18.02.16
 
Web session replication with Hazelcast
Web session replication with HazelcastWeb session replication with Hazelcast
Web session replication with Hazelcast
 
Eh cache in Kaunas JUG
Eh cache in Kaunas JUGEh cache in Kaunas JUG
Eh cache in Kaunas JUG
 
Hazelcast 3.6 Roadmap Preview
Hazelcast 3.6 Roadmap PreviewHazelcast 3.6 Roadmap Preview
Hazelcast 3.6 Roadmap Preview
 
5 Reasons to Upgrade Ehcache to BigMemory Go
5 Reasons to Upgrade Ehcache to BigMemory Go5 Reasons to Upgrade Ehcache to BigMemory Go
5 Reasons to Upgrade Ehcache to BigMemory Go
 
Introduction to hazelcast
Introduction to hazelcastIntroduction to hazelcast
Introduction to hazelcast
 
Hazelcast Introduction
Hazelcast IntroductionHazelcast Introduction
Hazelcast Introduction
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 
IMC Summit 2016 Breakout - Greg Luck - How to Speed Up Your Application Using...
IMC Summit 2016 Breakout - Greg Luck - How to Speed Up Your Application Using...IMC Summit 2016 Breakout - Greg Luck - How to Speed Up Your Application Using...
IMC Summit 2016 Breakout - Greg Luck - How to Speed Up Your Application Using...
 
Barcelona mysqlnd qc
Barcelona mysqlnd qcBarcelona mysqlnd qc
Barcelona mysqlnd qc
 
Understanding MySql locking issues
Understanding MySql locking issuesUnderstanding MySql locking issues
Understanding MySql locking issues
 
EDB Postgres DBA Best Practices
EDB Postgres DBA Best PracticesEDB Postgres DBA Best Practices
EDB Postgres DBA Best Practices
 
Caching: A Guided Tour - 10/12/2010
Caching: A Guided Tour - 10/12/2010Caching: A Guided Tour - 10/12/2010
Caching: A Guided Tour - 10/12/2010
 
Optimizing MySQL for Cascade Server
Optimizing MySQL for Cascade ServerOptimizing MySQL for Cascade Server
Optimizing MySQL for Cascade Server
 
Hazelcast 101
Hazelcast 101Hazelcast 101
Hazelcast 101
 

Viewers also liked

MySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことMySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことSatoshi Suzuki
 
High performance java ee with j cache and cdi
High performance java ee with j cache and cdiHigh performance java ee with j cache and cdi
High performance java ee with j cache and cdiPayara
 
JCache is here. Say Goodbye to proprietary Caching APIs!
JCache is here. Say Goodbye to proprietary Caching APIs!JCache is here. Say Goodbye to proprietary Caching APIs!
JCache is here. Say Goodbye to proprietary Caching APIs!Jaromir Hamala
 
Secure rest api on microservices vws2016
Secure rest api on microservices  vws2016Secure rest api on microservices  vws2016
Secure rest api on microservices vws2016Quý Nguyễn Minh
 
NBMBAA 2015 Outstanding MBA of the Year Award
NBMBAA 2015 Outstanding MBA of the Year AwardNBMBAA 2015 Outstanding MBA of the Year Award
NBMBAA 2015 Outstanding MBA of the Year AwardMarylyn Harris
 
Linkedin, Creating Your Professional Profile
Linkedin, Creating Your Professional ProfileLinkedin, Creating Your Professional Profile
Linkedin, Creating Your Professional Profilestouffer
 
Usabilidad - Productos que ame la gente
Usabilidad  - Productos que ame la gente  Usabilidad  - Productos que ame la gente
Usabilidad - Productos que ame la gente UX Nights
 
Gradle 2.2, 2.3 news #jggug
Gradle 2.2, 2.3 news #jggugGradle 2.2, 2.3 news #jggug
Gradle 2.2, 2.3 news #jggugkyon mm
 
Capturing the Elusive: Accounting for Study Attrition and Complex Trajectori...
Capturing the Elusive:  Accounting for Study Attrition and Complex Trajectori...Capturing the Elusive:  Accounting for Study Attrition and Complex Trajectori...
Capturing the Elusive: Accounting for Study Attrition and Complex Trajectori...Paul Brown
 
Accessibility of Twitter
Accessibility of TwitterAccessibility of Twitter
Accessibility of Twittercsunwebmaster
 
アップロードテスト
アップロードテストアップロードテスト
アップロードテストgzeal-miyamoto
 
market research and audience theory
market research and audience theorymarket research and audience theory
market research and audience theorysallymcmanus
 
Social Media The Good, The Bad and The Ugly
Social Media The Good, The Bad and The UglySocial Media The Good, The Bad and The Ugly
Social Media The Good, The Bad and The UglyElizabeth Icsam
 
CONVITE TMA SANTA JOANA DOS MATADOUROS
CONVITE TMA SANTA JOANA DOS MATADOUROSCONVITE TMA SANTA JOANA DOS MATADOUROS
CONVITE TMA SANTA JOANA DOS MATADOUROSSinapsa
 
Nova presentation 2014-03-11 4 new
Nova presentation   2014-03-11 4 newNova presentation   2014-03-11 4 new
Nova presentation 2014-03-11 4 newNova Interiors
 
Sightlines' CarbonMAP & Validation Services
Sightlines' CarbonMAP & Validation ServicesSightlines' CarbonMAP & Validation Services
Sightlines' CarbonMAP & Validation ServicesSightlines
 

Viewers also liked (20)

MySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことMySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したこと
 
High performance java ee with j cache and cdi
High performance java ee with j cache and cdiHigh performance java ee with j cache and cdi
High performance java ee with j cache and cdi
 
JCache is here. Say Goodbye to proprietary Caching APIs!
JCache is here. Say Goodbye to proprietary Caching APIs!JCache is here. Say Goodbye to proprietary Caching APIs!
JCache is here. Say Goodbye to proprietary Caching APIs!
 
Secure rest api on microservices vws2016
Secure rest api on microservices  vws2016Secure rest api on microservices  vws2016
Secure rest api on microservices vws2016
 
Bizweb theme workshop
Bizweb theme workshopBizweb theme workshop
Bizweb theme workshop
 
NBMBAA 2015 Outstanding MBA of the Year Award
NBMBAA 2015 Outstanding MBA of the Year AwardNBMBAA 2015 Outstanding MBA of the Year Award
NBMBAA 2015 Outstanding MBA of the Year Award
 
Linkedin, Creating Your Professional Profile
Linkedin, Creating Your Professional ProfileLinkedin, Creating Your Professional Profile
Linkedin, Creating Your Professional Profile
 
Usabilidad - Productos que ame la gente
Usabilidad  - Productos que ame la gente  Usabilidad  - Productos que ame la gente
Usabilidad - Productos que ame la gente
 
Presentación sobre el futbol
Presentación sobre el futbolPresentación sobre el futbol
Presentación sobre el futbol
 
Gradle 2.2, 2.3 news #jggug
Gradle 2.2, 2.3 news #jggugGradle 2.2, 2.3 news #jggug
Gradle 2.2, 2.3 news #jggug
 
Capturing the Elusive: Accounting for Study Attrition and Complex Trajectori...
Capturing the Elusive:  Accounting for Study Attrition and Complex Trajectori...Capturing the Elusive:  Accounting for Study Attrition and Complex Trajectori...
Capturing the Elusive: Accounting for Study Attrition and Complex Trajectori...
 
Accessibility of Twitter
Accessibility of TwitterAccessibility of Twitter
Accessibility of Twitter
 
Visión
VisiónVisión
Visión
 
アップロードテスト
アップロードテストアップロードテスト
アップロードテスト
 
market research and audience theory
market research and audience theorymarket research and audience theory
market research and audience theory
 
Xeirismoi 1
Xeirismoi 1Xeirismoi 1
Xeirismoi 1
 
Social Media The Good, The Bad and The Ugly
Social Media The Good, The Bad and The UglySocial Media The Good, The Bad and The Ugly
Social Media The Good, The Bad and The Ugly
 
CONVITE TMA SANTA JOANA DOS MATADOUROS
CONVITE TMA SANTA JOANA DOS MATADOUROSCONVITE TMA SANTA JOANA DOS MATADOUROS
CONVITE TMA SANTA JOANA DOS MATADOUROS
 
Nova presentation 2014-03-11 4 new
Nova presentation   2014-03-11 4 newNova presentation   2014-03-11 4 new
Nova presentation 2014-03-11 4 new
 
Sightlines' CarbonMAP & Validation Services
Sightlines' CarbonMAP & Validation ServicesSightlines' CarbonMAP & Validation Services
Sightlines' CarbonMAP & Validation Services
 

Similar to JCache Using JCache

Using JCache to speed up your apps
Using JCache to speed up your appsUsing JCache to speed up your apps
Using JCache to speed up your appsVassilis Bekiaris
 
VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right VMworld
 
An Engineer's Intro to Oracle Coherence
An Engineer's Intro to Oracle CoherenceAn Engineer's Intro to Oracle Coherence
An Engineer's Intro to Oracle CoherenceOracle
 
xPatterns on Spark, Shark, Mesos, Tachyon
xPatterns on Spark, Shark, Mesos, TachyonxPatterns on Spark, Shark, Mesos, Tachyon
xPatterns on Spark, Shark, Mesos, TachyonClaudiu Barbura
 
Coherence RoadMap 2018
Coherence RoadMap 2018Coherence RoadMap 2018
Coherence RoadMap 2018harvraja
 
Real time analytics using Hadoop and Elasticsearch
Real time analytics using Hadoop and ElasticsearchReal time analytics using Hadoop and Elasticsearch
Real time analytics using Hadoop and ElasticsearchAbhishek Andhavarapu
 
Static analysis of java enterprise applications
Static analysis of java enterprise applicationsStatic analysis of java enterprise applications
Static analysis of java enterprise applicationsAnastasiοs Antoniadis
 
10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...
10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...
10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...Payara
 
Rails Caching: Secrets From the Edge
Rails Caching: Secrets From the EdgeRails Caching: Secrets From the Edge
Rails Caching: Secrets From the EdgeFastly
 
Rails Caching Secrets from the Edge
Rails Caching Secrets from the EdgeRails Caching Secrets from the Edge
Rails Caching Secrets from the EdgeMichael May
 
인피니스팬데이터그리드따라잡기 (@JCO 2014)
인피니스팬데이터그리드따라잡기 (@JCO 2014)인피니스팬데이터그리드따라잡기 (@JCO 2014)
인피니스팬데이터그리드따라잡기 (@JCO 2014)Jaehong Cheon
 
MySQL 8 loves JavaScript
MySQL 8 loves JavaScript MySQL 8 loves JavaScript
MySQL 8 loves JavaScript Sanjay Manwani
 
Scale Your Data Tier with Windows Server AppFabric
Scale Your Data Tier with Windows Server AppFabricScale Your Data Tier with Windows Server AppFabric
Scale Your Data Tier with Windows Server AppFabricWim Van den Broeck
 
Application Scalability in Server Farms - NCache
Application Scalability in Server Farms - NCacheApplication Scalability in Server Farms - NCache
Application Scalability in Server Farms - NCacheAlachisoft
 
More Cache for Less Cash (DevLink 2014)
More Cache for Less Cash (DevLink 2014)More Cache for Less Cash (DevLink 2014)
More Cache for Less Cash (DevLink 2014)Michael Collier
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroOndrej Mihályi
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroPayara
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroPayara
 

Similar to JCache Using JCache (20)

Using JCache to speed up your apps
Using JCache to speed up your appsUsing JCache to speed up your apps
Using JCache to speed up your apps
 
VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right
 
An Engineer's Intro to Oracle Coherence
An Engineer's Intro to Oracle CoherenceAn Engineer's Intro to Oracle Coherence
An Engineer's Intro to Oracle Coherence
 
xPatterns on Spark, Shark, Mesos, Tachyon
xPatterns on Spark, Shark, Mesos, TachyonxPatterns on Spark, Shark, Mesos, Tachyon
xPatterns on Spark, Shark, Mesos, Tachyon
 
Coherence RoadMap 2018
Coherence RoadMap 2018Coherence RoadMap 2018
Coherence RoadMap 2018
 
Mini-Training: To cache or not to cache
Mini-Training: To cache or not to cacheMini-Training: To cache or not to cache
Mini-Training: To cache or not to cache
 
AppFabric Velocity
AppFabric VelocityAppFabric Velocity
AppFabric Velocity
 
Real time analytics using Hadoop and Elasticsearch
Real time analytics using Hadoop and ElasticsearchReal time analytics using Hadoop and Elasticsearch
Real time analytics using Hadoop and Elasticsearch
 
Static analysis of java enterprise applications
Static analysis of java enterprise applicationsStatic analysis of java enterprise applications
Static analysis of java enterprise applications
 
10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...
10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...
10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...
 
Rails Caching: Secrets From the Edge
Rails Caching: Secrets From the EdgeRails Caching: Secrets From the Edge
Rails Caching: Secrets From the Edge
 
Rails Caching Secrets from the Edge
Rails Caching Secrets from the EdgeRails Caching Secrets from the Edge
Rails Caching Secrets from the Edge
 
인피니스팬데이터그리드따라잡기 (@JCO 2014)
인피니스팬데이터그리드따라잡기 (@JCO 2014)인피니스팬데이터그리드따라잡기 (@JCO 2014)
인피니스팬데이터그리드따라잡기 (@JCO 2014)
 
MySQL 8 loves JavaScript
MySQL 8 loves JavaScript MySQL 8 loves JavaScript
MySQL 8 loves JavaScript
 
Scale Your Data Tier with Windows Server AppFabric
Scale Your Data Tier with Windows Server AppFabricScale Your Data Tier with Windows Server AppFabric
Scale Your Data Tier with Windows Server AppFabric
 
Application Scalability in Server Farms - NCache
Application Scalability in Server Farms - NCacheApplication Scalability in Server Farms - NCache
Application Scalability in Server Farms - NCache
 
More Cache for Less Cash (DevLink 2014)
More Cache for Less Cash (DevLink 2014)More Cache for Less Cash (DevLink 2014)
More Cache for Less Cash (DevLink 2014)
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 

More from 日本Javaユーザーグループ

Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3日本Javaユーザーグループ
 
パフォーマンス ボトルネック 国内あるある事例
パフォーマンス ボトルネック 国内あるある事例パフォーマンス ボトルネック 国内あるある事例
パフォーマンス ボトルネック 国内あるある事例日本Javaユーザーグループ
 
パフォーマンス管理最前線 米国大規模システムにおける最新トレンド
パフォーマンス管理最前線 米国大規模システムにおける最新トレンドパフォーマンス管理最前線 米国大規模システムにおける最新トレンド
パフォーマンス管理最前線 米国大規模システムにおける最新トレンド日本Javaユーザーグループ
 
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組みJJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み日本Javaユーザーグループ
 
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3日本Javaユーザーグループ
 

More from 日本Javaユーザーグループ (12)

日本Javaユーザーグループ 2018年度 定期総会
日本Javaユーザーグループ 2018年度 定期総会日本Javaユーザーグループ 2018年度 定期総会
日本Javaユーザーグループ 2018年度 定期総会
 
日本Javaグループ2017年定期総会 #jjug
日本Javaグループ2017年定期総会 #jjug 日本Javaグループ2017年定期総会 #jjug
日本Javaグループ2017年定期総会 #jjug
 
日本Javaグループ2016年定期総会 #jjug #ccc_soukai
日本Javaグループ2016年定期総会 #jjug #ccc_soukai日本Javaグループ2016年定期総会 #jjug #ccc_soukai
日本Javaグループ2016年定期総会 #jjug #ccc_soukai
 
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
 
JJUG CCC 2015 Spring 総会資料
JJUG CCC 2015 Spring 総会資料JJUG CCC 2015 Spring 総会資料
JJUG CCC 2015 Spring 総会資料
 
Jjug ccc spring_#ccc_r55
Jjug ccc spring_#ccc_r55Jjug ccc spring_#ccc_r55
Jjug ccc spring_#ccc_r55
 
JJUG CCC 2014 Spring 定期総会
JJUG CCC 2014 Spring 定期総会JJUG CCC 2014 Spring 定期総会
JJUG CCC 2014 Spring 定期総会
 
パフォーマンス ボトルネック 国内あるある事例
パフォーマンス ボトルネック 国内あるある事例パフォーマンス ボトルネック 国内あるある事例
パフォーマンス ボトルネック 国内あるある事例
 
パフォーマンス管理最前線 米国大規模システムにおける最新トレンド
パフォーマンス管理最前線 米国大規模システムにおける最新トレンドパフォーマンス管理最前線 米国大規模システムにおける最新トレンド
パフォーマンス管理最前線 米国大規模システムにおける最新トレンド
 
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組みJJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
 
JJUG CCC 2013 Spring 定期総会資料
JJUG CCC 2013 Spring 定期総会資料JJUG CCC 2013 Spring 定期総会資料
JJUG CCC 2013 Spring 定期総会資料
 
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
 

Recently uploaded

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Visualising and forecasting stocks using Dash
Visualising and forecasting stocks using DashVisualising and forecasting stocks using Dash
Visualising and forecasting stocks using Dashnarutouzumaki53779
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Visualising and forecasting stocks using Dash
Visualising and forecasting stocks using DashVisualising and forecasting stocks using Dash
Visualising and forecasting stocks using Dash
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

JCache Using JCache

  • 1. Using JCache GREG LUCK, CO-SPEC LEAD JSR107 @GREGRLUCK CEO | HAZELCAST 28 NOVEMBER 2015 JCache
  • 2. Agenda • Introduction to Caching • Java Caching (JCache), JSR-107 • Code Demo
  • 4. 4 Benefits of Caching Performance Offload expenisve or non-scalabl parts of your architecture Scale up – get the most out of one machine Scale out – add more capacity with more machines Excellent Buffer against load variability And… Usually very fast and easy to apply
  • 5. 5 When to Use Caching – When applications use the same data more than once – When cost (time / resources) of making an initial copy is less than fetching or producing the data again or when faster to request from a Cache
  • 6. 1 2 3 4 Common Problem Areas that Benefit Anything Web Scale Anything where the data is across the network Compound Data Objects Data Persistence
  • 7. 7 Database Caching Cache Cache ApplicationApplicationApplicationApplication Data Store Moving data from the database into the cache increases processing speed and can reduce database licensing and maintenance costs. Speed Costs Scalability   ~200 us Average Response Time Cache Cache
  • 8. 8 Flash/SSD (serialized form) Local Storage Heap (Objects) Opaque to GC in RAM (serialized form) <100 ns < 100ns +deserialization time 2 500 1,000+ Latency) Size (GB) Caches are built primarily in RAM in-process or distributed Network Storage Scaleout across the network (serialized form) < 50us +deserialitzation time < 140us for 1Gbps < 70us for 10Gbps/40Gbps +deserialitzation time 20,000+
  • 9. ‘s law Predicted System Speedup = 1 / ((1 – Proportion Sped Up) + Proportion Sped Up / Speed up)) Estimated Performance Improvements
  • 10. 10 Cache Efficiency = cache hits / total hits ➡ High efficiency = high offload ➡ High efficiency = high performance ➡ How to increase: ➡Put reference data in the cache ➡Put long lived in the cache. ➡Consider frequency of mutability of data ➡Put highly used data in cache ➡Increase the size of the cache. Today you can create TB sized caches 10
  • 11. 11 Problems to Consider • Standalone Caches and the N * problem – As each entry expires, the backing system gets N requests for data where n is the number of standalone caches. Solution: Use a distributed cache • Consistency with the System of Record – How to keep the cache in sync with changes in a backing system. Solution: Match mutability of data with data safety configuration. Update the cache and backing store at the same time. • Consistency with other cache nodes – How to keep all cache nodes in sync: Solution: Use a distributed cache and match consistency configuration with data mutability 11
  • 13. Java Caching (JCache) • What? – Java Caching (JCache) standardized Caching for the Java Platform* – A common mechanism to create, access, update and remove information from Caches • How? – JSR-107: Java Caching Specification (JCache) – Java Community Process (JCP) 2.9
  • 14. Java Caching (JCache) • Why? – Standardize! Standardize! Standardize! • Core Caching Concepts • Core Caching API – Provide application portability between Caching solutions • Big & Small, Open & Commercial – Caching is ubiquitous!
  • 15. Java Caching (Jcache) When? Item Date JCache Final Spec Released 18 March 2014 Spring 4.1 September 2014 Hazelcast 3.3.1 TCK Compliant September 2014 Hazelcast 3.4 (with High-Density Memory Store) November 2014 Hazelcast 3.6 (with High-Density Caching) July 2015
  • 16. Implementations • Implementations – JCache Reference Implementation – Hazelcast – Oracle Coherence – Terracotta Ehcache – Infinispan – GridGain – TayzGrid • Keep Track – https://jcp.org/aboutJava/communityprocess/implementati ons/jsr107/index.html 16
  • 17. Java Caching (JCache) • Which Platform?
  • 18. Java Caching (JCache) Project Hosting – JCP Project: • http://jcp.org/en/jsr/detail?id=107 – Source Code: • https://github.com/jsr107 – Forum: • https://groups.google.com/forum/?fromgroups#!forum /jsr107
  • 19. Java Caching (JCache) How to get it. Apache Maven: (via Maven Central Repository) <dependency> <groupId>javax.cache</groupId> <artifactId>cache-api</artifactId> <version>1.0</version> </dependency>
  • 21. Caches and Caching JSR107 Cache Definition: A high-performance, low- latency data-structure* in which an application places a temporary copy of information that is likely to be used more than once
  • 22. Maps vs Cache APIs java.util.Map (Java 6/7) Key-Value Based API Supports Atomic Updates Entries Don’t Expire Entries Aren’t Evicted Entries Stored On-Heap Store-By-Reference javax.cache.Cache (Java 6) Key-Value Based API Supports Atomic Updates Entries May Expire Entries May Be Evicted Entries Stored Anywhere (ie: topologies) Store-By-Value and Store-By- Reference Supports Integration (ie: Loaders / Writers) Supports Observation (ie: Listeners) Entry Processors Statistics
  • 23. JCache: Features • java.util.ConcurrentMap like API • Atomic Operations • Lock-Free • Read-Through / Write-Through Integration Support • Cache Event Listeners • Fully Generic API = type-safety • Statistics • Annotations (for frameworks and containers) • Store-By-Value semantics (optional store-by-reference)
  • 24. JCache: Features • Topology Agnostic – Topologies not defined or restricted by the specification • Efficiently supports: – “local” in-memory Caching and – “distributed” server-based Caching
  • 26. JCache: Runtime Structure Caching “service loader” CachingProvider “SPI implementation” CacheManager “manager of caches” Cache “interface to a Cache” Loads & Tracks * * * Created & Managed By Created & Managed By “application” Uses.. *
  • 27. JCache: Cache Managers javax.cache.CacheManager • Establishes, configures, manages and owns named Caches – Caches may be pre-define or dynamically created at runtime • Provides Cache infrastructure and resources • Provides Cache “scoping” (say in a Cluster) • Provides Cache ClassLoaders (important for store-by-value) • Provides Cache lifecycle management
  • 28. JCache: Hello World (via a Cache Manager) // acquire the default CacheManager CacheManager manager = Caching.getCacheManager(); // acquire a previously configured cache (via CacheManager) Cache<Integer, String> cache = manager.getCache(“my-cache”, Integer.class, String.class); // put something in the cache cache.put(123, “Hello World”); // get something from the cache String message = cache.get(123);
  • 29. Cache Interface & Methods (in IDE)
  • 30. JCache: Entry Processors (custom atomic operations for everyone!) // acquire a cache Cache<String, Integer> cache = manager.getCache(“my-cache”, String.class, Integer.class); // increment a cached value by 42, returning the old value int value = cache.invoke(“key”, new IncrementProcessor<>(), 42);
  • 31. JCache: Entry Processors (custom atomic operations for everyone!) public class IncrementProcessor<K> implements EntryProcessor<K, Integer, Integer>, Serializable { @Override public Integer process(MutableEntry<K, Integer> entry, Object... arguments) { if (entry.exists()) { int amount = arguments.length == 0 ? 1 : (Integer)arguments[0]; int current = entry.getValue(); entry.setValue(count + amount); return current; } else { throw new IllegalStateException(“no entry exists”); } }
  • 32. JCache: Entry Processors (custom atomic operations for everyone!) • Eliminate Round-Trips! (in distributed systems) • Enable development of a Lock-Free API! (simplifies applications) *May need to be Serializable (in distributed systems) Cache Application Cache Application
  • 33. JCache: Entry Processors Which is better? // using an entry processor? int value = cache.invoke(“key”, new IncrementProcessor<>(), 42); // using a lock based API? cache.lock(“key”); int current = cache.get(“key”); cache.put(“key”, current + 42); cache.unlock(“key”);
  • 34. Annotations • JSR107 introduces a standardized set of caching annotations, which do method level caching interception on annotated classes running in dependency injection containers. • Caching annotations are becoming increasingly popular: –Ehcache Annotations for Spring –Spring 3’s caching annotations. • JSR107 Annotations will be added to: –Java EE 8 (planned?) –Spring 4.1 (released)
  • 35. Annotation Operations • The JSR107 annotations cover the most common cache operations: • @CacheResult • @CachePut • @CacheRemove • @CacheRemoveAll
  • 36. Fully Annotated Class Example @CacheDefaults(cacheName = "blogManager") public class BlogManager { @CacheResult public Blog getBlogEntry(String title) {...} @CacheRemove public void removeBlogEntry(String title) {...} @CacheRemoveAll public void removeAllBlogs() {...} @CachePut public void createEntry(@CacheKey String title, @CacheValue Blog blog) {...} @CacheResult public Blog getEntryCached(String randomArg, @CacheKey String title){...} }
  • 37. Specific Overrides public class DomainDao { @CachePut(cacheName="domainCache") public void updateDomain(String domainId, @CacheKey int index, @CacheValue Domain domain) { ... } }
  • 38. The Future? • JCache 1.1 (2015) – Maintenance Release being worked on • JCache 2.0 (2016-) – Java 8 Language Features (Lambda & Streams) – Servlet 4.0 Integration / Session Caching? – Java EE 8 Alignment? • JCache 3.0 (2017?) – Java 10 Language Features? 38
  • 40. Hazelcast JCache Support • Full implementation for: – Hazelcast.newHazelcastInstance() – HazelcastClient.newHazelcastClient() • TCK Compliant • JCache with Hi-Density Memory Store • Docs: http://docs.hazelcast.org/docs/latest- dev/manual/html-single/hazelcast- documentation.html#jcache-overview
  • 42. Or Download • Download from hazelcast.org/download • Maven: <dependency> <groupId>com.hazelcast</groupId> <artifactId>hazelcast</artifactId> <version>3.5.4</version> </dependency>
  • 43. QUESTIONS? 43 • Greg Luck – (@gregrluck) – greg@hazelcast.com