Abstract
One of the problems facing developers is the constant evolution of components that are used to build applications. This evolution is typical of any multi-person or multi-site software project. How can we program in this environment? More precisely, how can language design address such evolution? In this paper we attack two significant issues that arise from constant component evolution: we propose language-level extensions that permit multiple, co-existing versions of classes and the ability to dynamically upgrade from one version of a class to another, whilst still maintaining type safety guarantees and requiring only lightweight extensions to the runtime infrastructure. We show how our extensions, whilst intuitive, provide a great deal of power by giving a number of examples. Given the subtlety of the problem, we formalize a core fragment of our language and prove a number of important safety properties.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Ancona, D., Damiani, F., Drossopoulou, S., Zucca, E.: Polymorphic bytecode: Compositional compilation for Java-like languages. In: Proceedings of POPL (2005)
Andreae, C., Noble, J., Markstrum, S., Millstein, T.: A framework for implementing pluggable type systems. In: Proceedings of OOPSLA (2006)
Armstrong, J., Virding, R., Wikstrom, C., Williams, M.: Concurrent programming in Erlang. Prentice-Hall, Englewood Cliffs (1996)
Bailey, E.: Maximum RPM. Sams (1997)
Bierman, G., Hicks, M., Sewell, P., Stoyle, G.: Formalizing dynamic software updating. In: Proceedings of USE (2003)
Bierman, G., Parkinson, M., Noble, J.: UpgradeJ: Incremental typechecking for class upgrades. Technical Report 716, University of Cambridge Computer Laboratory (2008)
Bierman, G., Parkinson, M., Pitts, A.: MJ: An imperative core calculus for Java and Java with effects. Technical Report 563, University of Cambridge Computer Laboratory (2004)
Boyapati, C., Liskov, B., Shrira, L.: Lazy modular upgrades in persistent object stores. In: Proceedings of OOPSLA (2003)
Bruce, K.B., Foster, J.N.: LOOJ: Weaving LOOM into Java. In: Proceedings of ECOOP (2004)
Buckley, A.: A model of dynamic binding in.NET. In: Proceedings of FTfJP (2005)
Chambers, C.: Predicate classes. In: Nierstrasz, O. (ed.) ECOOP 1993. LNCS, vol. 707. Springer, Heidelberg (1993)
Clifton, C., Leavens, G.T., Chambers, C., Millstein, T.: MultiJava: Modular open classes and symmetric multiple dispatch for Java. In: Proceedings of OOPSLA (2000)
Drossopoulou, S.: Towards an abstract model of Java dynamic linking, loading and verification. In: Proceedings of TIC (2000)
Drossopoulou, S., Damiani, F., Dezani, M., Giannini, P.: Fickle II more object reclassification. ACM Transactions on Programming Languages and Systems 24(2) (2002)
Drossopoulou, S., Eisenbach, S., Wragg, D.: A fragment calculus—towards a model of separate compilation, linking and binary compatibility. In: Proceedings of LICS (1999)
Drossopoulou, S., Lagorio, G., Eisenbach, S.: Flexible models for dynamic linking. In: Degano, P. (ed.) ESOP 2003 and ETAPS 2003. LNCS, vol. 2618. Springer, Heidelberg (2003)
Flanagan, C., Sabry, A., Duba, B.F., Felleisen, M.: The essence of compiling with continuations. In: Proceedings of PLDI (1993)
Igarashi, A., Pierce, B., Wadler, P.: Featherweight Java: A minimal core calculus for Java and GJ. ACM Transactions on Programming Languages and Systems 23(3), 396–450 (2001)
Mugridge, W.B., Hamer, J., Hosking, J.G.: Multi-methods in a statically-typed programming language. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072. Springer, Heidelberg (2001)
Nierstrasz, O., Denker, M., Gîrba, T., Lienhard, A.: Analyzing, capturing and taming software change. In: Proceedings of the Workshop on Revival of Dynamic Languages (2006)
OSGi Alliance. About the OSGi service platform (November 2005), http://osgi.org
Pratschner, S.: Simplifying deployment and solving DLL hell with the .NET framework (2001), http://msdn.microsoft.com
Putz, S.: Managing the evolution of Smalltalk-80 systems. In: Smalltalk-80: Bits of History, Words of Advice. AW (1984)
Sewell, P., Leifer, J., Wansbrough, K., Allen-Williams, M., Zappa Nardelli, F., Habouzit, P., Vafeiadis, V.: Acute: High-level programming language design for distributed computation. Design rationale and language definition. Technical Report 605, University of Cambridge Computer Laboratory (October 2004)
Smith, W.R.: Using a prototype-based language for user interface: The Newton project’s experience. In: Proceedings of OOPSLA (1995)
Steele, G.: Common Lisp the Language. Digital Press (1990)
Stoyle, G., Hicks, M., Bierman, G., Sewell, P., Neamtiu, I.: Mutatis mutandis: Safe and predictable dynamic software updating. In: Proceedings of POPL (2005)
Strniša, R., Sewell, P., Parkinson, M.: The Java module system: core design and semantic definition. In: Proceedings of OOPSLA (2007)
Warth, A., Stanojević, M., Millstein, T.: Statically scoped object adaptation with expanders. In: Proceedings of OOPSLA (2006)
Wirfs-Brock, A., Wilkerson, B.: An overview of Modular Smalltalk. In: Proceedings of OOPSLA (1988)
Wright, A., Felleisen, M.: A syntactic approach to type soundness. Information and Computation 115(1), 38–94 (1994)
Zenger, M.: Programming Language Abstractions for Extensible Software Components. PhD thesis, EPFL, Switzerland (2004)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Bierman, G., Parkinson, M., Noble, J. (2008). UpgradeJ: Incremental Typechecking for Class Upgrades. In: Vitek, J. (eds) ECOOP 2008 – Object-Oriented Programming. ECOOP 2008. Lecture Notes in Computer Science, vol 5142. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-70592-5_11
Download citation
DOI: https://doi.org/10.1007/978-3-540-70592-5_11
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-70591-8
Online ISBN: 978-3-540-70592-5
eBook Packages: Computer ScienceComputer Science (R0)