Treffer: Exploiting Reflection to Add Persistence and Query Optimization to a Statically Typed Object-Oriented Language
Weitere Informationen
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 exte.