Abstract
Dynamic linking supports flexible code deployment: partially linked code links further code on the fly, as needed; and thus, end-users receive updates automatically. On the down side, each program run may link different versions of the same code, possibly causing subtle errors which 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 a different order.
We develop a non-deterministic model, which includes the behaviour of Java and C#. 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 in the sense that all terminating executions which do not involve a link error, give the same result.
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
Work partly supported by DART, EU project IST-2001-33477
Download to read the full chapter text
Chapter PDF
Similar content being viewed by others
References
Davide Ancona and Elena Zucca. A calculus of module systems. Journal Functional Programming, 12(3):91–132, 2002.
Luca Cardelli. Program Fragments, Linking, and Modularization. In POPL’97 Proceedings, January 1997.
Mikhail Dimitriev. Hotspot Technology Application forAdvanced Profiling. In ECOOP USE Workhop, June 2002.
Sophia Drossopoulou. An Abstract model of Java dynamic Linking and Loading. In Robert Harper, editor, Types in Compilation, Third InternationalWorkshop, Revised Selected Papers. Springer, 2001.
Sophia Drossopoulou, Susan Eisenbach, and David Wragg. A Fragment Calculus-towards a model of Separate Compilation, Linking and Binary Compatibility. In LICS Proceedings, 1999.
Dominic Duggan. Sharing in Typed ModuleAssembly Language. In Preliminary Proceedings of the ThirdWorkshop on Types in Compilation (TIC 2000). Carnegie Mellon, CMU-CS-00-161, 2000.
G. Fenton and E. Felton. Securing Java Getting Down to Business with Mobile Code. John Wiley and Sons, 1999.
Kathleen Fisher, John Reppy, and Jon Riecke. A Calculus for Compiling and Linking Classes. In ESOP Proceedings, March 2000.
Ira Forman, Michael Conner, Scott Danforth, and Larry Raper. Release-to-Release Binary Compatibility in SOM. In OOPSLA Proceedings, October 1995.
Stephen N. Freund and J. C. Mitchell. A Formal Framework for the Java Bytecode Language and Verifier. In OOPSLA Proceeedings, November 1999.
Stephen N. Freund and J. C. Mitchell. A Type System for Object Initialization in the Java Bytecode Language. In OOPSLA Proceeedings, October 1998.
Andrew Gordon and Don Syme. Typing a multi-language intermediate code. In Principles of programming Languages 2001, pages 248–260. ACM Press, 2001.
Michael Hicks, Jonathan T. Moore, and Scott Nettles. Dynamic Software Updating. In Programming Language Design and Implementation. ACM, 2001.
Thomas Jensen, Daniel Le Metyayer, and Tommy Thorn. A Formalization of Visibility and Dynamic Loading in Java. In IEEE ICCL, 1998.
V. Jurisic. Deja-vu. NET: A Framework for Evolution of Component Based Systems. http://www.doc.ic.ac.uk/~ajf/Teaching/Projects/DistProjects.html, June 2002.
Sheng Liang and Gilad Bracha. Dynamic Class Loading in the JavaTM Virtual Machine. In OOPSLA Proceedings, October 1998.
Tim Lindholm and Frank Yellin. The Java Virtual Machine. Addison-Wesley, 1999.
M. Pietrek. Avoiding DLL Hell: Introducing Application Metadata in the Microsoft. NET Framework. In MSDN Magazine, http://dn.microsoft.com/, October 2000.
S. Pratschner. Simplifying Deployment and Solving DLL Hell with the. NET Framework. http://dn.microsoft.com/, November 2001.
Zhenyu Qian, Allen Goldberg, and Alessandro Coglio. A Formal Specification of JavaTM Class Loading. In OOPSLA’2000, November 2000.
C. Sadler S. Eisenbach and S. Shaikh. Evolution of Distributed Java Programs. In IEEE Working Conf on Component Deployment, June 2002.
Vijay Saraswat. Java is not type-safe. Technical report, AT&T Rresearch, 1997. http://www.research.att.comp/r~vj/bug.html.
Raymie Stata and Martin Abadi. A Type System For Java Bytecode Subroutines. In POPL’98 Proceedings, January 1998.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Drossopoulou, S., Lagorio, G., Eisenbach, S. (2003). Flexible Models for Dynamic Linking. In: Degano, P. (eds) Programming Languages and Systems. ESOP 2003. Lecture Notes in Computer Science, vol 2618. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-36575-3_4
Download citation
DOI: https://doi.org/10.1007/3-540-36575-3_4
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-00886-6
Online ISBN: 978-3-540-36575-4
eBook Packages: Springer Book Archive