The Java Versioned Software Transactional Memory (JVSTM) is a pure Java library implementing an STM. JVSTM introduces the concept of versioned boxes, which are transactional locations that may be read and written during transactions, much in the same way of other STMs, except that they keep the history of values written to them by any committed transaction.
[TMC_11] Profiling and tuning the performance of an STM-based concurrent program. Luís Pina and João Cachopo. In Proceedings of the Workshop on Transitioning to Multicore (TMC), October, 2011.