SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.1
Java Caching:
State of the Union
Brian Oliver | Oracle Corporation
Greg Luck | Terracotta
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.3
Program Agenda
§  Java Caching (JCache), JSR-107 and Caching
§  JCache: More than your average Cache!
§  JCache: By Example
§  Available Implementations?
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.4
The following is intended to outline our general product direction. It is intended
for information purposes only, and may not be incorporated into any contract.
It is not a commitment to deliver any material, code, or functionality, and should
not be relied upon in making purchasing decisions. The development, release,
and timing of any features or functionality described for Oracle s products
remains at the sole discretion of Oracle.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.5
Java Caching (JCache)
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.6
Java Caching (JCache)
§  What?
–  Java Caching (JCache) is an effort to standardize 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
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.7
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!
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.8
Java Caching (JCache)
§  Who?
–  Joint Specification (LEADS)
§  Greg Luck
§  Brian Oliver (Oracle Corporation)
–  Expert Group (EG)
§  10+ companies
§  8+ individuals
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.9
Java Caching (JCache)
§  When? (A Proposed Timetable)
Deliverable Start Finish
Public Review Ballot ✔ 27th August 2013 9th September 2013
Proposed Final Draft 30th September 2013
Completion of Reference Implementation (RI) &
Technology Compatibility Kit (TCK)
31st October 2013
Appeal Ballot (7 days) 31st October 2013 7th November 2013
Updated Deliverables 7th November 2013 14th November 2013
Final Approval Ballot 14th November 2013 28th November 2013
Final Release 28th November 2013 12th December 2013
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.10
Java Caching (JCache)
§  Which Platform?
JCache Deliverable Target Platform
Specification (SPEC) Java 6+ (SE or EE)
Reference Implementation (RI) Java 7+ (SE or EE)
Technology Compatibility Kit (TCK) Java 7+ (SE or EE)
Demos and Samples Java 7+ (SE or EE)
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.11
Java Caching (JCache)
–  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
Project Hosting
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.12
Java Caching (JCache)
Apache Maven: (via Maven Central Repository)
<dependency>
<groupId>javax.cache</groupId>
<artifactId>cache-api</artifactId>
<version>0.10</version>
</dependency>
How to get it.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.13
Caches and Caching
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.14
Caches and Caching
§  Cache: 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
§  When To Use Caches?
–  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
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.15
Caches and Caching
§  Implications?
–  Caching is not a cure all!
–  Developers must know the costs (time and resources) to
determine Cache effectiveness
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.16
Caches and Caching: Maps v’s Cache APIs
Maps
§  Key-Value Based API
§  Supports Atomic Updates
§  Entries Don’t Expire
§  Entries Aren’t Evicted
§  Entries Stored On-Heap
Caches
§  Key-Value Based API
§  Supports Atomic Updates
§  Entries May Expire
§  Entries May Be Evicted
§  Entries Stored Anywhere (i.e.: topologies)
§  Support Integration (through Loaders / Writers)
§  Support Listeners (observer pattern)
§  Entry Processors
§  Statistics
Caches are not Maps!
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.17
JCache: More than your
average Cache!
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.18
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)
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.19
JCache: Features
§  Topology Agnostic
–  Topologies not defined or restricted by the specification
§  Efficiently supports:
–  “local” in-memory Caching and
–  “distributed” server-based Caching
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.20
JCache: G’day World
// acquire a previously configured cache
Cache<Integer, String> cache =
Caching.getCache(“my-cache”, Integer.class, String.class);
// put something in the cache
cache.put(123, “G’day World”);
// get something from the cache
String message = cache.get(123);
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.21
API In Depth
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.22
JCache: Cache API
public interface Cache<K, V>
extends Iterable<Cache.Entry<K, V>> {
V get(K key);
Map<K, V> getAll(Set<? extends K> keys);
boolean containsKey(K key);
void loadAll(Set<? extends K> keys,
CompletionListener l);
...
(does not extend Map!)
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.23
JCache: Cache API
void put(K key, V value);
V getAndPut(K key, V value);
void putAll(Map<? extends K, ? extends V> map);
boolean putIfAbsent(K key, V value);
boolean remove(K key);
boolean remove(K key, V oldValue);
V getAndRemove(K key);
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.24
JCache: Cache API
boolean replace(K key, V oldValue, V newValue);
boolean replace(K key, V value);
V getAndReplace(K key, V value);
void removeAll(Set<? extends K> keys);
void removeAll();
void clear();
Configuration<K, V> getConfiguration();
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.25
JCache: Cache API
void registerListener(
CacheEntryListenerConfiguration<K, V> config);
void unregisterListener(
CacheEntryListenerConfiguration<K, V> config);
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.26
JCache: Cache API
<T> T invoke(K key,
EntryProcessor<K, V, T> processor,
Object... arguments);
<T> Map<K, T> T invokeAll(Set<? Extends K> keys,
EntryProcessor<K, V, T> processor,
Object... arguments);
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.27
JCache: Cache API
String getName();
CacheManager getCacheManager();
}
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.28
JCache: Cache Managers
§  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
javax.cache.CacheManager
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.29
JCache: G’day World
// 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, “G’day World”);
// get something from the cache
String message = cache.get(123);
(via a Cache Manager)
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.30
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..
*
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.31
JCache: Gudday World
MutableConfiguration<Integer, String> config =
new MutableConfiguration<Integer, String>()
.setStoreByReference(true)
.setCacheEntryExpiryPolicy(
new AccessedExpiryPolicy(5, TimeUnit.SECONDS));
(using programmatic configuration – fluent style)
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.32
JCache: Gudday World
// acquire the default CacheManager
CacheManager manager = Caching.getCacheManager();
// create cache with a custom configuration
Cache<Integer, String> cache =
manager.createCache(“my-cache”, config);
// and perhaps later just…
Cache<Integer, String> cache =
manager.getCache(“my-cache”, Integer.class, String.class);
(using programmatic configuration – fluent style)
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.33
Entry Processors
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.34
JCache: Entry Processors
// 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);
(custom atomic operations for everyone!)
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.35
JCache: Entry Processors
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”);
}
}
(custom atomic operations for everyone)
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.36
JCache: Entry Processors
§  Eliminate Round-Trips! (in distributed systems)
§  Enable development of a Lock-Free API! (simplifies applications)
§  *May need to be Serializable (in distributed systems)
(custom atomic operations!)
Cache
Application
Cache
Application
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.37
JCache: Entry Processors
// 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”);
Which is better?
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.38
3
8
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
–  Spring 4 (2014)
38	
  
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.39
3
9
Annotation Operations
§  The JSR107 annotations cover the most common cache operations:
§ @CacheResult
§ @CachePut
§ @CacheRemove
§ @CacheRemoveAll
39	
  
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.40
4
0
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){...}
} 40	
  
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.41
4
1
Specific Overrides
public class DomainDao {
@CachePut(cacheName="domainCache")
public void updateDomain(String domainId,
@CacheKey int index,
@CacheValue Domain domain) {
...
}
}
41	
  
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.42
Announcements
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.43
Fully Compliant JCache early 2014.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.44
Oracle Coherence
Fully Compliant JCACHE in 2014
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.45
Graphic Section Divider
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.46
The preceding is intended to outline our general product direction. It is intended
for information purposes only, and may not be incorporated into any contract.
It is not a commitment to deliver any material, code, or functionality, and should
not be relied upon in making purchasing decisions. The development, release,
and timing of any features or functionality described for Oracle s products
remains at the sole discretion of Oracle.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.47

