Are there any open source alternatives to oracle coherence?
(btw, how much does coherence cost anyways?)
Are there any open source alternatives to oracle coherence?
(btw, how much does coherence cost anyways?)
EhCache provides a decent replicated cache but has nowhere near the feature set Coherence provides.
Hazelcast is an open source, transactional, distributed caching solution for Java. It is released under Apache license.
Hazelcast is actually a little more than a distributed cache; it is distributed implementation of queue, topic, map, multimap, lock, executor service for Java.
Infinispan is looking promising.
JBoss Cache and EHCache are decent clustered cache solutions. But none of them have all the features and a nice admin console like Tangosol Oracle Coherence which is indeed the most advanced product in this category. For the price, there is a "Buy Now" button on the right of the Oracle Coherence web page.
Memcached is also an great open source alternative that is used by a lot of high-profile & high-traffic/volume apps.
Project Voldemort is great (free) alternative to coherence.
Guava Libraries
Looks promising as Google used them in their own products
I have been watching for a good alternative also. The closest overall in features I have found are Terracotta and Redis but it would be helpful to know what aspects of Coherence are important to your project.
I have been investigating open source distributed caches and have focused on EHCahe and JBoss Pojo Cache.
They are both decent products, however the deal breaker is that my use case requires me to distribute an object graph and maintain shared references on all my nodes. EHCache cannot handle this. It uses standard java serialisation, and as such, shared references are lost.
e.g. if I have manager/employee object hierarchy, i want a single 'manager' object on all my nodes, with references to their employees. With EHCache, I dont get this, as the java serialiser copies all dependent objects. With JBoss Pojo Cache, my object graph is preserved.
The downside is that JBoss needs to instrument your classes (the primitives that make up your object graph are stored in a tree structure behind the scenes). This can cause some issues when running in an OSGi environment.
JBoss uses JGroups as its communication stack, you can choose between multicast or TCP/IP to manage communication between the nodes.
Hope this helps.
Check for "Berkeley DB" which is a open source and works same as Coherence