Skip to main content

UpgradeJ: Incremental Typechecking for Class Upgrades

  • Conference paper
ECOOP 2008 – Object-Oriented Programming (ECOOP 2008)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 5142))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

  1. Ancona, D., Damiani, F., Drossopoulou, S., Zucca, E.: Polymorphic bytecode: Compositional compilation for Java-like languages. In: Proceedings of POPL (2005)

    Google Scholar 

  2. Andreae, C., Noble, J., Markstrum, S., Millstein, T.: A framework for implementing pluggable type systems. In: Proceedings of OOPSLA (2006)

    Google Scholar 

  3. Armstrong, J., Virding, R., Wikstrom, C., Williams, M.: Concurrent programming in Erlang. Prentice-Hall, Englewood Cliffs (1996)

    Google Scholar 

  4. Bailey, E.: Maximum RPM. Sams (1997)

    Google Scholar 

  5. Bierman, G., Hicks, M., Sewell, P., Stoyle, G.: Formalizing dynamic software updating. In: Proceedings of USE (2003)

    Google Scholar 

  6. Bierman, G., Parkinson, M., Noble, J.: UpgradeJ: Incremental typechecking for class upgrades. Technical Report 716, University of Cambridge Computer Laboratory (2008)

    Google Scholar 

  7. 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)

    Google Scholar 

  8. Boyapati, C., Liskov, B., Shrira, L.: Lazy modular upgrades in persistent object stores. In: Proceedings of OOPSLA (2003)

    Google Scholar 

  9. Bruce, K.B., Foster, J.N.: LOOJ: Weaving LOOM into Java. In: Proceedings of ECOOP (2004)

    Google Scholar 

  10. Buckley, A.: A model of dynamic binding in.NET. In: Proceedings of FTfJP (2005)

    Google Scholar 

  11. Chambers, C.: Predicate classes. In: Nierstrasz, O. (ed.) ECOOP 1993. LNCS, vol. 707. Springer, Heidelberg (1993)

    Chapter  Google Scholar 

  12. Clifton, C., Leavens, G.T., Chambers, C., Millstein, T.: MultiJava: Modular open classes and symmetric multiple dispatch for Java. In: Proceedings of OOPSLA (2000)

    Google Scholar 

  13. Drossopoulou, S.: Towards an abstract model of Java dynamic linking, loading and verification. In: Proceedings of TIC (2000)

    Google Scholar 

  14. Drossopoulou, S., Damiani, F., Dezani, M., Giannini, P.: Fickle II more object reclassification. ACM Transactions on Programming Languages and Systems 24(2) (2002)

    Google Scholar 

  15. Drossopoulou, S., Eisenbach, S., Wragg, D.: A fragment calculus—towards a model of separate compilation, linking and binary compatibility. In: Proceedings of LICS (1999)

    Google Scholar 

  16. 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)

    Chapter  Google Scholar 

  17. Flanagan, C., Sabry, A., Duba, B.F., Felleisen, M.: The essence of compiling with continuations. In: Proceedings of PLDI (1993)

    Google Scholar 

  18. 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)

    Article  Google Scholar 

  19. 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)

    Google Scholar 

  20. 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)

    Google Scholar 

  21. OSGi Alliance. About the OSGi service platform (November 2005), http://osgi.org

  22. Pratschner, S.: Simplifying deployment and solving DLL hell with the .NET framework (2001), http://msdn.microsoft.com

  23. Putz, S.: Managing the evolution of Smalltalk-80 systems. In: Smalltalk-80: Bits of History, Words of Advice. AW (1984)

    Google Scholar 

  24. 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)

    Google Scholar 

  25. Smith, W.R.: Using a prototype-based language for user interface: The Newton project’s experience. In: Proceedings of OOPSLA (1995)

    Google Scholar 

  26. Steele, G.: Common Lisp the Language. Digital Press (1990)

    Google Scholar 

  27. Stoyle, G., Hicks, M., Bierman, G., Sewell, P., Neamtiu, I.: Mutatis mutandis: Safe and predictable dynamic software updating. In: Proceedings of POPL (2005)

    Google Scholar 

  28. Strniša, R., Sewell, P., Parkinson, M.: The Java module system: core design and semantic definition. In: Proceedings of OOPSLA (2007)

    Google Scholar 

  29. Warth, A., Stanojević, M., Millstein, T.: Statically scoped object adaptation with expanders. In: Proceedings of OOPSLA (2006)

    Google Scholar 

  30. Wirfs-Brock, A., Wilkerson, B.: An overview of Modular Smalltalk. In: Proceedings of OOPSLA (1988)

    Google Scholar 

  31. Wright, A., Felleisen, M.: A syntactic approach to type soundness. Information and Computation 115(1), 38–94 (1994)

    Article  MATH  MathSciNet  Google Scholar 

  32. Zenger, M.: Programming Language Abstractions for Extensible Software Components. PhD thesis, EPFL, Switzerland (2004)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Jan Vitek

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics