Flexible Models for Dynamic Linking
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.
KeywordsGlobal Context Flexible Model Program Extension Dynamic Link Link Error
- 2.Luca Cardelli. Program Fragments, Linking, and Modularization. In POPL’97 Proceedings, January 1997.Google Scholar
- 3.Mikhail Dimitriev. Hotspot Technology Application forAdvanced Profiling. In ECOOP USE Workhop, June 2002.Google Scholar
- 4.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.Google Scholar
- 5.Sophia Drossopoulou, Susan Eisenbach, and David Wragg. A Fragment Calculus-towards a model of Separate Compilation, Linking and Binary Compatibility. In LICS Proceedings, 1999.Google Scholar
- 6.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.Google Scholar
- 7.G. Fenton and E. Felton. Securing Java Getting Down to Business with Mobile Code. John Wiley and Sons, 1999.Google Scholar
- 8.Kathleen Fisher, John Reppy, and Jon Riecke. A Calculus for Compiling and Linking Classes. In ESOP Proceedings, March 2000.Google Scholar
- 9.Ira Forman, Michael Conner, Scott Danforth, and Larry Raper. Release-to-Release Binary Compatibility in SOM. In OOPSLA Proceedings, October 1995.Google Scholar
- 10.Stephen N. Freund and J. C. Mitchell. A Formal Framework for the Java Bytecode Language and Verifier. In OOPSLA Proceeedings, November 1999.Google Scholar
- 11.Stephen N. Freund and J. C. Mitchell. A Type System for Object Initialization in the Java Bytecode Language. In OOPSLA Proceeedings, October 1998.Google Scholar
- 12.Andrew Gordon and Don Syme. Typing a multi-language intermediate code. In Principles of programming Languages 2001, pages 248–260. ACM Press, 2001.Google Scholar
- 13.Michael Hicks, Jonathan T. Moore, and Scott Nettles. Dynamic Software Updating. In Programming Language Design and Implementation. ACM, 2001.Google Scholar
- 14.Thomas Jensen, Daniel Le Metyayer, and Tommy Thorn. A Formalization of Visibility and Dynamic Loading in Java. In IEEE ICCL, 1998.Google Scholar
- 15.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.
- 16.Sheng Liang and Gilad Bracha. Dynamic Class Loading in the JavaTM Virtual Machine. In OOPSLA Proceedings, October 1998.Google Scholar
- 17.Tim Lindholm and Frank Yellin. The Java Virtual Machine. Addison-Wesley, 1999.Google Scholar
- 19.M. Pietrek. Avoiding DLL Hell: Introducing Application Metadata in the Microsoft. NET Framework. In MSDN Magazine, http://dn.microsoft.com/, October 2000.
- 20.S. Pratschner. Simplifying Deployment and Solving DLL Hell with the. NET Framework. http://dn.microsoft.com/, November 2001.
- 21.Zhenyu Qian, Allen Goldberg, and Alessandro Coglio. A Formal Specification of JavaTM Class Loading. In OOPSLA’2000, November 2000.Google Scholar
- 22.C. Sadler S. Eisenbach and S. Shaikh. Evolution of Distributed Java Programs. In IEEE Working Conf on Component Deployment, June 2002.Google Scholar
- 23.Vijay Saraswat. Java is not type-safe. Technical report, AT&T Rresearch, 1997. http://www.research.att.comp/r~vj/bug.html.
- 24.Raymie Stata and Martin Abadi. A Type System For Java Bytecode Subroutines. In POPL’98 Proceedings, January 1998.Google Scholar