Flexible Models for Dynamic Linking

  • Sophia Drossopoulou
  • Giovanni Lagorio
  • Susan Eisenbach
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2618)


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.


Global Context Flexible Model Program Extension Dynamic Link Link Error 
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.


  1. 1.
    Davide Ancona and Elena Zucca. A calculus of module systems. Journal Functional Programming, 12(3):91–132, 2002.zbMATHMathSciNetGoogle Scholar
  2. 2.
    Luca Cardelli. Program Fragments, Linking, and Modularization. In POPL’97 Proceedings, January 1997.Google Scholar
  3. 3.
    Mikhail Dimitriev. Hotspot Technology Application forAdvanced Profiling. In ECOOP USE Workhop, June 2002.Google Scholar
  4. 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. 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. 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. 7.
    G. Fenton and E. Felton. Securing Java Getting Down to Business with Mobile Code. John Wiley and Sons, 1999.Google Scholar
  8. 8.
    Kathleen Fisher, John Reppy, and Jon Riecke. A Calculus for Compiling and Linking Classes. In ESOP Proceedings, March 2000.Google Scholar
  9. 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. 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. 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. 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. 13.
    Michael Hicks, Jonathan T. Moore, and Scott Nettles. Dynamic Software Updating. In Programming Language Design and Implementation. ACM, 2001.Google Scholar
  14. 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. 15.
    V. Jurisic. Deja-vu. NET: A Framework for Evolution of Component Based Systems., June 2002.
  16. 16.
    Sheng Liang and Gilad Bracha. Dynamic Class Loading in the JavaTM Virtual Machine. In OOPSLA Proceedings, October 1998.Google Scholar
  17. 17.
    Tim Lindholm and Frank Yellin. The Java Virtual Machine. Addison-Wesley, 1999.Google Scholar
  18. 19.
    M. Pietrek. Avoiding DLL Hell: Introducing Application Metadata in the Microsoft. NET Framework. In MSDN Magazine,, October 2000.
  19. 20.
    S. Pratschner. Simplifying Deployment and Solving DLL Hell with the. NET Framework., November 2001.
  20. 21.
    Zhenyu Qian, Allen Goldberg, and Alessandro Coglio. A Formal Specification of JavaTM Class Loading. In OOPSLA’2000, November 2000.Google Scholar
  21. 22.
    C. Sadler S. Eisenbach and S. Shaikh. Evolution of Distributed Java Programs. In IEEE Working Conf on Component Deployment, June 2002.Google Scholar
  22. 23.
    Vijay Saraswat. Java is not type-safe. Technical report, AT&T Rresearch, 1997. http://www.research.att.comp/r~vj/bug.html.
  23. 24.
    Raymie Stata and Martin Abadi. A Type System For Java Bytecode Subroutines. In POPL’98 Proceedings, January 1998.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2003

Authors and Affiliations

  • Sophia Drossopoulou
    • 1
  • Giovanni Lagorio
    • 2
  • Susan Eisenbach
    • 1
  1. 1.Department of Computing at Imperial CollegeUSA
  2. 2.DISI at the University of GenovaUSA

Personalised recommendations