Orthogonal persistence is based on three principles that have been understood for nearly 20 years. PJama is a publically available
prototype of a Java platform that supports orthogonal persistence. It is already capable of supporting substantial applications.
The experience of applying the principles of orthogonal persistence to the Java programming language is described in the context
of PJama. For example, issues arise over achieving orthogonality when there are classes that have a special relationship with
the Java Virtual Machine. The treatment of static variables and the definition of reachability for classes and the handling
of the keyword transient also pose design problems. The model for checkpointing the state of a computation, including live threads, is analyzed and
related to a transactional approach. The problem of dealing with state that is external to the PJama environment is explained
and the solutions outlined. The difficult problem of system evolution is identified as a major barrier to deploying orthogonal
persistence for the Java language.
The predominant focus is on semantic issues, but with concern for reasonably efficient implementation. We take the opportunity
throughout the paper and in the conclusions to identify directions for further work.
Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United
States and other countries.