Hi,
I'm the author of CLHM, brought to you by a friendly Google alert. :)

If Cayenne is currently using Guava, then there won't be a dependency increase. 
I helped rearchitect MapMaker and design its replacement, CacheBuilder, which 
are based on CLHM's algorithms. This is a more feature-rich implementation with 
the support of a team at Google (whereas CLHM is my weekend project). We also 
fixed my mistake of only weighing by value, since I hadn't realized how popular 
memory-based weighing would be (I was trying to avoid unbounded collections as 
values).

Technically CLHM provides more concurrency than CacheBuilder by not relying on 
segment locks and later using a lock-free ring buffer. These will be an 
advantage when it is backed by JDK8's new CHM (see ConcurrentHashMapV8) or 
Cliff Click's NBHM. A JSR-166 implementation will be a marriage of CHMv8, CLHM, 
and CacheBuilder.

CLHM is back-ported to JDK5 on every release, so you'll find the JDK5 source 
under /tags. I do development on /trunk assuming JDK6.

Feel free to file issues against CLHM (or Guava) if you'd like enhancements to 
either. Both are used in large production environments.

Cheers,
Ben

Reply via email to