Hazelcast is a clustering and highly scalable data distribution platform for Java.
Features:
Distributed implementations of java.util.{Queue, Set, List, Map} Distributed implementation of java.util.concurrency.locks.Lock Distributed implementation of java.util.concurrent.ExecutorService Distributed MultiMap for one-to-many relationships Distributed Topic for publish/subscribe messaging Transaction support and J2EE container integration via JCA Socket level encryption support for secure clusters Synchronous (write-through) and asynchronous (write-behind) persistence Second level cache provider for Hibernate Monitoring and management of the cluster via JMX Dynamic HTTP session clustering Support for cluster info and membership events Dynamic discovery Dynamic scaling Dynamic partitioning with backups Dynamic fail-over
Hazelcast is for you if you want to
share data/state among many servers (e.g. web session sharing) cache your data (distributed cache) for better performance cluster your application provide secure communication among servers partition your in-memory data send/receive messages among applications distribute workload onto many servers take advantage of parallel processing provide fail-safe data management
Hazelcast is pure Java. JVMs that are running Hazelcast will dynamically cluster. Although by default Hazelcast will use multicast for discovery, it can also be configured to only use TCP/IP for enviroments where multicast is not available or preferred. Communication among cluster members is always TCP/IP with Java NIO beauty. Default configuration comes with 1 backup so if one node fails, no data will be lost. It is as simple as using java.util.{Queue, Set, List, Map}. Just add the hazelcast.jar into your classpath and start coding.
A test application comes with the Hazelcast distribution that simulates the queue, set, map and lock APIs. You may want to watch the following 12 minute screencast to quickly get started.