Abstract and Concrete Data Types vs Object Capabilities

  • James Noble
  • Alex Potanin
  • Toby Murray
  • Mark S. Miller


The distinctions between the two forms of procedural data abstraction—abstract data types and objects—are well known. An abstract data type provides an opaque type declaration, and an implementation that manipulates the modules of the abstract type, while an object uses procedural abstraction to hide an individual implementation. The object-capability model has been proposed to enable object-oriented programs to be written securely, and has been adopted by a number of practical languages including JavaScript, E, and Newspeak. This chapter addresses the questions: how can we implement abstract data types in an object-capability language? and, how can we incorporate primitive concrete data types into a primarily object-oriented system?


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.



We thank the anonymous reviewers for their comments. This work was supported in part by a James Cook Fellowship, by the Royal Society of New Zealand Marsden Fund, by Oracle Labs Australia, and by the US Department of Defense.


  1. 1.
    Gilad Bracha. Newspeak Programming Language Draft Specification Version 0.05. Tech. rep. Ministry of Truth, 2009.Google Scholar
  2. 2.
    Luca Cardelli et al. “Modula-3 language definition”. In: SIGPLAN Not. 27.8 (Aug. 1992), pp. 15–42. DOI: URL: Scholar
  3. 3.
    William R. Cook. “On understanding data abstraction, revisited”. In: OOPSLA Proceedings. 2009, pp. 557–572.Google Scholar
  4. 4.
    Christos Dimoulas et al. “Declarative Policies for Capability Control”. In: Proceedings of the 27th IEEE Computer Security Foundations Symposium. June 2014.Google Scholar
  5. 5.
    Sophia Drossopoulou, James Noble, and Mark. S. Miller. “Swapsies on the Internet”. In: PLAS 2015.Google Scholar
  6. 6.
    Adele Goldberg and David Robson. Smalltalk-80: The Language and its Implementation. Addison-Wesley, 1983.Google Scholar
  7. 7.
    Donald Gordon and James Noble. “Dynamic Ownership in a Dynamic Language”. In: DLS Proceedings. 2007, pp. 9–16.Google Scholar
  8. 8.
    Olivier Gruber and Fabienne Boyer. “Ownership-Based Isolation for Concurrent Actors on Multi-core Machines”. In: ECOOP. 2013, pp. 281–301.Google Scholar
  9. 9.
    Butler W. Lampson. “Protection”. In: Operating Systems Review 8.1 (Jan. 1974), pp. 18–24.Google Scholar
  10. 10.
    Barbara Liskov et al. “Abstraction Mechanisms in CLU” In: Comm. ACM 20.8 (Aug. 1977), pp. 564–576.Google Scholar
  11. 11.
    David MacQueen. “Modules for Standard ML”. In: LISP and Functional Programming Austin, Texas, United States: ACM, 1984, pp. 198–207. DOI: URL:
  12. 12.
    Mark S. Miller, Tom Van Cutsem, and Bill Tulloh. “Distributed Electronic Rights in JavaScript”. In: ESOP. 2013.Google Scholar
  13. 13.
    Mark Samuel Miller, Chip Morningstar, and Bill Frantz. “Capability-Based Financial Instruments: From Object to Capabilities”. In: Financial Cryptography. Springer, 2000.Google Scholar
  14. 14.
    Mark Samuel Miller. “Robust Composition: Towards a Unified Approach to Access Control and Concurrency Control”. PhD thesis. Baltimore, Maryland, 2006.Google Scholar
  15. 15.
    Mark Samuel Miller. “Secure Distributed Programming with Object-capabilities in JavaScript”. Talk at Vrije Universiteit Brussel, Oct. 2011.Google Scholar
  16. 16.
    James H. Morris Jr “Protection in Programming Languages”. In: CACM 16.1 (1973).Google Scholar
  17. 17.
    James H. Morris Jr. “Protection in Programming Languages”. In: Commun. ACM 16.1 (Jan. 1973), pp. 15–21. ISSN: 0001-0782. DOI: URL: Scholar
  18. 18.
    James Noble. “Iterators and Encapsulation”. In: TOOLS Europe. 2000.Google Scholar
  19. 19.
    James Noble, David Clarke, and John Potter “Object Ownership for Dynamic Alias Protection”. In: TOOLS Pacific 32. 1999.Google Scholar
  20. 20.
    James Noble and Alex Potanin. “On Owners-as-Accessors”. In: IWACO Proceedings. 2014.Google Scholar
  21. 21.
    James Noble et al. “Abstract Data Types in Object-Capability Systems”. In: IWACO Proceedings. 2016.Google Scholar
  22. 22.
    James Noble et al. “The left hand of equals”. In: Onward! ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software. 2016, pp. 224–237. DOI:
  23. 23.
    James Noble et al. “Towards a Model of Encapsulation”. In: IWACO Proceedings. Ed. by Dave Clarke. UU-CS-2003 030. Utrecht University, July 2003.Google Scholar
  24. 24.
    Alex Potanin, Monique Damitio, and James Noble. “Are Your Incoming Aliases Really Necessary? Counting the Cost of Object Ownership”. In: International Conference on Software Engineering (ICSE). 2013.Google Scholar
  25. 25.
    Eijiro Sumii and Benjamin C. Pierce. “A Bisimulation for Dynamic Sealing”. In: SIGPLAN Not. 39.1 (Jan. 2004), pp. 161–172. ISSN: 0362-1340. DOI: URL: CrossRefGoogle Scholar
  26. 26.
    David Ungar and Randall B. Smith. “SELF: The Power of Simplicity”. In: Lisp and Symbolic Computation 4.3 (June 1991).Google Scholar
  27. 27.
    Erwann Wernli, Pascal Maerki, and Oscar Nierstrasz. “Ownership, Filters and Crossing Handlers”. In: Dynamic Language Symposium (DLS). 2012.Google Scholar
  28. 28.
    Williaam A. Whitaker. “Ada - The Project: The DoD High Order Language Working Group”. In: HOPL Preprints. 1993, pp. 299–331.Google Scholar
  29. 29.
    Niklaus Wirth. Programming in Modula-2. isbn 0-387-15078-1. Springer Verlag, 1985.Google Scholar
  30. 30.
    William A. Wulf, Ralph L. London, and Mary Shaw. “An Introduction to the Construction and Verification of Alphard Programs”. In: IEEE Trans Softw. Eng. SE-2.4 (1976), pp. 253–265.Google Scholar

Copyright information

© Springer Nature Switzerland AG 2018

Authors and Affiliations

  • James Noble
    • 1
  • Alex Potanin
    • 1
  • Toby Murray
    • 2
  • Mark S. Miller
    • 3
  1. 1.Victoria University of WellingtonWellingtonNew Zealand
  2. 2.University of MelbourneMelbourneAustralia
  3. 3.AgoricSan FranciscoUSA

Personalised recommendations