Mais conteúdo relacionado

Mais procurados

Building Data Streaming Platforms using OpenShift and Kafka
Building Data Streaming Platforms using OpenShift and KafkaBuilding Data Streaming Platforms using OpenShift and Kafka
Building Data Streaming Platforms using OpenShift and KafkaNenad Bogojevic
 
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014Dave Stokes
 
Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...
Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...
Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...Ludovico Caldara
 
“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the CoreC4Media
 
Java - Persist and Replay Runtime Data
Java - Persist and Replay Runtime Data Java - Persist and Replay Runtime Data
Java - Persist and Replay Runtime Data Ajay Singh
 
MySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disksMySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disksDave Stokes
 
MySQL 5.6 Updates
MySQL 5.6 UpdatesMySQL 5.6 Updates
MySQL 5.6 UpdatesDave Stokes
 
Posscon my sql56
Posscon my sql56Posscon my sql56
Posscon my sql56Dave Stokes
 
Search Analytics Business Value & NoSQL Backend
Search Analytics Business Value & NoSQL BackendSearch Analytics Business Value & NoSQL Backend
Search Analytics Business Value & NoSQL BackendSematext Group, Inc.
 
CON 3431 - Introducing Java Programming to Kids
CON 3431 - Introducing Java Programming to KidsCON 3431 - Introducing Java Programming to Kids
CON 3431 - Introducing Java Programming to KidsArun Gupta
 
