Transactions for Java

  • Authors:
  • Alex Garthwaite;Scott Nettles

  • Affiliations:
  • -;-

  • Venue:
  • ICCL '98 Proceedings of the 1998 International Conference on Computer Languages
  • Year:
  • 1998

Quantified Score

Hi-index 0.00

Visualization

Abstract

Jest is a Java VM extended to support transactions and general-purpose persistence. Jest allows Java programmers to manipulate any object using transactions and provides resilience to machine failure for these objects. Jest extends Java's current emphasis on safety and reliability to the safe and consistent management of permanent state.Our additions include syntax for transactions and runtime support for durability and atomicity. General-purpose persistence---the ability to make arbitrary kinds of objects persistent---is a key aspect of the design. We provide orthogonal persistence in which any object can be made persistent without regard to type. We do this using persistence-by-reach_ability, in which an object becomes persistent if it is reachable from a special persistent root.An important aim of our implementation is to explore the techniques and tradeoffs that arise when implementing persistence in a runtime system based on mark-and-compact collection. Having previously studied designs based on copying collection, this work allows us to explore additional parts of the persistence design space. Details of the implementation are provided in the paper.We have tested Jest on a debit-credit benchmark derived from TPC-B. Our system achieves a rate of 83 TPS, very close to the limits allowed by our disk and underlying logging system. Tests of the Java compiler compiling itself both with and without our extensions, suggest that, for applications that do not use transactions, our extensions result in a slowdown of about 7% compared to the original Java implementation. We suggest several possible ways of improving this result.