[ https://issues.apache.org/jira/browse/OFBIZ-6747?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16507108#comment-16507108 ]
Ben Manes commented on OFBIZ-6747: ---------------------------------- The two libraries do share a compatible interface via {{ConcurrentMap}}. That is the interface for {{ConcurrentLinkedHashMap}} and provided by Caffeine's {{Cache.asMap()}} view. You are welcome to abstract out caching as you see fit, as neither are invasive (e.g. no singleton {{CacheManager}} or configuration files - those are for applications to introduce and manage). {{ConcurrentLinkedHashMap}} was written for Java 5, so it does not provide atomic versions of the new default methods such as {{computeIfAbsent}}. I believe that the copy embedded by Groovy did add this, if you want to follow their example. The library is tiny, so many brought it under their own umbrella to avoid external dependencies (e.g. another example is SQL Server's JDBC driver). Unfortunately most other caching libraries do no support {{ConcurrentMap}}, so bridging them might be difficult. You may instead prefer to have a custom {{Cache}} interface with only the methods your project finds useful to minimize the effort. Another option is {{JSR107 JCache}} but be warned that it is riddled with problems, highly flawed, and results in a very frustrating developer experience. While the JSR was approved, it was rejected by JavaEE (both EE7 and EE8) and not widely adopted by consuming frameworks / applications. > Replace ConcurrentLinkedHashMap by Caffeine > ------------------------------------------- > > Key: OFBIZ-6747 > URL: https://issues.apache.org/jira/browse/OFBIZ-6747 > Project: OFBiz > Issue Type: Task > Reporter: Ben Manes > Assignee: Jacques Le Roux > Priority: Minor > > Similar to OFBIZ-3779, please consider upgrading the library used by > [UtilCache|https://github.com/apache/ofbiz/blob/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java] > (v1.2). The current version is 1.4.2 and is the last major release planned. > The preferable alternative would be to upgrade to > [Caffeine|https://github.com/ben-manes/caffeine]. This is a Java 8 rewrite > based on what I've learned since developing CLHM and Guava's cache. As > expected it provides [superior > performance|https://github.com/ben-manes/caffeine/wiki/Benchmarks]. It also > provides a [near > optimal|https://github.com/ben-manes/caffeine/wiki/Efficiency] eviction > policy. -- This message was sent by Atlassian JIRA (v7.6.3#76005)