MySQL 5.7 -- SCaLE Feb 2014
MySQL 5.7 -- SCaLE Feb 2014MySQL 5.7 -- SCaLE Feb 2014
MySQL 5.7 -- SCaLE Feb 2014Dave Stokes
 
Introducing Apache Geode and Spring Data GemFire
Introducing Apache Geode and Spring Data GemFireIntroducing Apache Geode and Spring Data GemFire
Introducing Apache Geode and Spring Data GemFireJohn Blum
 
Configuration with Apache Tamaya
Configuration with Apache TamayaConfiguration with Apache Tamaya
Configuration with Apache TamayaAnatole Tresch
 
인피니스팬 데이터그리드 플랫폼
인피니스팬 데이터그리드 플랫폼인피니스팬 데이터그리드 플랫폼
인피니스팬 데이터그리드 플랫폼Jaehong Cheon
 

Mais procurados (17)

Building Data Streaming Platforms using OpenShift and Kafka
Building Data Streaming Platforms using OpenShift and KafkaBuilding Data Streaming Platforms using OpenShift and Kafka
Building Data Streaming Platforms using OpenShift and Kafka
 
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
MySQL 5.7 New Features to Exploit -- PHPTek/Chicago MySQL User Group May 2014
 
Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...
Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...
Oracle RAC, Data Guard, and Pluggable Databases: When MAA Meets Multitenant (...
 
“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core
 
Java - Persist and Replay Runtime Data
Java - Persist and Replay Runtime Data Java - Persist and Replay Runtime Data
Java - Persist and Replay Runtime Data
 
MySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disksMySql's NoSQL -- best of both worlds on the same disks
MySql's NoSQL -- best of both worlds on the same disks
 
MySQL 5.6 Updates
MySQL 5.6 UpdatesMySQL 5.6 Updates
MySQL 5.6 Updates
 
Posscon my sql56
Posscon my sql56Posscon my sql56
Posscon my sql56
 
Search Analytics Business Value & NoSQL Backend
Search Analytics Business Value & NoSQL BackendSearch Analytics Business Value & NoSQL Backend
Search Analytics Business Value & NoSQL Backend
 
My sql 5.6&MySQL Cluster 7.3
My sql 5.6&MySQL Cluster 7.3My sql 5.6&MySQL Cluster 7.3
My sql 5.6&MySQL Cluster 7.3
 
CON 3431 - Introducing Java Programming to Kids
CON 3431 - Introducing Java Programming to KidsCON 3431 - Introducing Java Programming to Kids
CON 3431 - Introducing Java Programming to Kids
 
MySQL 5.7 -- SCaLE Feb 2014
MySQL 5.7 -- SCaLE Feb 2014MySQL 5.7 -- SCaLE Feb 2014
MySQL 5.7 -- SCaLE Feb 2014
 
Introducing Apache Geode and Spring Data GemFire
Introducing Apache Geode and Spring Data GemFireIntroducing Apache Geode and Spring Data GemFire
Introducing Apache Geode and Spring Data GemFire
 
Configuration with Apache Tamaya
Configuration with Apache TamayaConfiguration with Apache Tamaya
Configuration with Apache Tamaya
 
인피니스팬 데이터그리드 플랫폼
인피니스팬 데이터그리드 플랫폼인피니스팬 데이터그리드 플랫폼
인피니스팬 데이터그리드 플랫폼
 
Aneez Hasan_Resume
Aneez Hasan_ResumeAneez Hasan_Resume
Aneez Hasan_Resume
 
Java EE for the Cloud
Java EE for the CloudJava EE for the Cloud
Java EE for the Cloud
 

Semelhante a JSR107 State of the Union JavaOne 2013

Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018CodeOps Technologies LLP
 
Java Flight Recorder Behind the Scenes
Java Flight Recorder Behind the ScenesJava Flight Recorder Behind the Scenes
Java Flight Recorder Behind the ScenesStaffan Larsen
 
Nashorn - JavaScript on the JVM - Akhil Arora
Nashorn - JavaScript on the JVM - Akhil AroraNashorn - JavaScript on the JVM - Akhil Arora
Nashorn - JavaScript on the JVM - Akhil Arorajaxconf
 
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
 
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
 
Preparing your code for Java 9
Preparing your code for Java 9Preparing your code for Java 9
Preparing your code for Java 9Deepu Xavier
 
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)jeckels
 
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...AMD Developer Central
 
