Caches are a standard technique for increasing performance when transferring
data. Caches are widely deployed in both, hardware (CPU, disks, etc), and
software.
Our series on software caches in Java application servers
will introduce current implementations
(Ehcache, Hazelcast,
Infinispan),
and to point out their specific strengths and weaknesses.
Before we start examining the specific implementations, we finish our introduction
with an overview and categorization of related work and Big Data solutions:
The remainder of our series is structured as follows:
Part 01 introduces an example application,
using the Cache as a stand-alone, temporary data store for user events.
The example application is introduced together with a ConcurrentMap-based reference
implementation, and will subsequently be refactored to using Caches in the following parts.
There are a lot of more advanced applications for caches in Java server environments,
some of them are listed in JSR 107:
Our starting point is a simple, stand-alone example for an handmade cache used for logging
user based events:
Part 02 shows the basic implementation of local caches,
as defined in JSR 107.
Subsequently, the example application is implemented using the three
respective caches: Ehcache,
Hazelcast, and
Infinispan.
Part 03 introduces
peer-to-peer clustering as a way to share a
virtual cache among multiple application server
instances.
As it turns out, there are fundamental differences in the way peer-to-peer
clustering is implemented in Ehcache,
Hazelcast, and
Infinispan.
Part 04 shows how a stand-alone cache
cluster can be implemented. The implementation is reviewed for
Ehcache,
Hazelcast, and
Infinispan.
Our series concludes with an overview of some advanced topics,
like deployments as a second level database cache, or a non-standard feature
comparison matrix.
The next page gives an overview of related work and Big Data solutions: