Modules with Interfaces for Dynamic Linking and Communication

  • Yu David Liu
  • Scott F. Smith
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3086)

Abstract

Module systems are well known as a means for giving clear interfaces for the static linking of code. This paper shows how adding explicit interfaces to modules for 1) dynamic linking and 2) cross-computation communication can increase the declarative, encapsulated nature of modules, and build a stronger foundation for language-based security and version control. We term these new modules Assemblages.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. [AG97]
    Allen, R., Garlan, D.: A formal basis for architectural connection. ACM Transactions on Software Engineering and Methodology 6(3), 213–249 (1997)CrossRefGoogle Scholar
  2. [ASCN03]
    Aldrich, J., Sazawal, V., Chambers, C., Notkin, D.: Language support for connector abstractions. In: Proceedings of the Seventeenth European Conference on Object-Oriented Programming (June 2003)Google Scholar
  3. [AZ02]
    Ancona, D., Zucca, E.: A calculus of module systems. Journal of functional programming 11, 91–132 (2002)MathSciNetGoogle Scholar
  4. [BC90]
    Bracha, G., Cook, W.: Mixin-based inheritance. In: Meyrowitz, N. (ed.) Proceedings of OOPSLA/ECOOP, Ottawa, Canada, pp. 303–311. ACM Press, New York (1990)CrossRefGoogle Scholar
  5. [BHSS03]
    Bierman, G., Hicks, M., Sewell, P., Stoyle, G.: Formalizing dynamic software updating (2003)Google Scholar
  6. [Blo83]
    Bloom, T.: Dynamic module replacement in a distributed programming system. Technical Report MIT/LCS/TR-303 (1983)Google Scholar
  7. [Car97]
    Cardelli, L.: Program fragments, linking, and modularization. In: Conference Record of POPL 1997: The 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 266–277 (1997)Google Scholar
  8. [CBGM03]
    Corwin, J., Bacon, D.F., Grove, D., Murthy, C.: MJ: a rational module system for java and its applications. In: Proceedings of the 18th ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, pp. 241–254 (2003)Google Scholar
  9. [DEW99]
    Drossopoulou, S., Eisenbach, S., Wragg, D.: A fragment calculus towards a model of separate compilation, linking and binary compatibility. Logic in Computer Science, 147–156 (1999)Google Scholar
  10. [DLE03]
    Drossopoulou, S., Lagorio, G., Eisenbach, S.: Flexible models for dynamic linking. In: 12th European Symposium on Programming (2003)Google Scholar
  11. [DS96]
    Duggan, D., Sourelis, C.: Mixin modules. In: Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP 1996), vol. 31(6), pp. 262–273 (1996)Google Scholar
  12. [FF98]
    Flatt, M., Felleisen, M.: Units: Cool modules for HOT languages. In: Proceedings of the ACM SIGPLAN 1998 Conference on Programming Language Design and Implementation, pp. 236–248 (1998)Google Scholar
  13. [HL02]
    Hirschowitz, T., Leroy, X.: Mixin modules in a call-by-value setting. In: European Symposium on Programming, pp. 6–20 (2002)Google Scholar
  14. [HMN01]
    Hicks, M.W., Moore, J.T., Nettles, S.: Dynamic software updating. In: SIGPLAN Conference on Programming Language Design and Implementation, pp. 13–23 (2001)Google Scholar
  15. [HSW+00]
    Hill, J., Szewczyk, R., Woo, A., Hollar, S., Culler, D.E., Pister, K.S.J.: System architecture directions for networked sensors. In: Architectural Support for Programming Languages and Operating Systems, pp. 93–104 (2000)Google Scholar
  16. [LB98]
    Liang, S., Bracha, G.: Dynamic class loading in the Java virtual machine. In: Conference on Object-oriented programming, systems, languages, and applications (OOPSLA 1998), pp. 36–44 (1998)Google Scholar
  17. [LS04]
    Liu, Y.D., Smith, S.F.: Modules With Interfaces for Dynamic Linking and Communication (long version) Technical report, Baltimore, Maryland (March 2004), http://www.cs.jhu.edu/~scott/pll/assemblage/asm.pdf
  18. [Mac84]
    MacQueen, D.: Modules for Standard ML. In: Proceedings of ACM Conference on Lisp and Functional Programming, pp. 409–423 (1984)Google Scholar
  19. [MFH01]
    McDirmid, S., Flatt, M., Hsieh, W.: Jiazzi: New-age components for old-fashioned Java. In: Proc. of OOPSLA (October 2001)Google Scholar
  20. [RS02]
    Rinat, R., Smith, S.: Modular internet programming with cells. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, p. 257. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  21. [SPW03]
    Sridhar, N., Pike, S.M., Weide, B.W.: Dynamic module replacement in distributed protocols. In: Proceedings of the 23rd International Conference on Distributed Computing Systems (May 2003)Google Scholar
  22. [Szy98]
    Szyperski, C.: Component Software: Beyond Object-Oriented Programming. ACM Press and Addison-Wesley, New York (1998)Google Scholar
  23. [WV00]
    Wells, J.B., Vestergaard, R.: Equational reasoning for linking with first-class primitive modules. In: Smolka, G. (ed.) ESOP 2000. LNCS, vol. 1782, p. 412. Springer, Heidelberg (2000)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • Yu David Liu
    • 1
  • Scott F. Smith
    • 1
  1. 1.Department of Computer ScienceThe Johns Hopkins University 

Personalised recommendations