Java code coverage with JCov. Implementation details and use cases.
Java code coverage with JCov. Implementation details and use cases.Java code coverage with JCov. Implementation details and use cases.
Java code coverage with JCov. Implementation details and use cases.Alexandre (Shura) Iline
 
OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...
OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...
OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...Altinity Ltd
 
2015 Java update and roadmap, JUG sevilla
2015  Java update and roadmap, JUG sevilla2015  Java update and roadmap, JUG sevilla
2015 Java update and roadmap, JUG sevillaTrisha Gee
 
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
 
Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)Logico
 
Coherence 12.1.2 Hidden Gems
Coherence 12.1.2 Hidden GemsCoherence 12.1.2 Hidden Gems
Coherence 12.1.2 Hidden Gemsharvraja
 
Oracle RAC 12c Collaborate Best Practices - IOUG 2014 version
Oracle RAC 12c Collaborate Best Practices - IOUG 2014 versionOracle RAC 12c Collaborate Best Practices - IOUG 2014 version
Oracle RAC 12c Collaborate Best Practices - IOUG 2014 versionMarkus Michalewicz
 
Tuning Java for Big Data
Tuning Java for Big DataTuning Java for Big Data
Tuning Java for Big DataScott Seighman
 
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...Thomas Wuerthinger
 
Finally, EE Security API JSR 375
Finally, EE Security API JSR 375Finally, EE Security API JSR 375
Finally, EE Security API JSR 375Alex Kosowski
 

Semelhante a JSR107 State of the Union JavaOne 2013 (20)

Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018
 
Java Flight Recorder Behind the Scenes
Java Flight Recorder Behind the ScenesJava Flight Recorder Behind the Scenes
Java Flight Recorder Behind the Scenes
 
Java Cloud and Container Ready
Java Cloud and Container ReadyJava Cloud and Container Ready
Java Cloud and Container Ready
 
Nashorn - JavaScript on the JVM - Akhil Arora
Nashorn - JavaScript on the JVM - Akhil AroraNashorn - JavaScript on the JVM - Akhil Arora
Nashorn - JavaScript on the JVM - Akhil Arora
 
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
 
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...
 
Preparing your code for Java 9
Preparing your code for Java 9Preparing your code for Java 9
Preparing your code for Java 9
 
JCache Using JCache
JCache Using JCacheJCache Using JCache
JCache Using JCache
 
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
 
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
 
Java code coverage with JCov. Implementation details and use cases.
Java code coverage with JCov. Implementation details and use cases.Java code coverage with JCov. Implementation details and use cases.
Java code coverage with JCov. Implementation details and use cases.
 
OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...
OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...
OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...
 
2015 Java update and roadmap, JUG sevilla
2015  Java update and roadmap, JUG sevilla2015  Java update and roadmap, JUG sevilla
2015 Java update and roadmap, JUG sevilla
 
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
 
Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)
 
Coherence 12.1.2 Hidden Gems
Coherence 12.1.2 Hidden GemsCoherence 12.1.2 Hidden Gems
Coherence 12.1.2 Hidden Gems
 
Oracle RAC 12c Collaborate Best Practices - IOUG 2014 version
Oracle RAC 12c Collaborate Best Practices - IOUG 2014 versionOracle RAC 12c Collaborate Best Practices - IOUG 2014 version
Oracle RAC 12c Collaborate Best Practices - IOUG 2014 version
 
Tuning Java for Big Data
Tuning Java for Big DataTuning Java for Big Data
Tuning Java for Big Data
 
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
 
Finally, EE Security API JSR 375
Finally, EE Security API JSR 375Finally, EE Security API JSR 375
Finally, EE Security API JSR 375
 

