Sophia Drossopoulou and Susan Eisenbach

Flexible, source level dynamic linking and re-linking

In ECOOP 2003 Workshop on Formal Techniques for Java Programs, 2003


Dynamic linking was introduced into programming languages to support implicit linking of the newest version of libraries. Partially linked code links further code on the fly, as needed, and thus, most recent updates are automatically available to end-users, without the requirement of further compilations or re-linking. The remit has recently been extended, to support requirements from unanticipated software evolution, whereby code may need to be updated during program execution. To address such requirements, new features of the JVM allow the replacement of a class by a class of the same signature, as a ``fix-and-continue'' feature dynamic software updates support type safe dynamic reloading of code whose type may have changed, while the system is running. We present the semantics for a high level language similar to Java or C# In contrast to earlier formalizations of dynamic linking our model is purely at source language level. Namely, although dynamic linking is usually described at a ``low level'' in terms of generated *.class files, its effects are visible to the source language programmer.This is why, in our view, an explanation at source language level is very important. In order to simplify the exposition, we do not deal with overloading or field shadowing. In more detail, the model we suggest allows dynamic linking at a very fine grain: (1) Method signatures may be loaded before verification of their corresponding bodies, (2) Method bodies need be verified only before execution (3) Classes may be loaded before their fields/methods, (4) Classes, methods and fields may be loaded ``piecemeal'', (5) Classes, methods, and fields may be removed, if not needed, (6) Method bodies may be replaced.


[ bib | .pdf ]

Back


This file has been generated by bibtex2html 1.43