*Result*: Exploiting Reflection to Add Persistence and Query Optimization to a Statically Typed Object-Oriented Language

Title:
Exploiting Reflection to Add Persistence and Query Optimization to a Statically Typed Object-Oriented Language
Contributors:
The Pennsylvania State University CiteSeerX Archives
Collection:
CiteSeerX
Document Type:
*Academic Journal* text
File Description:
application/pdf
Language:
English
Rights:
Metadata may be used without restrictions as long as the oai identifier remains attached to it.
Accession Number:
edsbas.BBED9386
Database:
BASE

*Further Information*

*It is popular and appealing to design and construct a persistent programming language by extending the semantics of a non-persistent language appropriately and then modifying its compiler and run-time system to implement the extended semantics. We describe here how to achieve this, and furthermore, how to support query optimization, which is typically neglected in persistent programming language implementations, through judicious exploitation of reflection. Significantly, we avoid modifying the structure of the source language or its compiler in any way, and minimize and localize the modifications to the run-time system. We work in the context of the Java programming language, and conclude that the key features required in our approach are: a typed intermediate representation (as provided by Java class files), reflection supporting code inspection (an extension to the standard Java virtual machine), and dynamic loading of code generated at run-time. We also require virtual machine extensions to support read and write barriers and to trigger our reflective optimization and code generation. Further, we argue that optimization at the reflective level can remove much of the overhead of the read and write barriers.*