Mais de Hazelcast

Hazelcast 3.6 Roadmap Preview
Hazelcast 3.6 Roadmap PreviewHazelcast 3.6 Roadmap Preview
Hazelcast 3.6 Roadmap PreviewHazelcast
 
Time to Make the Move to In-Memory Data Grids
Time to Make the Move to In-Memory Data GridsTime to Make the Move to In-Memory Data Grids
Time to Make the Move to In-Memory Data GridsHazelcast
 
The Power of the JVM: Applied Polyglot Projects with Java and JavaScript
The Power of the JVM: Applied Polyglot Projects with Java and JavaScriptThe Power of the JVM: Applied Polyglot Projects with Java and JavaScript
The Power of the JVM: Applied Polyglot Projects with Java and JavaScriptHazelcast
 
JCache - It's finally here
JCache -  It's finally hereJCache -  It's finally here
JCache - It's finally hereHazelcast
 
Speed Up Your Existing Relational Databases with Hazelcast and Speedment
Speed Up Your Existing Relational Databases with Hazelcast and SpeedmentSpeed Up Your Existing Relational Databases with Hazelcast and Speedment
Speed Up Your Existing Relational Databases with Hazelcast and SpeedmentHazelcast
 
Shared Memory Performance: Beyond TCP/IP with Ben Cotton, JPMorgan
Shared Memory Performance: Beyond TCP/IP with Ben Cotton, JPMorganShared Memory Performance: Beyond TCP/IP with Ben Cotton, JPMorgan
Shared Memory Performance: Beyond TCP/IP with Ben Cotton, JPMorganHazelcast
 
Applying Real-time SQL Changes in your Hazelcast Data Grid
Applying Real-time SQL Changes in your Hazelcast Data GridApplying Real-time SQL Changes in your Hazelcast Data Grid
Applying Real-time SQL Changes in your Hazelcast Data GridHazelcast
 
WAN Replication: Hazelcast Enterprise Lightning Talk
WAN Replication: Hazelcast Enterprise Lightning TalkWAN Replication: Hazelcast Enterprise Lightning Talk
WAN Replication: Hazelcast Enterprise Lightning TalkHazelcast
 
JAAS Security Suite: Hazelcast Enterprise Lightning Talk
JAAS Security Suite: Hazelcast Enterprise Lightning TalkJAAS Security Suite: Hazelcast Enterprise Lightning Talk
JAAS Security Suite: Hazelcast Enterprise Lightning TalkHazelcast
 
Hazelcast for Terracotta Users
Hazelcast for Terracotta UsersHazelcast for Terracotta Users
Hazelcast for Terracotta UsersHazelcast
 
Extreme Network Performance with Hazelcast on Torusware
Extreme Network Performance with Hazelcast on ToruswareExtreme Network Performance with Hazelcast on Torusware
Extreme Network Performance with Hazelcast on ToruswareHazelcast
 
Big Data, Simple and Fast: Addressing the Shortcomings of Hadoop
Big Data, Simple and Fast: Addressing the Shortcomings of HadoopBig Data, Simple and Fast: Addressing the Shortcomings of Hadoop
Big Data, Simple and Fast: Addressing the Shortcomings of HadoopHazelcast
 
JAXLondon - Squeezing Performance of IMDGs
JAXLondon - Squeezing Performance of IMDGsJAXLondon - Squeezing Performance of IMDGs
JAXLondon - Squeezing Performance of IMDGsHazelcast
 
OrientDB & Hazelcast: In-Memory Distributed Graph Database
 OrientDB & Hazelcast: In-Memory Distributed Graph Database OrientDB & Hazelcast: In-Memory Distributed Graph Database
OrientDB & Hazelcast: In-Memory Distributed Graph DatabaseHazelcast
 
How to Use HazelcastMQ for Flexible Messaging and More
 How to Use HazelcastMQ for Flexible Messaging and More How to Use HazelcastMQ for Flexible Messaging and More
How to Use HazelcastMQ for Flexible Messaging and MoreHazelcast
 
Devoxx UK 2014 High Performance In-Memory Java with Open Source
Devoxx UK 2014   High Performance In-Memory Java with Open SourceDevoxx UK 2014   High Performance In-Memory Java with Open Source
Devoxx UK 2014 High Performance In-Memory Java with Open SourceHazelcast
 
