SDI Seminar

Speaker: Scott Nettles, University of Pennsylvania

Transactions for Java

Date: August 8, 1996

Abstract: I will discuss the design and implementation of support for transactions and general-purpose persistence for Java. Using our extensions Java programmers can manipulate any Java object transactionally; any changes made to these objects are made resilient to machine failure when a transaction commits. These extensions allow Java to be used directly in applications that demand high reliability; for example, network-based banking. These additions extend Java's current emphasis on safety and reliability to the safe and consistent management of permanent state.

We have made changes to Java at both the level of the language design and throughout the Java implementation. Our additions take the form of syntactic extensions for transactions and runtime system support for durability and atomicity. The ability to make any object persistent is a key aspect of the design and we provide orthogonal persistence and persistence-by-reachability.

The results of running a simple transaction processing benchmark on our prototype shows that it can attain 41 TPS, just under half the maximum possible given the disks in use. Furthermore, our results suggest several avenues for improvement and it seem feasible to achieve transaction rates that are very close to the limits of our disks.

If time permits, I will also discuss our (very) preliminary work on concurrent garbage collection for Transactional Java.

* Joint work with Alex Garthwaite