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