Jfokus - Hazlecast
Jfokus - HazlecastJfokus - Hazlecast
Jfokus - HazlecastHazelcast
 
In-memory No SQL- GIDS2014
In-memory No SQL- GIDS2014In-memory No SQL- GIDS2014
In-memory No SQL- GIDS2014Hazelcast
 
In-memory Data Management Trends & Techniques
In-memory Data Management Trends & TechniquesIn-memory Data Management Trends & Techniques
In-memory Data Management Trends & TechniquesHazelcast
 
How to Speed up your Database
How to Speed up your DatabaseHow to Speed up your Database
How to Speed up your DatabaseHazelcast
 

Mais de Hazelcast (20)

Hazelcast 3.6 Roadmap Preview
Hazelcast 3.6 Roadmap PreviewHazelcast 3.6 Roadmap Preview
Hazelcast 3.6 Roadmap Preview
 
Time to Make the Move to In-Memory Data Grids
Time to Make the Move to In-Memory Data GridsTime to Make the Move to In-Memory Data Grids
Time to Make the Move to In-Memory Data Grids
 
The Power of the JVM: Applied Polyglot Projects with Java and JavaScript
The Power of the JVM: Applied Polyglot Projects with Java and JavaScriptThe Power of the JVM: Applied Polyglot Projects with Java and JavaScript
The Power of the JVM: Applied Polyglot Projects with Java and JavaScript
 
JCache - It's finally here
JCache -  It's finally hereJCache -  It's finally here
JCache - It's finally here
 
Speed Up Your Existing Relational Databases with Hazelcast and Speedment
Speed Up Your Existing Relational Databases with Hazelcast and SpeedmentSpeed Up Your Existing Relational Databases with Hazelcast and Speedment
Speed Up Your Existing Relational Databases with Hazelcast and Speedment
 
Shared Memory Performance: Beyond TCP/IP with Ben Cotton, JPMorgan
Shared Memory Performance: Beyond TCP/IP with Ben Cotton, JPMorganShared Memory Performance: Beyond TCP/IP with Ben Cotton, JPMorgan
Shared Memory Performance: Beyond TCP/IP with Ben Cotton, JPMorgan
 
Applying Real-time SQL Changes in your Hazelcast Data Grid
Applying Real-time SQL Changes in your Hazelcast Data GridApplying Real-time SQL Changes in your Hazelcast Data Grid
Applying Real-time SQL Changes in your Hazelcast Data Grid
 
WAN Replication: Hazelcast Enterprise Lightning Talk
WAN Replication: Hazelcast Enterprise Lightning TalkWAN Replication: Hazelcast Enterprise Lightning Talk
WAN Replication: Hazelcast Enterprise Lightning Talk
 
JAAS Security Suite: Hazelcast Enterprise Lightning Talk
JAAS Security Suite: Hazelcast Enterprise Lightning TalkJAAS Security Suite: Hazelcast Enterprise Lightning Talk
JAAS Security Suite: Hazelcast Enterprise Lightning Talk
 
Hazelcast for Terracotta Users
Hazelcast for Terracotta UsersHazelcast for Terracotta Users
Hazelcast for Terracotta Users
 
Extreme Network Performance with Hazelcast on Torusware
Extreme Network Performance with Hazelcast on ToruswareExtreme Network Performance with Hazelcast on Torusware
Extreme Network Performance with Hazelcast on Torusware
 
Big Data, Simple and Fast: Addressing the Shortcomings of Hadoop
Big Data, Simple and Fast: Addressing the Shortcomings of HadoopBig Data, Simple and Fast: Addressing the Shortcomings of Hadoop
Big Data, Simple and Fast: Addressing the Shortcomings of Hadoop
 
JAXLondon - Squeezing Performance of IMDGs
JAXLondon - Squeezing Performance of IMDGsJAXLondon - Squeezing Performance of IMDGs
JAXLondon - Squeezing Performance of IMDGs
 
OrientDB & Hazelcast: In-Memory Distributed Graph Database
 OrientDB & Hazelcast: In-Memory Distributed Graph Database OrientDB & Hazelcast: In-Memory Distributed Graph Database
