Automatic Persistent Memory Management for the Spotless Java Virtual Machine on the Palm Connected Organizer

Palm organizers are widely used in a multi-tasking fashion. Users switch from one application to another without losing the context established in either of them. Despite its obvious usefulness there is no automatic support for this convenience in the organizer's operating system, PalmOS. Programmers must implement event callbacks that use the PalmOS database API to save and reload specific application state. In this report we describe how this burden can be eliminated. We enhanced the Spotless JavaTM virtual machine for the Palm organizer with transparent multi-tasking support that automates persistence. As a consequence, running Java programs can be transfered between two Palm organizers using the infra-red link. A transfered program will resume on the receiving organizer in the exact same state as it had on the sender. In addition, a HotSync operation can effectively be used to establish a checkpoint for each Java program involved. Originally, the address range available for running programs was restricted to a few tens of KB in the dynamic RAM area. By directly addressing the much larger static RAM area our modified VM supports address ranges of several MB. We provide an easy-to-use protocol that leverages persistent threads for automatic life cycle control of external resources (e.g. windows, forms and databases). When applied at the library level, this protocol maintains complete persistence transparency for the application programmer.