I have been very busy the last few months getting JSR107 fired up.
Just to remind you JSR 107 is the Java Temporary Caching API. It is designed to be vendor neutral and will allow for easy change over of implementations in much the same way as JPA or JDBC. In this way it will allow the community to choose the best open source or commercial implementation that best meets their business requirements.
Both Terracotta and Oracle have committed resources to getting this done. Right now that is myself and Yannis Cosmadopoulos from Oracle. Things are moving fast so I thought I would give a status update on where we are at.
JSR107 Early Draft Working Specification Available for Viewing
Work has been going steadily on the spec.
We are drafting this spec in the open on Google Docs. While a work in progress, it is now around 40 pages in length.
Please keep checking back as this is changing on a daily basis.
We welcome ideas and feedback. Please join the JSR107 public mailing list to do so.
Summary of Scope
The specification covers the following areas:
Object Cache The API will cache objects. Classes that implement Serializable may be stored outside the JVM and potentially shared among JVMs connected by a network but Serializable will not be required.
Format independence The API will specify keys and values but will not limit their types.
Implementation independence The underlying implementation is hidden from API users. An SPI is used to configure a Cache Provider.
Support for Flexible Implementations Though the specification does not require any implementation and a simple in-process implementation will meet the specification, issues raised by distributed caching and storage in Serialized form outside the heap will be dealt with so that those implementations with those features will work well.
Java SE The specification will work with Java SE.
Java EE The specification will work within Java EE. This specification is targeted at inclusion in Java EE 7.
Generics The specification will make use of generic interfaces.
Annotations The specification will define runtime cache annotations.
Declarative Cache Configuration Specifying the behaviour of the CacheManager or Caches in a non-programmatic way. This may take the form of a minimal lowest common denominator with vendor specific further configuration, or it might take the form of a variety of mechansims to inject vendor configuration.
Transactions Support for transactions, both local and XA will be defined but left as optional for implementers
There are many applied areas of caching. This specification will not deal with them. For example:
• Database Caching. JPA deals with that.
• Servlet Caching
• Caching as a REST service
I am pleased to report that we have a very healthy membership. We reconfirmed the membership, added new members with expertise and also added as observers the leads from JSR342 Java EE7.
The following are active expert group members:
- Greg Luck, Terracotta and co-spec lead
- Cameron Purdy, Oracle and co-spec lead
- Nikita Ivanov, Grid Gain
• Manik Surtani, Red Hat Middleware LLC
• Yannis Cosmadopolous, Oracle and working on the spec for Oracle
• Chris Berry
• Andy Piper (formerly BEA Systems rep)
• Jon Stevens
The following have been voted in they are moving through the JCP process:
• Eric Dalquist
• Ben Cotton, Citigroup
• David Mossakowski, Citigroup
The following are members of JSR342 and are observers of JSR107 (they get the expert group mails):
• Linda Demichiel, Oracle
• Roberto Chinnici, Oracle
Similar to the specification we are also coding up the API in public with repositories on GitHub.
Ehcache via the ehcache-jcache module has provided an implementation of the draft spec to where it got to, for the past 3 years. We have now moved it to GitHub and will develop it along with the spec. If anyone wants to help out please send me your GitHub id.
Public Mailing List
If you want to stay in touch with JSR107, please join our Google Groups public mailing list: http://groups.google.com/group/jsr107
The address is: email@example.com
We copy most expert group emails to this list.