Abstract
The successful assembly of large programs out of software components depends on modular reasoning. When the linking of component code is modular, components can be compiled and type checked separately, deployed in binary form, and are easier to reuse. Unfortunately, linking is not modular in many mainstream OO languages such as Java. In this paper we propose an intuitive and formal framework for enhancing a language with modular linking, which is applied to the specific problem of making linking in Java modular. In our proposed framework, the degree to which components can be reasoned about modularly is adversely affected by language features that limit abstraction. We show that most of Java’s core language features, such as inheritance, permit a high degree of modular linking even in the presence of cyclic dependencies.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Ancona, D., Lagorio, G., Zucca, E.: A Formal Framework for Java Separate Compilation. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 609–636. Springer, Heidelberg (2002)
Ancona, D., Lagorio, G., Zucca, E.: Smart modules for Java-like languages (December 2005) (submitted for publication)
Ancona, D., Zucca, E.: True modules for Java classes. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 354–380. Springer, Heidelberg (2001)
Bracha, G., Cook, W.: Mixin-based inheritance. In: Proc. of OOPSLA, pp. 303–311 (October 1990)
Cardelli, L.: Program fragments, linking and modularization. In: Proc. of POPL, pp. 266–277 (January 1997)
Clifton, C., Leavens, G., Chambers, C., Millstein, T.: MultiJava: Modular open classes and symmetric multiple dispatch for Java. In: Proc. of OOPSLA, pp. 130–146 (October 2000)
Clifton, C., Millstein, T., Leavens, G.T., Chambers, C.: MultiJava: Design rationale, compiler implementation, and applications. Technical Report 04-01b, Iowa State University, Dept. of Computer Science (December 2004) (accepted for publication, pending revision)
Drossopoulou, S., Eisenbach, S., Wragg, D.: A fragment calculus: Torwards a model of separate compilation, linking and binary compatibility. In: Proc. of Logic in Computer Science (July 1999)
Drossopoulou, S., Wragg, D., Eisenbach, S.: What is Java binary compatibility? In: Proc. of OOPLSA, pp. 341–361 (October 1998)
Findler, R., Flatt, M.: Modular object-oriented programming with units and mixins. In: Proc. of ICFP, pp. 98–104 (September 1998)
Fisher, K., Reppy, J.: The design of a class mechanism for Moby. In: Proc. of PLDI, pp. 37–49 (May 1999)
Fisher, K., Reppy, J.: Extending Moby with Inheritance-Based Subtyping. In: Bertino, E. (ed.) ECOOP 2000. LNCS, vol. 1850, pp. 83–107. Springer, Heidelberg (2000)
Flatt, M., Felleisen, M.: Units: Cool modules for HOT languages. In: Proc. of PLDI, pp. 236–248 (May 1998)
Flatt, M., Krishnamurthi, S., Felleisen, M.: Classes and mixins. In: Proc. of POPL, pp. 171–183 (January 1999)
Glew, N., Morrisett, G.: Type-safe linking and modular assembly language. In: Proc. of POPL (January 1999)
Igarashi, A., Pierce, B., Wadler, P.: Featherweight Java: A minimal core calculus for Java and GJ. In: Proc. of OOPSLA, pp. 132–146 (October 1999)
Leroy, X., Doligez, D., Garrigue, J., R’emy, D., Vouillon, J.: The Objective CAML system, documentation and user’s manual (2000), http://caml.inria.fr/ocaml/htmlman/
Liang, S., Bracha, G.: Dynamic class loading in the Java Virtual Machine. In: Proc. of OOPSLA (October 1998)
McDirmid, S., Flatt, M., Hsieh, W.C.: Jiazzi: New-age components for old-fashioned Java. In: Proc. of OOPSLA, pp. 211–222 (October 2001)
Millstein, T., Bleckner, C., Chambers, C.: Modular typechecking for hierarchically extensible datatypes and functions. In: Proc. of ICFP (October 2002)
Millstein, T., Chambers, C.: Modular Statically Typed Multimethods. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, pp. 279–303. Springer, Heidelberg (1999)
Riecke, J.G., Stone, C.A.: Privacy via subsumption. In: Theory and Practice of Object Systems (1999)
Stone, C.: Extensible objects without labels. In: Proc. of FOOL (January 2002)
Szyperski, C.: Component Software: Beyond Object-Oriented Programming. ACM Press and Addison-Wesley (1998)
Vouillon, J.: Combining subsumption and binary methods: An object calculus with views. In: Proc. of POPL, pp. 290–303 (January 2001)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
McDirmid, S., Hsieh, W.C., Flatt, M. (2006). A Framework for Modular Linking in OO Languages. In: Lightfoot, D.E., Szyperski, C. (eds) Modular Programming Languages. JMLC 2006. Lecture Notes in Computer Science, vol 4228. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11860990_9
Download citation
DOI: https://doi.org/10.1007/11860990_9
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-40927-4
Online ISBN: 978-3-540-40928-1
eBook Packages: Computer ScienceComputer Science (R0)