skip to main content
research-article
Free Access

Separating ownership topology and encapsulation with generic universe types

Published:03 January 2012Publication History
Skip Abstract Section

Abstract

Ownership is a powerful concept to structure the object store and to control aliasing and modifications of objects. This article presents an ownership type system for a Java-like programming language with generic types.

Like our earlier Universe type system, Generic Universe Types structure the heap hierarchically. In contrast to earlier work, we separate the enforcement of an ownership topology from an encapsulation system. The topological system uses an existential modifier to express that no ownership information is available statically. On top of the topological system, we build an encapsulation system that enforces the owner-as-modifier discipline. This discipline does not restrict aliasing, but requires modifications of an object to be initiated by its owner. This allows owner objects to control state changes of owned objects—for instance, to maintain invariants. Separating the topological system from the encapsulation system allows for a cleaner formalization, separation of concerns, and simpler reuse of the individual systems in different contexts.

Skip Supplemental Material Section

Supplemental Material

References

  1. Abi-Antoun, M. and Aldrich, J. 2007a. Compile-time views of execution structure based on ownership. In Proceedings of the International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming (IWACO).Google ScholarGoogle Scholar
  2. Abi-Antoun, M. and Aldrich, J. 2007b. Ownership domains in the real world. In Proceedings of the International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming (IWACO).Google ScholarGoogle Scholar
  3. Abi-Antoun, M. and Aldrich, J. 2009. Static extraction of sound hierarchical runtime object graphs. In Proceedings of the International Workshop on Types in Language Design and Implementation (TLDI). Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Ádám Darvas and Leino, K. R. M. 2007. Practical reasoning about invocations and implementations of pure methods. In Fundamental Approaches to Software Engineering (FASE), M.B. Dwyer and A. Lopes Eds., Lecture Notes in Computer Science, vol. 4422. Springer, Berlin, 336--351. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Aldrich, J. 2003. Using types to enforce architectural structure. Ph.D. dissertation, University of Washington. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Aldrich, J. and Chambers, C. 2004. Ownership domains: Separating aliasing policy from mechanism. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 3086, Springer, Berlin, 1--25.Google ScholarGoogle Scholar
  7. Aldrich, J., Kostadinov, V., and Chambers, C. 2002. Alias annotations for program understanding. In Proceedings of the Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM, New York, 311--330. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Almeida, P. S. 1997. Balloon types: Controlling sharing of state in data types. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 1241, Springer, Berlin, 32--59.Google ScholarGoogle Scholar
  9. Almeida, P. S. 1998. Control of object sharing in programming languages. Ph.D. dissertation, Imperial College London.Google ScholarGoogle Scholar
  10. Andrea, C., Coady, Y., Gibbs, C., Noble, J., Vitek, J., and Zhao, T. 2006. Scoped types and aspects for real-time systems. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 4067, Springer, Berlin, 124--147. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Banerjee, A. and Naumann, D. A. 2002. Representation independence, confinement, and access control. In Proceedings of the Symposium on Principles of Programming Languages (POPL). ACM, New York, 166--177. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Banerjee, A. and Naumann, D. A. 2004. Ownership confinement ensures representation independence for object-oriented programs. Tech. rep. 2004-14, Stevens Institute of Technology.Google ScholarGoogle Scholar
  13. Banerjee, A., Naumann, D. A., and Rosenberg, S. 2008. Regional logic for local reasoning about global invariants. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 5142. Springer, Berlin, 387--411. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Barnett, M., DeLine, R., Fähndrich, M., Leino, K. R. M., and Schulte, W. 2004. Verification of object-oriented programs with invariants. J. Object Technol. 3, 6, 27--56.Google ScholarGoogle ScholarCross RefCross Ref
  15. Barnett, M., Naumann, D. A., Schulte, W., and Sun, Q. 2004. 99.44% pure: Useful abstractions in specification. In Proceedings of the Formal Techniques for Java-like Programs Workshop (FTfJP). 51--60.Google ScholarGoogle Scholar
  16. Bierman, G. M., Parkinson, M. J., and Pitts, A. M. 2003. An imperative core calculus for Java and Java with effects. Tech. rep. 563, Computer Laboratory, University of Cambridge.Google ScholarGoogle Scholar
  17. Birka, A. and Ernst, M. D. 2004. A practical type system and language for reference immutability. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM, New York Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Bokowski, B. and Vitek, J. 1999. Confined types. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM New York, 82--96. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Boyapati, C. 2004. SafeJava: A unified type system for safe programming. Ph.D. dissertation, MIT, Cambridge, MA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Boyapati, C., Lee, R., and Rinard, M. 2002. Ownership types for safe programming: Preventing data races and deadlocks. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM New York, 211--230. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Boyapati, C., Lee, R., and Rinard, M. 2003. Safe runtime downcasts with ownership types. In Proceedings of the International Workshop on Aliasing, Confinement and Ownership in Object-oriented Programming (IWACO).Google ScholarGoogle Scholar
  22. Boyapati, C., Liskov, B., and Shrira, L. 2003. Ownership types for object encapsulation. In Proceedings of the Symposium on Principles of Programming Languages (POPL). ACM, New York, 213--223. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Boyapati, C., Salcianu, A., Jr., and Rinard, M. 2003. Ownership types for safe region-based memory management in real-time Java. In Proceedings of the Conference on Programming Language Design and Implementation (PLDI). ACM, New York, 324--337. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Boyland, J. 2001. Alias burying: Unique variables without destructive reads. Softw. Pract. Exper. 31, 6, 533--553. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Boyland, J. 2005. Why we should not add read-only to Java (yet). In Proceedings of Formal Techniques for Java-like Programs Workshop (FTfJP).Google ScholarGoogle Scholar
  26. Boyland, J., Noble, J., and Retert, W. 2001. Capabilities for aliasing: A generalization of uniqueness and read-only. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 2072. Springer, Berlin, 2--27. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Burdy, L., Cheon, Y., Cok, D., Ernst, M., Kiniry, J., Leavens, G. T., Leino, K. R. M., and Poll, E. 2003. An overview of JML tools and applications. In Proceedings of the Formal Methods for Industrial Critical Systems (FMICS). Elsevier, Amsterdam, 73--89.Google ScholarGoogle Scholar
  28. Burdy, L., Requet, A., and Lanet, J.-L. 2003. Java applet correctness: A developer-oriented approach. In Proceedings of the International Symposium on Formal Methods Europe (FME). Lecture Notes in Computer Science, vol. 2805, Springer, Berlin, 422--439.Google ScholarGoogle Scholar
  29. Cameron, N. 2009. Existential types for variance | Java wildcards and ownership types. Ph.D. dissertation, Imperial College London.Google ScholarGoogle Scholar
  30. Cameron, N. and Dietl, W. 2009. Comparing universes and existential ownership types. In Proceedings of the International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming (IWACO). Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Cameron, N. and Drossopoulou, S. 2009. Existential quantification for variant ownership. In Proceedings of the European Symposium on Programming Languages and Systems (ESOP). Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Cameron, N., Drossopoulou, S., and Ernst, E. 2008. A model for Java with wildcards. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 5142, Springer, Berlin, 2--26. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Cameron, N., Drossopoulou, S., Noble, J., and Smith, M. 2007. Multiple ownership. In Proceedings of the Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM, New York, 441--460. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Cameron, N. and Noble, J. 2009. OGJ gone wild. In Proceedings of the International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming (IWACO). Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Cartwright, R. and Fagan, M. 1991. Soft typing. In Proceedings of the Conference on Programming Language Design and Implementation (PLDI). ACM, New York, 278--292. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Cartwright, R. and Felleisen, M. 1996. Program verification through soft typing. ACM Comput. Surv. 28, 2, 349--351. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Charles, P., Grothoff, C., Saraswat, V., Donawa, C., Kielstra, A., Ebcioglu, K., von Praun, C., and Sarkar, V. 2005. X10: An object-oriented approach to non-uniform cluster computing. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM, New York, 519--538. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Cheon, Y. 2003. A runtime assertion checker for the Java modeling language. Ph.D. dissertation, Iowa State University.Google ScholarGoogle Scholar
  39. Cheon, Y. and Leavens, G. T. 2002. A runtime assertion checker for the Java Modeling Language (JML). In Proceedings of the International Conference on Software Engineering Research and Practice (SERP). CSREA Press, 322--328.Google ScholarGoogle Scholar
  40. Clarke, D. G. 2001. Object ownership and containment. Ph.D. dissertation, University of New South Wales. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Clarke, D. G. and Drossopoulou, S. 2002. Ownership, encapsulation and the disjointness of type and effect. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM, New York, 292--310. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Clarke, D. G., Drossopoulou, S., Noble, J., and Wrigstad, T. 2007. Tribe: A simple virtual class calculus. In Proceedings of the Conference on Aspect-Oriented Software Development (AOSD). Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Clarke, D. G., Potter, J. M., and Noble, J. 1998. Ownership types for flexible alias protection. In Proceedings of the Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM, New York. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Clarke, D. G., Richmond, M., and Noble, J. 2003. Saving the world from bad beans: deployment time confinement checking. In Proceedings of the Object-Oriented Programing, Systems, Languages, and Applications (OOPSLA). ACM New York, 374--387. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Clarke, D. G. and Wrigstad, T. 2003. External uniqueness is unique enough. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 2743. Springer, Berlin, 176--200.Google ScholarGoogle Scholar
  46. Cok, D. R. and Kiniry, J. 2004. ESC/Java2: Uniting ESC/Java and JML. In Proceedings of the Conference on Construction and Analysis of Safe, Secure and Interoperable Smart Devices (CASSIS). Lecture Notes in Computer Science, vol. 3362, Springer, Berlin, 108--128. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Cok, D. R. and Leavens, G. T. 2008. Extensions of the theory of observational purity and a practical design for JML. In Proceedings of the Conference on Specification and Verification of Component-Based Systems (SAVCBS). 43--50.Google ScholarGoogle Scholar
  48. Cunningham, D., Dietl, W., Drossopoulou, S., Francalanza, A., Müller, P., and Summers, A. J. 2008. Universe types for topology and encapsulation. In Proceedings of the Conference on Formal Methods for Components and Objects (FMCO). Lecture Notes in Computer Science, vol. 5382, Springer, Berlin, 72--112. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Cunningham, D., Drossopoulou, S., and Eisenbach, S. 2007. Universe types for race safety. In Proceedings of the Conference on Verification and Analysis of Multi-threaded Java-like Programs (VAMP). 20--51.Google ScholarGoogle Scholar
  50. Detlefs, D. L., Leino, K. R. M., and Nelson, G. 1998. Wrestling with rep exposure. SRC Res. rep. 156, Digital Systems Research Center.Google ScholarGoogle Scholar
  51. Dhara, K. K. and Leavens, G. T. 2001. Preventing cross-type aliasing for more practical reasoning. Tech. rep. 01-02a, Department of Computer Science, Iowa State University.Google ScholarGoogle Scholar
  52. Dietl, W. 2009. Universe Types: Topology, encapsulation, genericity, and tools. Ph.D. dissertation, ETH 18522, Department of Computer Science, ETH Zurich.Google ScholarGoogle Scholar
  53. Dietl, W., Drossopoulou, S., and Müller, P. 2006. Formalization of generic Universe Types. Tech. rep. 532, Department of Computer Science, ETH Zurich.Google ScholarGoogle Scholar
  54. Dietl, W., Drossopoulou, S., and Müller, P. 2007. Generic Universe Types. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 4609, Springer, Berlin, 28--53. Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Dietl, W., Ernst, M. D., and Müller, P. 2009. Tunable Universe Type inference. Tech. rep. 659, Department of Computer Science, ETH Zurich. Dec.Google ScholarGoogle Scholar
  56. Dietl, W. and Müller, P. 2004. Exceptions in ownership type systems. In Proceedings of the Formal Techniques for Java-like Programs Workshop (FTfJP). 49--54.Google ScholarGoogle Scholar
  57. Dietl, W. and Müller, P. 2005. Universes: Lightweight ownership for JML. J. Object Technol. 4, 8, 5--32.Google ScholarGoogle ScholarCross RefCross Ref
  58. Dietl, W. and Müller, P. 2008. Ownership type systems and dependent classes. In Proceedings of the Conference on Foundations of Object-Oriented Languages (FOOL).Google ScholarGoogle Scholar
  59. Drossopoulou, S., Francalanza, A., Müller, P., and Summers, A. J. 2008. A unified framework for verification techniques for object invariants. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 5142, Springer, Berlin, 412--437. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Emir, B., Kennedy, A. J., Russo, C., and Yu, D. 2006. Variance and generalized constraints for C} generics. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 4067, Springer, Berlin, 279--303. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Ernst, E. 1999. gbeta—A language with virtual attributes, block structure, and propagating, dynamic inheritance. Ph.D. dissertation, Department of Computer Science, University of Aarhus, Arhus, Denmark.Google ScholarGoogle Scholar
  62. Ernst, E. 2001. Family polymorphism. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 2072, Springer, Berlin, 303--326. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Ernst, E., Ostermann, K., and Cook, W. R. 2006. A virtual class calculus. In Proceedings of the Symposium on Principles of Programming Languages (POPL). ACM, New York, 270--282. Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Ernst, M. D. 2008. Type annotations specification (JSR 308). http://types.cs.washington.edu/jsr308/.Google ScholarGoogle Scholar
  65. Fähndrich, M. and DeLine, R. 2002. Adoption and focus: Practical linear types for imperative programming. In Proceedings of the Conference on Programming Language Design and Implementation (PLDI). ACM, New York, 13--24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Flanagan, C., Leino, K. R. M., Lillibridge, M., Nelson, G., Saxe, J. B., and Stata, R. 2002. Extended static checking for Java. In Proceedings of the Conference on Programming Language Design and Implementation (PLDI). ACM, New York, 234--245. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Flatt, M., Krishnamurthi, S., and Felleisen, M. 1999. A programmer's reduction semantics for classes and mixins. In Formal Syntax and Semantics of Java, Lecture Notes in Computer Science, vol. 1523. Springer, Berlin, 241--269. Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. Foster, J. N. and Vytiniotis, D. 2006. A theory of Featherweight Java in Isabelle/HOL. In Archive of Formal Proofs, G. Klein et al. Eds. http://afp.sf.net.Google ScholarGoogle Scholar
  69. Gasiunas, V., Mezini, M., and Ostermann, K. 2007a. Dependent classes. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM, New York, 133--152. Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. Gasiunas, V., Mezini, M., and Ostermann, K. 2007b. vcn—A calculus for multidimensional virtual classes. www.st.informatik.tu-darmstadt.de/static/pages/projects/mvc/index.html.Google ScholarGoogle Scholar
  71. Gosling, J., Joy, B., Steele, G., and Bracha, G. 2005. The Java Language Specification 3rd Ed., Addison-Wesley, Reading, MA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  72. Haack, C., Poll, E., Schäfer, J., and Schubert, A. 2007. Immutable objects for a Java-like language. In Programming Languages and Systems, Lecture Notes in Computer Science, vol. 4421, Springer, Berlin, 347--362. Google ScholarGoogle ScholarDigital LibraryDigital Library
  73. Hatcliff, J., Leavens, G. T., Leino, K. R. M., Müller, P., and Parkinson, M. 2009. Behavioral interface specification languages. Tech. rep. CS-TR-09-01, School of EECS, University of Central Florida.Google ScholarGoogle Scholar
  74. Herrmann, S. 2008. Gradual encapsulation.J. Object Technol.7, 9, 47--68.Google ScholarGoogle ScholarCross RefCross Ref
  75. Herrmann, S., Hundt, C., and Mosconi, M. 2009. ObjectTeams/Java language definition version 1.2 (OTJLD). http://www.objectteams.org/def/1.2/.Google ScholarGoogle Scholar
  76. Hirschkoff, D., Hirschowitz, T., Pous, D., Schmitt, A., and Stefani, J.-B. 2005. Component oriented programming with sharing: Containment is not ownership. In Generative Programming and Component Engineering, Lecture Notes in Computer Science, vol. 3676, Springer, Berlin, 389--404. Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. Hogg, J. 1991. Islands: Aliasing protection in object-oriented languages. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM, New York, 271--285. Google ScholarGoogle ScholarDigital LibraryDigital Library
  78. Hogg, J., Lea, D., Wills, A., Champeaux, D. d., and Holt, R. 1992. The Geneva convention on the treatment of object aliasing. OOPS Messenger, Report on ECOOP'91 Workshop W3 3, 2, 11--16. Google ScholarGoogle ScholarDigital LibraryDigital Library
  79. Igarashi, A., Pierce, B. C., and Wadler, P. 2001. Featherweight Java: A minimal core calculus for Java and GJ. ACM Trans. Program. Lang. Syst. 23, 3, 396--450. Google ScholarGoogle ScholarDigital LibraryDigital Library
  80. Igarashi, A. and Viroli, M. 2007. Variant path types for scalable extensibility. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM, New York, 113--132. Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. Jacobs, B. 2004. Weakest precondition reasoning for Java programs with JML annotations. J. Logic Algebraic Program. 58, 61--88.Google ScholarGoogle ScholarCross RefCross Ref
  82. Jacobs, B., Piessens, F., Leino, K. R. M., and Schulte, W. 2005. Safe concurrency for aggregate objects with invariants. In Proceedings of the Conference on Software Engineering and Formal Methods (SEFM). IEEE, Los Alamitos, CA, 137--147. Google ScholarGoogle ScholarDigital LibraryDigital Library
  83. Jacobs, B. and Poll, E. 2001. A logic for the Java modeling language JML. In Proceedings of the Conference on Fundamental Approaches to Software Engineering (FASE). Lecture Notes in Computer Science, vol. 2029, Springer, Berlin, 284--299. Google ScholarGoogle ScholarDigital LibraryDigital Library
  84. Kassios, I. T. 2006. Dynamic frames: Support for framing, dependencies and sharing without restrictions. In Proceedings of the Symposium on Formal Methods (FM). Google ScholarGoogle ScholarDigital LibraryDigital Library
  85. Kennedy, A. and Syme, D. 2001. Design and implementation of generics for the .NET common language Runtime. In Proceedings of the Conference on Programming Language Design and Implementation (PLDI). ACM, New York, 1--12. Google ScholarGoogle ScholarDigital LibraryDigital Library
  86. Kleberma, M. 2007. An Isabelle formalization of the Universe type system. M.S. thesis, Technical University Munich and ETH Zurich.Google ScholarGoogle Scholar
  87. Klein, G. and Nipkow, T. 2004. A machine-checked model for a Java-like language, virtual machine and compiler. Tech. rep. 0400001T.1, National ICT Australia. http://www4.informatik.tumuenchen.de/~nipkow/pubs/Jinja/.Google ScholarGoogle Scholar
  88. Klein, G. and Nipkow, T. 2006. A machine-checked model for a Java-like language, virtual machine and compiler. ACM Trans. Program. Lang. Syst. 28, 4, 619--695. Google ScholarGoogle ScholarDigital LibraryDigital Library
  89. Krishnaswami, N. and Aldrich, J. 2005. Permission-based ownership: encapsulating state in higher-order typed languages. In Proceedings of the Conference on Programming Language Design and Implementation (PLDI). ACM, New York, 96--106. Google ScholarGoogle ScholarDigital LibraryDigital Library
  90. Leavens, G. T., Leino, K. R. M., and Müller, P. 2007. Specification and verification challenges for sequential object-oriented programs. Formal Aspects Comput. 19, 2, 159--189. Google ScholarGoogle ScholarCross RefCross Ref
  91. Leavens, G. T., Poll, E., Clifton, C., Cheon, Y., Ruby, C., Cok, D., Müller, P., Kiniry, J., Chalin, P., Zimmerman, D. M., and Dietl, W. 2008. JML Reference Manual. http://www.jm/specs.org.Google ScholarGoogle Scholar
  92. Leino, K. R. M. and Müller, P. 2004. Object invariants in dynamic contexts. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 3086, Springer, Berlin, 491--516.Google ScholarGoogle Scholar
  93. Leino, K. R. M., Müller, P., and Wallenburg, A. 2008. Flexible immutability with frozen objects. In Proceedings of the Verified Software: Theories, Tools, and Experiments (VSTTE). Lecture Notes in Computer Science, vol. 5295, Springer, Berlin, 192--208. Google ScholarGoogle ScholarDigital LibraryDigital Library
  94. Liu, Y. D. and Smith, S. 2008. Pedigree types. In Proceedings of the International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming (IWACO).Google ScholarGoogle Scholar
  95. Lu, Y. and Potter, J. 2005. A type system for reachability and acyclicity. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 3586, Springer, Berlin, 479--503. Google ScholarGoogle ScholarDigital LibraryDigital Library
  96. Lu, Y. and Potter, J. 2006a. On ownership and accessibility. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 4067, Springer, Berlin, 99--123. Google ScholarGoogle ScholarDigital LibraryDigital Library
  97. Lu, Y. and Potter, J. 2006b. Protecting representation with effect encapsulation. In Proceedings of the Symposium on Principles of Programming Languages (POPL). ACM, New York, 359-- 371. Google ScholarGoogle ScholarDigital LibraryDigital Library
  98. Lu, Y., Potter, J., and Xue, J. 2007. Validity invariants and effects. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 4609, Springer, Berlin, 202--226. Google ScholarGoogle ScholarDigital LibraryDigital Library
  99. Madsen, O. L. and Moller-Pedersen, B. 1989. Virtual classes: A powerful mechanism in object-oriented programming. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM, New York. Google ScholarGoogle ScholarDigital LibraryDigital Library
  100. Meyer, B. 1988. Object-Oriented Software Construction 1st Ed., Prentice Hall, Englewood Cliffs, NJ. Google ScholarGoogle ScholarDigital LibraryDigital Library
  101. Meyer, B. 1997. Object-Oriented Software Construction 2nd Ed., Prentice Hall, Englewood Cliffs, NJ. Google ScholarGoogle ScholarDigital LibraryDigital Library
  102. Müller, P. 2002. Modular Specification and Verification of Object-Oriented Programs. Lecture Notes in Computer Science, vol. 2262, Springer, Berlin.Google ScholarGoogle Scholar
  103. Müller, P. 2007. Reasoning about object structures using ownership. In Proceedings of the Conference on Verified Software: Theories, Tools, Experiments (VSTTE). Lecture Notes in Computer Science, vol. 4171, Springer, Berlin, 93--104.Google ScholarGoogle ScholarCross RefCross Ref
  104. Müller, P. and Poetzsch-Heffter, A. 1999. Universes: A type system for controlling representation exposure. In Programming Languages and Fundamentals of Programming, 131--140.Google ScholarGoogle Scholar
  105. Müller, P. and Poetzsch-Heffter, A. 2000. A type system for controlling representation exposure in Java. Tech. rep. 269, Fernuniversitat Hagen.Google ScholarGoogle Scholar
  106. Müller, P. and Poetzsch-Heffter, A. 2001. Universes: A type system for alias and dependency control. Tech. rep. 279, Fernuniversitat Hagen.Google ScholarGoogle Scholar
  107. Müller, P., Poetzsch-Heffter, A., and Leavens, G. T. 2003. Modular specification of frame properties in JML. Concurrency Comput.: Pract. Exper. 15, 117--154.Google ScholarGoogle ScholarCross RefCross Ref
  108. Müller, P., Poetzsch-Heffter, A., and Leavens, G. T. 2006. Modular invariants for layered object structures. Sci. Comput. Program. 62, 253--286. Google ScholarGoogle ScholarDigital LibraryDigital Library
  109. Müller, P. and Rudich, A. 2007. Ownership transfer in Universe Types. In Proceedings of the Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM, New York, 461--478. Google ScholarGoogle ScholarDigital LibraryDigital Library
  110. Nägeli, S. 2006. Ownership in design patterns. M.S. thesis, Department of Computer Science, ETH Zurich.Google ScholarGoogle Scholar
  111. Naumann, D. A. 2007. Observational purity and encapsulation. Theor. Comput. Sci. 376, 205--224. Google ScholarGoogle ScholarDigital LibraryDigital Library
  112. Nipkow, T., Paulson, L., and Wenzel, M. 2002. Isabelle/HOL-- A Proof Assistant for Higher-Order Logic. Lecture Notes in Computer Science, vol. 2283, Springer, Berlin. Google ScholarGoogle ScholarDigital LibraryDigital Library
  113. Noble, J., Vitek, J., and Potter, J. M. 1998. Flexible alias protection. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 1445, Springer, Berlin. Google ScholarGoogle ScholarDigital LibraryDigital Library
  114. Nystrom, N., Saraswat, V., Palsberg, J., and Grothoff, C. 2008. Constrained types for objectoriented languages. In Proceedings of the Conference on Object-oriented Programming Systems Languages, and Applications (OOPSLA). ACM, New York, 457--474. Google ScholarGoogle ScholarDigital LibraryDigital Library
  115. Odersky, M. 2008. The Scala Language specification, version 2.7. Programming Methods Laboratory, EPFL, Switzerland.Google ScholarGoogle Scholar
  116. Odersky, M., Cremet, V., Rockl, C., and Zenger, M. 2003. A nominal theory of objects with dependent types. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 2743, Springer, Berlin, 201--224.Google ScholarGoogle Scholar
  117. Östlund, J., Wrigstad, T., Clarke, D. G., and Akerblom, B. 2008. Ownership, uniqueness, and immutability. In Objects, Components, Models and Patterns, Lecture Notes in Business Information Processing, vol. 11, Springer, Berlin, 178--197.Google ScholarGoogle Scholar
  118. Papi, M. M., Ali, M., Jr., Perkins, J. H., and Ernst, M. D. 2008. Practical pluggable types for Java. In Proceedings of the International Symposium on Software Testing and Analysis (ISSTA). 201--212. Google ScholarGoogle ScholarDigital LibraryDigital Library
  119. Poetzsch-Heffter, A. and Schäfer, J. 2006. Modular specification of encapsulated object oriented components. In Formal Methods for Components and Objects, Lecture Notes in Computer Science, vol. 4111, Springer, Berlin, 313--341. Google ScholarGoogle ScholarDigital LibraryDigital Library
  120. Poetzsch-Heffter, A. and Schäfer, J. 2007. A representation-independent behavioral semantics for object-oriented components. In Formal Methods for Open Object-Based Distributed Systems, Lecture Notes in Computer Science, vol. 4468. Springer, Berlin, 157--173. Google ScholarGoogle ScholarDigital LibraryDigital Library
  121. Potanin, A. 2007. Generic ownership: A practical approach to ownership and confinement in object-oriented programming languages. Ph.D. dissertation, Victoria University of Wellington.Google ScholarGoogle Scholar
  122. Potanin, A., Noble, J., Clarke, D. G., and Biddle, R. 2006. Generic ownership for generic Java. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM, New York, 311--324. Google ScholarGoogle ScholarDigital LibraryDigital Library
  123. Potanin, A., Noble, J., Clarke, D. G., and Biddle, R. 2004. Featherweight generic confinement. In Proceedings of the Conference on Foundations of Object-Oriented Languages (FOOL).Google ScholarGoogle Scholar
  124. Reynolds, J. C. 2002. Separation logic: A logic for shared mutable data structures. Logic Comput. Sci. 55. Google ScholarGoogle ScholarDigital LibraryDigital Library
  125. Saito, C., Igarashi, A., and Viroli, M. 2007. Lightweight family polymorphism. J. Funct. Program. 18, 285--331. Google ScholarGoogle ScholarDigital LibraryDigital Library
  126. Salcianu, A. and Rinard, M. C. 2005. Purity and side-effect analysis for Java programs. In Proceedings of the Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI). Lecture Notes in Computer Science, vol. 3385, Springer, Berlin, 199--215. Google ScholarGoogle ScholarDigital LibraryDigital Library
  127. Schäfer, J. 2008. JCoBox compiler. http://softech.informatik.uni-kl.de/Homepage/JCoBox.Google ScholarGoogle Scholar
  128. Schäfer, J. and Poetzsch-Heffter, A. 2007. A parameterized type system for simple loose ownership domains. J. Object Technol. 6, 5, 71--100.Google ScholarGoogle ScholarCross RefCross Ref
  129. Schäfer, J. and Poetzsch-Heffter, A. 2008. CoBoxes: Unifying active objects and structured heaps. In Formal Methods for Open Object-Based Distributed Systems, Lecture Notes in Computer Science, vol. 5051, Springer, Berlin, 201--219. Google ScholarGoogle ScholarDigital LibraryDigital Library
  130. Schäfer, J., Reitz, M., Gaillourdet, J.-M., and Poetzsch-Heffter, A. 2008. Linking programs to architectures: An object-oriented hierarchical software model based on boxes. In The Common Component Modeling Example, Lecture Notes in Computer Science, vol. 5153. Springer, Berlin, 238--266. Google ScholarGoogle ScholarDigital LibraryDigital Library
  131. Sewell, P., Nardelli, F. Z., Owens, S., Peskine, G., Ridge, T., Sarkar, S., and Strnisa, R. 2007. Ott: Effective tool support for the working semanticist. In Proceedings of the International Conference on Functional Programming (ICFP). ACM, New York, 1--12. Google ScholarGoogle ScholarDigital LibraryDigital Library
  132. Skoglund, M. 2002. Sharing objects by read-only references. In Proceedings of the Conference on Algebraic Methodology and Software Technology (AMAST). Lecture Notes in Computer Science, vol. 2422, Springer, Berlin, 457--472. Google ScholarGoogle ScholarDigital LibraryDigital Library
  133. Skoglund, M. 2003. Investigating object-oriented encapsulation in theory and practice. Ph.D. dissertation, Stockholm University/Royal Institute of Technology.Google ScholarGoogle Scholar
  134. Smans, J., Jacobs, B., and Piessens, F. 2009. Implicit dynamic frames: Combining dynamic frames and separation logic. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, Springer, Berlin, 148--172. Google ScholarGoogle ScholarDigital LibraryDigital Library
  135. Sun Developer Network. 2010. Secure coding guidelines for the Java programming language, version 3.0. http://java.sun.com/security/seccodeguide.html.Google ScholarGoogle Scholar
  136. Tschantz, M. S. and Ernst, M. D. 2005. Javari: Adding reference immutability to Java. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM Press, 211--230. Google ScholarGoogle ScholarDigital LibraryDigital Library
  137. von Praun, C. and Gross, T. R. 2001. Object race detection. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM, New York, 70--82. Google ScholarGoogle ScholarDigital LibraryDigital Library
  138. Wadler, P. 1990. Linear types can change the world! In Proceedings of the Conference on Programming Concepts and Methods (PROCOMET). M. Broy and C. B. Jones Eds.Google ScholarGoogle Scholar
  139. Wrigstad, T. 2006. Ownership-based alias management. Ph.D. dissertation, Royal Institute of Technology, Sweden.Google ScholarGoogle Scholar
  140. Wrigstad, T. and Clarke, D. G. 2007. Existential owners for ownership types. J. Object Technol. 6, 4, 141--159.Google ScholarGoogle ScholarCross RefCross Ref
  141. Zibin, Y., Potanin, A., Ali, M., Artzi, S., Kiezun, A., and Ernst, M. D. 2007. Object and reference immutability using Java generics. In Proceedings of the European Software Engineering Conference/- Foundations of Software Engineering (ESEC/FSE). Google ScholarGoogle ScholarDigital LibraryDigital Library
  142. Zibin, Y., Potanin, A., Li, P., Ali, M., and Ernst, M. D. 2010. Ownership and immutability in generic Java. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM, New York. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Separating ownership topology and encapsulation with generic universe types

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            • Published in

              cover image ACM Transactions on Programming Languages and Systems
              ACM Transactions on Programming Languages and Systems  Volume 33, Issue 6
              December 2011
              145 pages
              ISSN:0164-0925
              EISSN:1558-4593
              DOI:10.1145/2049706
              Issue’s Table of Contents

              Copyright © 2012 ACM

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 3 January 2012
              • Accepted: 1 September 2011
              • Revised: 1 July 2011
              • Received: 1 June 2010
              Published in toplas Volume 33, Issue 6

              Permissions

              Request permissions about this article.

              Request Permissions

              Check for updates

              Qualifiers

              • research-article
              • Research
              • Refereed

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader
            About Cookies On This Site

            We use cookies to ensure that we give you the best experience on our website.

            Learn more

            Got it!