Computing Publications

Publications Home » A flexible model for dynamic link...

A flexible model for dynamic linking in Java and C#

Sophia Drossopoulou, Giovanni Lagorio, Susan Eisenbach

Journal Article
Theoretical Computer Science
Volume 368
Issue 1
December, 2006
DOI 10.1016/j.tcs.2006.02.021

Dynamic linking supports flexible code deployment, allowing partially linked code to link further code on the fly, as needed. Thus, end-users enjoy the advantage of automatically receiving any updates, without any need for any explicit actions on their side, such as re-compilation, or re-linking. On the down side, two executions of a program may link in different versions of code, which in some cases causes subtle errors, and may mystify end-users.

Dynamic linking in Java and C# are similar: the same linking phases are involved, soundness is based on similar ideas, and executions which do not throw linking errors give the same result. They are, however, not identical: the linking phases are combined differently, and take place in different order. Consequently, linking errors may be detected at different times by Java and C# runtime systems.

We develop a non-deterministic model, which describes the behaviour of both Java and C# program executions. The non-determinism allows us to describe the design space, to distill the similarities between the two languages, and to use one proof of soundness for both. We also prove that all execution strategies are equivalent with respect to terminating executions that do not throw link errors: they give the same results.

Compilation and Dynamic Linking
Distributed Software Engineering
PDF of full publication (719 kilobytes)
(need help viewing PDF files?)
BibTEX file for the publication
Conditions for downloading publications from this site. built & maintained by Ashok Argent-Katwala.