Modular Session Types for Distributed Object-Oriented Programming

被引:11
|
作者
Gay, Simon J. [1 ]
Vasconcclos, Vasco T. [2 ]
Ravara, Antonio [3 ,4 ,5 ,6 ]
Gesbert, Nils [1 ]
Caldeira, Alexandre Z. [2 ]
机构
[1] Univ Glasgow, Dept Comp Sci, Glasgow G12 8QQ, Lanark, Scotland
[2] Univ Lisbon, Dept Informat, P-1699 Lisbon, Portugal
[3] Univ Nova Lisboa, CITI, Lisbon, Portugal
[4] Univ Nova Lisboa, Dept Informat, FCT, Lisbon, Portugal
[5] Univ Tecn Lisboa, SQIG, Inst Telecomunicacoes, P-1100 Lisbon, Portugal
[6] Univ Tecn Lisboa, Dept Math, IST, P-1100 Lisbon, Portugal
关键词
Languages; Theory; Verification; Session types; object-oriented calculus; non-uniform method availability; typestates; LANGUAGE; CHECKING; STATE;
D O I
10.1145/1707801.1706335
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Session types allow communication protocols to be specified type-theoretically so that protocol implementations can be verified by static type-checking. We extend previous work on session types for distributed object-oriented languages in three ways. (1) We attach a session type to a class definition, to specify the possible sequences of method calls. (2) We allow a session type (protocol) implementation to be modularized, i.e. partitioned into separately-callable methods. (3) We treat session-typed communication channels as objects, integrating their session types with the session types of classes. The result is an elegant unification of communication channels and their session types, distributed object-oriented programming, and a form of typestates supporting non-uniform objects, i.e. objects that dynamically change the set of available methods. We define syntax, operational semantics, a sound type system, and a correct and complete type checking algorithm for a small distributed class-based object-oriented language. Static typing guarantees that both sequences of messages on channels, and sequences of method calls on objects, conform to type-theoretic specifications, thus ensuring type-safety. The language includes expected features of session types, such as delegation, and expected features of object-oriented programming, such as encapsulation of local state. We also describe a prototype implementation as an extension of Java.
引用
收藏
页码:299 / 312
页数:14
相关论文
共 50 条
  • [21] Inferable Object-Oriented Typed Assembly Language
    Tate, Ross
    Chen, Juan
    Hawblitzel, Chris
    ACM SIGPLAN NOTICES, 2010, 45 (06) : 424 - 435
  • [22] A logic for information flow in object-oriented programs
    Amtoft, T
    Bandhakavi, S
    Banerjee, A
    ACM SIGPLAN NOTICES, 2006, 41 (01) : 91 - 102
  • [23] Integrating object-oriented programming and protected objects in Ada 95
    Wellings, AJ
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2000, 22 (03): : 506 - 539
  • [24] Logic Java']Java: Combining Object-Oriented and Logic Programming
    Majchrzak, Tim A.
    Kuchen, Herbert
    FUNCTIONAL AND CONSTRAINT LOGIC PROGRAMMING, 2011, 6816 : 122 - 137
  • [25] Associated types and constraint propagation for mainstream object-oriented generics
    Järvi, J
    Willcock, J
    Lumsdaine, A
    ACM SIGPLAN NOTICES, 2005, 40 (10) : 1 - 19
  • [26] HydroJ: Object-oriented pattern matching for evolvable distributed systems
    Lee, K
    LaMarca, A
    Chambers, C
    ACM SIGPLAN NOTICES, 2003, 38 (11) : 205 - 223
  • [27] Containerless Plurals: Separating Number from Type in Object-Oriented Programming
    Steimann, Friedrich
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2022, 44 (04):
  • [28] Explicit Use-case Representation in Object-oriented Programming Languages
    Hirschfeld, Robert
    Perscheid, Michael
    Haupt, Michael
    ACM SIGPLAN NOTICES, 2012, 47 (02) : 51 - 60
  • [29] An efficient method for checking object-oriented database schema correctness
    Formica, A
    Groger, HD
    Missikoff, M
    ACM TRANSACTIONS ON DATABASE SYSTEMS, 1998, 23 (03): : 333 - 368
  • [30] A logical foundation for deductive object-oriented databases
    Liu, MC
    Dobbie, G
    Ling, TW
    ACM TRANSACTIONS ON DATABASE SYSTEMS, 2002, 27 (01): : 117 - 151