Abstract
Active objects offer a structured approach to concurrency, encapsulating both unshared state and a thread of control. For efficient data transfer, data should be passed by reference whenever possible, but this introduces aliasing and undermines the validity of the active objects. This paper proposes a minimal variant of ownership types that preserves the required race freedom invariant yet enables data transfer by reference between active objects (that is, without copying) in many cases, and a cheap clone operation where copying is necessary. Our approach is general and should be adaptable to several existing active object systems.
This work is in the context of the EU project IST-33826 CREDO: Modeling and analysis of evolutionary structures for distributed services (http:// credo.cwi.nl).
Access provided by Autonomous University of Puebla. Download to read the full chapter text
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Agha, G., Hewitt, C.: Actors: A conceptual foundation for concurrent object-oriented programming. In: Research Directions in Object-Oriented Programming, pp. 49–74. MIT Press, Cambridge (1987)
Aldrich, J., Chambers, C.: Ownership Domains: Separating Aliasing Policy from Mechanism. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 1–25. Springer, Heidelberg (2004)
Aldrich, J., Kostadinov, V., Chambers, C.: Alias Annotations for Program Understanding. In: OOPSLA (November 2002)
Almeida, P.S.: Balloon Types: Controlling sharing of state in data types. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 32–59. Springer, Heidelberg (1997)
Armstrong, J.: Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf (2007)
Auerbach, J., Bacon, D., Guerraoui, R., Spring, J., Vitek, J.: Flexible task graphs: A unified restricted thread programming model for java. In: LCTES (2008)
Bacon, D.F., Strom, R.E., Tarafdar, A.: Guava: a dialect of Java without data races. In: OOPSLA (2000)
Baduel, L., Baude, F., Caromel, D., Contes, A., Huet, F., Morel, M., Quilici, R.: Grid Computing: Software Environments and Tools. In: Chapter Programming, Composing, Deploying, for the Grid. Springer, Heidelberg (2006)
Baker Jr., H.G., Hewitt, C.: The incremental garbage collection of processes. In: Proceeding of the Symposium on Artificial Intelligence Programming Languages, ACMSIGPLAN Notices, August 1977, vol. 12, p. 11 (1977)
Birka, A., Ernst, M.D.: A practical type system and language for reference immutability. In: OOPSLA, October 2004, pp. 35–49 (2004)
Boyapati, C., Lee, R., Rinard, M.: Ownership Types for Safe Programming: Preventing Data Races and Deadlocks. In: OOPSLA (2002)
Boyapati, C., Liskov, B., Shrira, L.: Ownership Types for Object Encapsulation. In: POPL (2003)
Boyapati, C., Rinard, M.: A Parameterized Type System for Race-Free Java Programs. In: OOPSLA (2001)
Boyland, J.: Alias burying: Unique variables without destructive reads. Software—Practice and Experience 31(6), 533–553 (2001)
Boyland, J.: Why we should not add readonly to Java (yet). Journal of Object Technology 5(5), 5–29 (June 2006) Special issue: ECOOP 2005 Workshop FTfJP.
Carlsson, R., Sagonas, K.F., Wilhelmsson, J.: Message analysis for concurrent programs using message passing. ACM TOPLAS 28(4), 715–746 (2006)
Caromel, D.: Service, Asynchrony, and Wait-By-Necessity. Journal of Object Orientated Programming (JOOP), 12–22 (November 1989)
Caromel, D., Henrio, L.: A Theory of Distributed Objects. Springer, Heidelberg (2005)
Clarke, D.: Object Ownership and Containment. Ph.D thesis, School of Computer Science and Engineering, University of New South Wales, Sydney, Australia (2001)
Clarke, D., Drossopolou, S.: Ownership, Encapsulation and the Disjointness of Type and Effect. In: OOPSLA (2002)
Clarke, D., Wrigstad, T.: External uniqueness is unique enough. In: Cardelli, L. (ed.) European Conference on Object-Oriented Programming. LNCS, vol. 2473, pp. 176–200. Springer, Heidelberg (2002)
Clarke, D., Wrigstad, T., Östlund, J., Johnsen, E.B.: Minimal Ownership for Active Objects. Technical Report SEN-R0803, CWI (June 2008), http://ftp.cwi.nl/CWIreports/SEN/SEN-R0803.pdf
Clarke, D.G., Potter, J., Noble, J.: Ownership types for flexible alias protection. In: OOPSLA, pp. 48–64 (1998)
Cunningham, D., Drossopoulou, S., Eisenbach, S.: Universe Types for Race Safety. In: VAMP 2007, September 2007, pp. 20–51 (2007)
de Boer, F.S., Clarke, D., Johnsen, E.B.: A complete guide to the future. In: de Nicola, R. (ed.) ESOP 2007. LNCS, vol. 4421, pp. 316–330. Springer, Heidelberg (2007)
de Jong, H.: Flexible Heterogeneous Software Systems. PhD thesis, Faculty of Natural Sciences, Math. and Computer Science, Uni. of Amsterdam (January 2007)
Drossopoulou, S., Clarke, D., Noble, J.: Types for hierarchic shapes. In: Sestoft, P. (ed.) ESOP 2006. LNCS, vol. 3924, pp. 1–6. Springer, Heidelberg (2006)
Fahndrich, M., Xia, S.: Establishing object invariants with delayed types. SIGPLAN Not. 42(10), 337–350 (2007)
Grossman, D., Hicks, M., Jim, T., Morrisett, G.: Cyclone: A type-safe dialect of C. C/C++ Users Journal 23(1) (January 2005)
Hogg, J.: Islands: Aliasing protection in object-oriented languages. In: OOPSLA (November 1991)
Hogg, J., Lea, D., Wills, A., de Champeaux, D., Holt, R.: The Geneva Convention on the treatment of object aliasing. OOPS Messenger 3(2), 11–16 (1992)
Hunt, G., Larus, J.: Singularity: Rethinking the software stack. Operating Systems Review 40(2), 37–49 (2007)
Hutchinson, N.C., Raj, R.K., Black, A.P., Levy, H.M., Jul, E.: The Emerald programming language report. Technical Report 87-10-07, Seattle, WA (USA) (1987) (Revised 1997)
Johnsen, E.B., Owe, O.: An asynchronous communication model for distributed concurrent objects. Software and Systems Modeling 6(1), 35–58 (2007)
Jones, S.P., Hughes. J. (eds.): Haskell 98: A non-strict, purely functional language. Technical report (February 1999)
Kotselidis, C., Ansari, M., Jarvis, K., Luján, M., Kirkham, C., Watson, I.: Investigating software transactional memory on clusters. In: IWJPDC 2008. IEEE Computer Society Press, Los Alamitos (2008)
Lavender, R.G., Schmidt, D.C.: Active object: an object behavioral pattern for concurrent programming. In: Proc. Pattern Languages of Programs (1995)
Lea, D.: Concurrent Programming in Java, 2nd edn. Addison-Wesley, Reading (2000)
Ma, K.-K., Foster, J.S.: Inferring aliasing and encapsulation properties for Java. In: OOPSLA, pp. 423–440 (2007)
Meyer, B.: Eiffel: The Language. Prentice-Hall, Englewood Cliffs (1992)
Meyer, B.: Systematic concurrent object-oriented programming. CACM 36(9), 56–80 (1993)
Minsky, N.H.: Towards alias-free pointers. In: Cointe, P. (ed.) ECOOP 1996. LNCS, vol. 1098, pp. 189–209. Springer, Heidelberg (1996)
Morris, B.: CActive and Friends. Symbian Developer Network (November 2007), http://developer.symbian.com/main/downloads/papers/CActiveAndFriends/CActiveAndFriends.pdf
Müller, P.: Modular Specification and Verification of Object-Oriented Programs. LNCS, vol. 2262. Springer, Heidelberg (2002)
Müller, P., Poetzsch-Heffter, A.: Universes: A type system for controlling representation exposure. In: Poetzsch-Heffter, A., Meyer, J. (eds.), Programming Languages and Fundamentals of Programming, pp. 131–140. Technical Report 263, Fernuniversität Hagen (1999)
Nienaltowski, P.: Practical framework for contract-based concurrent object-oriented programming. Ph.D thesis, Department of Computer Science, ETH Zurich (2007)
Noble, J., Clarke, D., Potter, J.: Object ownership for dynamic alias protection. In: TOOLS Pacific, Melbourne, Australia (November 1999)
Noble, J., Vitek, J., Potter, J.: Flexible Alias Protection. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445. Springer, Heidelberg (1998)
Östlund, J., Wrigstad, T., Clarke, D., Åkerblom, B.: Ownership, uniqueness and immutability. In: IWACO (2007)
Potanin, A., Noble, J.: Checking ownership and confinement properties. In: Formal Techniques for Java-like Programs (2002)
Raj, R.K., Tempero, E., Levy, H.M., Black, A.P., Hutchinson, N.C., Jul, E.: Emerald: A general-purpose programming language. Software: Practice and Experience 21(1), 91–118 (1991)
Saraswat, V.A., Sarkar, V., von Praun, C.: X10: concurrent programming for modern architectures. In: Yelick, K.A., Mellor-Crummey, J.M. (eds.) Principles and Practice of Parallel Programming (2007)
Schäfer, J., Poetzsch-Heffter, A.: CoBoxes: Unifying active objects and structured heaps. In: Barthe, G., de Boer, F.S. (eds.) FMOODS 2008. LNCS, vol. 5051, pp. 201–219. Springer, Heidelberg (2008)
Shavit, N., Touitou, D.: Software transactional memory. In: PODC 1995, pp. 204–213. ACM Press, New York (1995)
Skoglund, M., Wrigstad, T.: Alias control with read-only references. In: Sixth Conference on Computer Science and Informatics (March 2002)
Spring, J.H., Privat, J., Guerraoui, R., Vitek, J.: StreamFlex: High-throughput Stream Programming in Java. In: OOPSLA (October 2007)
Stroustrup, B.: The C++ Programming Language. Addison-Wesley, Reading (1986)
Tschantz, M.S., Ernst, M.D.: Javari: Adding reference immutability to Java. In: OOPSLA, pp. 211–230 (October 2005)
Wrigstad, T.: Ownership-Based Alias Management. PhD thesis, Royal Institute of Technology, Kista, Stockholm (May 2006)
Wrigstad, T., Clarke, D.: Existential owners for ownership types. Journal of Object Technology 4(6), 141–159 (2007)
Yonezawa, A., Briot, J.-P., Shibayama, E.: Object-oriented concurrent programming in ABCL/1. In: OOPSLA 1986. SIGPLAN Notices, vol. 21(11), pp. 258–268 (November 1986)
Zibin, Y., Potanin, A., Ali, M., Artzi, S., Kiezun, A., Ernst, M.D.: Object and reference immutability using Java generics. In: Crnkovic, I., Bertolino, A. (eds.) ESEC/SIGSOFT FSE, pp. 75–84. ACM Press, New York (2007)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Clarke, D., Wrigstad, T., Östlund, J., Johnsen, E.B. (2008). Minimal Ownership for Active Objects. In: Ramalingam, G. (eds) Programming Languages and Systems. APLAS 2008. Lecture Notes in Computer Science, vol 5356. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-89330-1_11
Download citation
DOI: https://doi.org/10.1007/978-3-540-89330-1_11
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-89329-5
Online ISBN: 978-3-540-89330-1
eBook Packages: Computer ScienceComputer Science (R0)