OrientDB & Hazelcast: In-Memory Distributed Graph Database
 
How to Use HazelcastMQ for Flexible Messaging and More
 How to Use HazelcastMQ for Flexible Messaging and More How to Use HazelcastMQ for Flexible Messaging and More
How to Use HazelcastMQ for Flexible Messaging and More
 
Devoxx UK 2014 High Performance In-Memory Java with Open Source
Devoxx UK 2014   High Performance In-Memory Java with Open SourceDevoxx UK 2014   High Performance In-Memory Java with Open Source
Devoxx UK 2014 High Performance In-Memory Java with Open Source
 
Jfokus - Hazlecast
Jfokus - HazlecastJfokus - Hazlecast
Jfokus - Hazlecast
 
In-memory No SQL- GIDS2014
In-memory No SQL- GIDS2014In-memory No SQL- GIDS2014
In-memory No SQL- GIDS2014
 
In-memory Data Management Trends & Techniques
In-memory Data Management Trends & TechniquesIn-memory Data Management Trends & Techniques
In-memory Data Management Trends & Techniques
 
How to Speed up your Database
How to Speed up your DatabaseHow to Speed up your Database
How to Speed up your Database
 

Último

Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineeringssuserb3a23b
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 

Último (20)

Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineering
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 

JSR107 State of the Union JavaOne 2013

  • 1. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.1
  • 2. Java Caching: State of the Union Brian Oliver | Oracle Corporation Greg Luck | Terracotta
  • 3. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.3 Program Agenda §  Java Caching (JCache), JSR-107 and Caching §  JCache: More than your average Cache! §  JCache: By Example §  Available Implementations?
  • 4. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.4 The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle.
  • 5. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.5 Java Caching (JCache)
  • 6. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.6 Java Caching (JCache) §  What? –  Java Caching (JCache) is an effort to standardize 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
  • 7. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.7 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!
  • 8. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.8 Java Caching (JCache) §  Who? –  Joint Specification (LEADS) §  Greg Luck §  Brian Oliver (Oracle Corporation) –  Expert Group (EG) §  10+ companies §  8+ individuals
  • 9. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.9 Java Caching (JCache) §  When? (A Proposed Timetable) Deliverable Start Finish Public Review Ballot ✔ 27th August 2013 9th September 2013 Proposed Final Draft 30th September 2013 Completion of Reference Implementation (RI) & Technology Compatibility Kit (TCK) 31st October 2013 Appeal Ballot (7 days) 31st October 2013 7th November 2013 Updated Deliverables 7th November 2013 14th November 2013 Final Approval Ballot 14th November 2013 28th November 2013 Final Release 28th November 2013 12th December 2013
  • 10. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.10 Java Caching (JCache) §  Which Platform? JCache Deliverable Target Platform Specification (SPEC) Java 6+ (SE or EE) Reference Implementation (RI) Java 7+ (SE or EE) Technology Compatibility Kit (TCK) Java 7+ (SE or EE) Demos and Samples Java 7+ (SE or EE)
  • 11. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.11 Java Caching (JCache) –  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 Project Hosting
  • 12. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.12 Java Caching (JCache) Apache Maven: (via Maven Central Repository) <dependency> <groupId>javax.cache</groupId> <artifactId>cache-api</artifactId> <version>0.10</version> </dependency> How to get it.
  • 13. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.13 Caches and Caching
  • 14. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.14 Caches and Caching §  Cache: 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 §  When To Use Caches? –  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
  • 15. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.15 Caches and Caching §  Implications? –  Caching is not a cure all! –  Developers must know the costs (time and resources) to determine Cache effectiveness
  • 16. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.16 Caches and Caching: Maps v’s Cache APIs Maps §  Key-Value Based API §  Supports Atomic Updates §  Entries Don’t Expire §  Entries Aren’t Evicted §  Entries Stored On-Heap Caches §  Key-Value Based API §  Supports Atomic Updates §  Entries May Expire §  Entries May Be Evicted §  Entries Stored Anywhere (i.e.: topologies) §  Support Integration (through Loaders / Writers) §  Support Listeners (observer pattern) §  Entry Processors §  Statistics Caches are not Maps!
  • 17. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.17 JCache: More than your average Cache!
  • 18. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.18 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)
  • 19. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.19 JCache: Features §  Topology Agnostic –  Topologies not defined or restricted by the specification §  Efficiently supports: –  “local” in-memory Caching and –  “distributed” server-based Caching
  • 20. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.20 JCache: G’day World // acquire a previously configured cache Cache<Integer, String> cache = Caching.getCache(“my-cache”, Integer.class, String.class); // put something in the cache cache.put(123, “G’day World”); // get something from the cache String message = cache.get(123);
  • 21. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.21 API In Depth
  • 22. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.22 JCache: Cache API public interface Cache<K, V> extends Iterable<Cache.Entry<K, V>> { V get(K key); Map<K, V> getAll(Set<? extends K> keys); boolean containsKey(K key); void loadAll(Set<? extends K> keys, CompletionListener l); ... (does not extend Map!)
  • 23. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.23 JCache: Cache API void put(K key, V value); V getAndPut(K key, V value); void putAll(Map<? extends K, ? extends V> map); boolean putIfAbsent(K key, V value); boolean remove(K key); boolean remove(K key, V oldValue); V getAndRemove(K key);
  • 24. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.24 JCache: Cache API boolean replace(K key, V oldValue, V newValue); boolean replace(K key, V value); V getAndReplace(K key, V value); void removeAll(Set<? extends K> keys); void removeAll(); void clear(); Configuration<K, V> getConfiguration();
  • 25. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.25 JCache: Cache API void registerListener( CacheEntryListenerConfiguration<K, V> config); void unregisterListener( CacheEntryListenerConfiguration<K, V> config);
  • 26. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.26 JCache: Cache API <T> T invoke(K key, EntryProcessor<K, V, T> processor, Object... arguments); <T> Map<K, T> T invokeAll(Set<? Extends K> keys, EntryProcessor<K, V, T> processor, Object... arguments);
  • 27. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.27 JCache: Cache API String getName(); CacheManager getCacheManager(); }
  • 28. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.28 JCache: Cache Managers §  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 javax.cache.CacheManager
  • 29. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.29 JCache: G’day World // 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, “G’day World”); // get something from the cache String message = cache.get(123); (via a Cache Manager)
  • 30. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.30 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.. *
  • 31. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.31 JCache: Gudday World MutableConfiguration<Integer, String> config = new MutableConfiguration<Integer, String>() .setStoreByReference(true) .setCacheEntryExpiryPolicy( new AccessedExpiryPolicy(5, TimeUnit.SECONDS)); (using programmatic configuration – fluent style)
  • 32. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.32 JCache: Gudday World // acquire the default CacheManager CacheManager manager = Caching.getCacheManager(); // create cache with a custom configuration Cache<Integer, String> cache = manager.createCache(“my-cache”, config); // and perhaps later just… Cache<Integer, String> cache = manager.getCache(“my-cache”, Integer.class, String.class); (using programmatic configuration – fluent style)
  • 33. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.33 Entry Processors
  • 34. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.34 JCache: Entry Processors // 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); (custom atomic operations for everyone!)
  • 35. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.35 JCache: Entry Processors 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”); } } (custom atomic operations for everyone)
  • 36. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.36 JCache: Entry Processors §  Eliminate Round-Trips! (in distributed systems) §  Enable development of a Lock-Free API! (simplifies applications) §  *May need to be Serializable (in distributed systems) (custom atomic operations!) Cache Application Cache Application
  • 37. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.37 JCache: Entry Processors // 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”); Which is better?
  • 38. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.38 3 8 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 –  Spring 4 (2014) 38  
  • 39. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.39 3 9 Annotation Operations §  The JSR107 annotations cover the most common cache operations: § @CacheResult § @CachePut § @CacheRemove § @CacheRemoveAll 39  
  • 40. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.40 4 0 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){...} } 40  
  • 41. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.41 4 1 Specific Overrides public class DomainDao { @CachePut(cacheName="domainCache") public void updateDomain(String domainId, @CacheKey int index, @CacheValue Domain domain) { ... } } 41  
  • 42. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.42 Announcements
  • 43. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.43 Fully Compliant JCache early 2014.
  • 44. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.44 Oracle Coherence Fully Compliant JCACHE in 2014
  • 45. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.45 Graphic Section Divider
  • 46. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.46 The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle.
  • 47. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.47