MetaBETA
Model and Implementation

René Wenzel Schmidt
Department of Computer Science
University of Aarhus
DK-8000 Aarhus C, Denmark
email: rws@cs.au.dk

Abstract

Object-oriented programming languages are excellent for expressing abstractions in many application domains. The object-oriented programming methodology allows real-world concepts to modelled in an easy and direct fashion and it supports refinement of concepts. However, many object-oriented languages and their implementations fall short in two areas: dynamic extensibility and reflection.

Dynamic extensibility is the ability to incorporate new classes into an application at runtime. Reflection makes it possible for a language to extend its own domain, e.g., to built type-orthogonal functionality. MetaBETA is an extension of the BETA language that supports dynamic extensibility and reflection. MetaBETA has has a metalevel interface that provides access to the state of a running application and to the default implementation of language primitives.

This report presents the model behind MetaBETA. In particular, we discuss the execution model of a MetaBETA program and how type-orthogonal abstractions can be built. This includes presentation of dynamic slots, a mechanism that makes is possible extend objects at runtime. The other main area covered in this report is the implementation of MetaBETA. The central component of the architecture is a runtime system, which is viewed as a virtual machine whose baselevel interface implements the functionality needed by the programming language.

Click here to retrieve the whole document in PostScript (42 pages, 759Kb).


René W. Schmidt <rws@cs.au.dk>