8.4. Comparing java.util.concurrent.ConcurrentMap and javax.cache.Cache APIs
Here is a brief comparison of the data manipulation APIs provided by java.util.concurrent.ConcurrentMap and javax.cache.Cache APIs:
| Operation |
|
|
|---|---|---|
| store and no return | N/A |
|
| store and return previous value |
|
|
| store if not present |
|
|
| retrieve |
|
|
| delete if present |
|
|
| delete and return previous value |
|
|
| delete conditional |
|
|
| replace if present |
|
|
| replace and return previous value |
|
|
| replace conditional |
|
|
Comparing the two APIs it can be seen that, where possible, JCache avoids returning the previous value to avoid operations doing expensive network or IO operations. This is an overriding principle in the design of the JCache API. In fact, there is a set of operations that are present in java.util.concurrent.ConcurrentMap, but are not present in the javax.cache.Cache because they could be expensive to compute in a distributed cache. The only exception is iterating over the contents of the cache:
| Operation |
|
|
|---|---|---|
| calculate size of cache |
| N/A |
| return all keys in the cache |
| N/A |
| return all values in the cache |
| N/A |
| return all entries in the cache |
| N/A |
| iterate over the cache | use iterator() method on keySet, values, or entrySet |
|