Recent years have witnessed a rapid increase in the use of personal information devices such as Palms or smart phones, with
some people carrying more than one. Moreover, these devices need to work in disconnected mode and vary widely in their features.
How does one provide an information-centric experience, across devices, for the end user? The goal of the Bali project is
to provide a run-time platform that improves application portability and adaptability across devices. Bali addresses these
issues through a minimal, easily deployable Java Runtime Environment, and a JavaBean-based application model. Beans transparently
persist and are the units of replication. Bali provides semi-automated replication where applications only deal with the resolution
of conflicting updates across devices. Code deployment is fully automated and coordinated with replication. Bali supports
a powerful linking framework between beans allowing hyper-linking applications to be easily developed, even in the presence
of cross-device replica. Bali fosters programmers’ productivity through transparent object management and leverages a model-view-controller
architecture enabling applications to adapt to device features as well as increasing code reuse. This paper describes the
Bali application model, the minimal JRE, our partially implemented prototype as well as preliminary experience.