News
25 April 2006: ehcache-1.2 released.
After 10 months of development, ehcache-1.2 is released. Thanks to all the developers who contributed to the release through feature requests, bug reports and patches during the beta program.
The 1.2 release of ehcache has many new features including:
- Flexible, extensible, high performance distributed caching. The default implementation supports cache discovery via multicast or manual configuration. Updates are delivered either asynchronously or synchronously via custom RMI connections. Additional discovery or delivery schemes can be plugged in by third parties.
- New FIFO and LFU caching policies in addition to the standard LRU.
- Introduced CacheManagerEventListener and CacheEventListener interfaces and default implementations.
- Multiple CacheManagers per virtual machine.
- Programmatic flushing of application state to persistent caches
- Significant (up to 7 fold) DiskStore performance increases.
- API for Objects in addition to Serializable. Non-serializable Objects can use all parts of ehcache except for DiskStore and replication. Two new methods on Element: getObjectValue and getKeyValue are the only API differences between the Serializable and Object APIs.
- Backward Compatibility with ehcache-1.1. All users of ehcache-1.1 should be able to upgrade to ehcache-1.2.
- Tested with Hibernate2.1.8 and Hibernate3.1.3, which can utilise all of the new features except for Object API and multiple session factories each using a different ehcache CacheManager. A new net.sf.ehcache.hibernate.EhCacheProvider makes those additional features available to Hibernate-3.1.3. A version of the new provider should make it into the Hibernate3.2 release.
- Tested with ehcache-constructs.
- Apache 2.0 license
At time of release, there are no open bugs against the ehcache-1.2. 21 bugs have been fixed in this release. Most of those were raised against the 1.2 beta releases.
See the changelog for more details on this release.
20 April 2006: Development Roadmap Updated
The roadmap for new development has been updated here.
17 April 2006: ehcache-1.2rc1 released
Released ehcache-1.2rc1 to give testers a chance to test recent fixes and fine tuning before a final release.
At this point all bugs, support requests and feature requests are closed. Final testing is focusing on the distributed caching area.
8 April 2006: Elements are no longer required to be Serializable
Following many requests, ehcache no longer requires that Elements contain Serializable keys and values. Ehcache will gracefully degrade for those operations which require Serialization.
In particular the MemoryStore and event listeners can be used with Non Serializable elements.
WARNING error messages are logged when an operation cannot be completed because the key or value is not Serializable.
28 March 2006: License changed from Apache 1.1 to Apache 2.0
The ehcache 1.2 series from beta5 is released under the Apache 2.0 license.
This is a bug fix release which fixes all reported issues in the new 1.2 features. Developers should be testing this version.
17 March 2006: New Site Redesign
Ehcache has outgrown its old web design. This new one is produced using Maven 2. Please send any feedback on the new site to the team.
14 March 2006: New Mailing List
A new mailing list, ehcache-list@lists.sourceforge.net, has been created for ehcache users and developers. Go here to subscribe or to search the archive.
7 February 2006: Whats New in 1.2
Ehcache-1.2, currently at beta 5, has many new features:
- Introduced new caching policies in addition to the standard LRU. FIFO and LFU were added. LRU remains the default unless explicitly set in each cache's configuration. Thanks to Surya Suravarapu for working with me on these. The documentation has a new section on caching policies and when to use what.
- Introduced CacheManagerEventListener and CacheEventListener interfaces and default implementations. These can be configured in ehcache.xml or set programmatically. Thanks to steve at jofti dot com for help with the specification for these.
- After requests from Jo Walnes, Paul Hammant and others, I have added normal instance constructers to CacheManager which do not act as singletons. The factory singleton methods remain for backward compatibility. CacheManager can now be constructed with a Configuration object programmatically.
- Since version 1.1, ehcache has had a persistent diskStore, which makes it suitable for storing application state. Added a flush method so that, if the cache is diskPersistent, it can be programmatically flushed, in addition to the automatic flush which happens at shutdown.
- Pluggable Distributed Caching. The default implementation supports cache discovery via multicast or manual configuration. Updates are delivered asynchronously or synchronously via custom RMI connections. Additional discovery or delivery schemes can be plugged in by third parties.
- Significant (up to 7 fold) DiskStore performance increases, after introduction of finer grained threading. Thanks to Robert Watkins for reporting on the performance limits.
- Backward Compatibility
Ehcache-1.2 is mostly backward compatible with ehcache-1.1. Ehcache-1.1 ehcache.xml configurations are compatible. There have been a few small API changes to the ehcache-1.1 API.
See the changelog for more details on the release.
This fixes most reported bugs and has fairly complete documentation.
New features over beta2 are:
- Pluggable Distributed Caching. The default implementation supports cache discovery via multicast or manual configuration. Updates are delivered asynchronously or synchronously via custom RMI connections. Additional discovery or delivery schemes can be plugged in by third parties.
- After requests from Jo Walnes, Paul Hammant and others, I have added normal instance constructers to CacheManager which do not act as singletons. The factory singleton methods remain for backward compatibility. CacheManager can now be constructed with a Configuration object programmatically.
- Significant (up to 7 fold) DiskStore performance increases, after introduction of finer grained threading. Thanks to Robert Watkins for reporting on the performance limits.
This release also contains 5 bug fixes and increased test coverage. This version has been comprehensively tested, but has limited production use.
This will be the last pre release of ehcache-1.2 which adds major features. The focus will now shift to addressing any bugs or issues raised by those using this version. Basic documentation of the new features has been completed. Work will also continue on providing configuration and coding examples to use em. Please promptly report any bugs found.
New features over beta1 are:
- Introduced CacheManagerEventListener and CacheEventListener interfaces and default implementations. These can be configured in ehcache.xml or set programmatically. Thanks to steve at jofti dot com for help with the specification for these.
- Added normal instance constructers to CacheManager which do not act as singletons. The factory singleton methods remain for backward compatibility. CacheManager can now be constructed with a Configuration object programmatically.
- ehcache has a persistent diskStore, which makes it suitable for storing application state. Added a flush method so that, if the cache is diskPersistent, it can be programmatically flushed, in addition to the automatic flush which happens at shutdown.
This release also contains 5 bug fixes and increased test coverage.
This version has been comprehensively tested, but has limited production use. It is recommended for development usage and testing.
28 August 2005 Announcing ehcache-1.2 beta 1.
New in this version are two new cache eviction policies: Less Frequently Used (LFU) and First In First Out (FIFO). There are also a few minor bug fixes. Thanks to Surya Suravarapu for work on these new policies.
This version of ehcache should be backwardly compatible with ehcache 1.1 except for a dependency on commons-collections 3.1, up from version 2.1. This version has been comprehensively tested, but has limited production use. It is recommended for development usage only.
A subproject of ehcache, ehcache-constructs builds on top of ehcache to create implementations for common caching patterns. All implementations use ehcache as the backing cache. They also share a common purpose - to create very high performance Java applications. New in this version is a fault-tolerant AsynchronousCommandExecutor, which will asynchronously execute arbitrary commands, optionally retrying on a defined array of Exception types a defined number of times at a defined interval.
23 November 2004 ehcache 1.1 released.
This version splits out the constructs package into a separate sub-project. This simplifies ehcache for those using it in Hibernate or directly. It also moves the constructs to a separate jar and release cycle. There is only 1 minor bug fix but then there was only one bug reported.
See the release notes and full changelog here.
A subproject of ehcache, ehcache-constructs builds on top of ehcache to create implementations for common caching patterns. All implementations use ehcache as the backing cache. They also share a common purpose - to create very high performance Java applications.
At present ehcache-constructs contains:
- General Purpose Caching
- BlockingCache - a cache which blocks subsequent threads until the first read thread populates a cache entry * SelfPopulatingCache - a read-through cache. A cache that populates elements as they are requested without requiring the caller to know how the entries are populated. It also enables refreshes of cache entries without blocking reads on the same entries.
- UpdatingSelfPopulatingCache - a read-through cache. A cache that populates elements as they are requested without requiring the caller to know how the entries are populated. The cache entry is automatically updated on subsequent reads.
- SelfPopulatingCollectionsCache - a SelfPopulatingCache that adds threading safety where it is known in advance that all entries will be collections.
- Web Caching
Servlet 2.3 caching filters that cache HTTP/S responses:
- CachingFilter - an abstract, extensible caching filter.
- SimplePageCachingFilter - a concrete implementation which caches pages based on the request URI and Query String.
- SimplePageFragmentCachingFilter - a concrete implementation which caches page fragments based on the request URI and Query String.
See the ehcache-constructs subsite for and overview, documentation, javadoc, clover test coverage and more.
This is a major milestone for ehcache - the 1.0 release. It has several bug fixes and a few important new features. They are:
- Added SelfPopulatingCacheManager to the constructs package.
- Added a new diskExpiryThreadIntervalSeconds configuration option to ehcache.xml, to allow tuning of the expiry thread per cache.
- Added a new persistent option for the DiskStore. When enabled, diskPersistent makes Caches persistent between JVM restarts. It enables very long held caches to be configured, useful for very expensive and/or long lived cache entries.
- Improved code coverage. See clover coverage report.
- New checkstyle rules, using checkstyle 3.4. Many additional checks have been added and code cleanups done to make ehcache more standards compliant and understandable than ever.
See the release notes and full changelog here.
This is a large release. It fixes several bugs and adds many new features including:
- ehcache.xml cache definitions can now omit timeToIdle and/or timeToLive, which have been made optional attributes. This will make cache config easier to read for eternal caches. Either omitting the attributes or setting them to 0 causes them not to be considered when calculating expiry. Earlier versions of ehcache would have immediately expired all elements if either attribute was set to 0, so this change should not break any existing code.
- Added getQuiet and putQuiet methods to Cache. These methods are the same as get and put but do not affect statistics.
- Implemented an Element clone method.
- Added calculateInMemorySize() method to Cache to measure the approximate size of a cache's memory footprint.
- Added a new constructs package.
Blocking, self populating and self populating collections cache implementations are provided. They are useful where the cost of creating a cache entry is high, and you want to make request threads block until the first one creates the entry. While new to ehcache, the package is based on code that has been in production for almost a year, and is now ready for a wider audience.
See the release notes and full changelog here.
Changes include:
- Fix to a rare null pointer exception.
- Added Clover test coverage. Many thanks to cortex for the free license. Note that Clover is not included in the packaged binary code and no license is required to use EHCache. It is a development tool only.
- Modifed some errors in the Apache license to enable its inclusion in the Apache Cocoon project.
11 Dec 2003 EHCache is made the recommended process cache for Hibernate 2.1
Now supports JDK1.2 and JDK1.3 as well as JKD1.4