Nominal and structural subtyping each have their own strengths and weaknesses. Nominal subtyping allows programmers to explicitly express design intent, and, when types are associa...
Verification of object-oriented programs relies on object invariants which express consistency criteria of objects. The semantics of object invariants is subtle, mainly because of...
Sophia Drossopoulou, Adrian Francalanza, Peter M&u...
Abstract. The state design pattern is the standard object-oriented programming idiom for implementing the state machine logic of interactive applications. While this pattern provid...
Wildcards are a complex and subtle part of the Java type system, present since version 5.0. Although there have been various formalisations and partial type soundness results conce...
Nicholas R. Cameron, Sophia Drossopoulou, Erik Ern...
Abstract. We analyse the validity of several common program transformations in multi-threaded Java, as defined by the Java Memory Model (JMM) section of Chapter 17 of the Java Lang...
One of the most important decisions about the architecture of a server program is its concurrency mechanisms. However, a good concurrency model for general-purpose server programs ...
Abstract. Program maintenance usually decreases the programs availability. This is not acceptable for highly available applications. Thus, such applications have to be changed at r...
Abstract. Javari is an extension of Java that supports reference immutability constraints. Programmers write readonly type qualifiers and other constraints, and the Javari typechec...
Jaime Quinonez, Matthew S. Tschantz, Michael D. Er...
Abstract The importance of providing integration architectures in every field of application is beyond controversy these days. Unfortunately, existing solutions are focusing mainly...