Abstract. Most graphical user interface (GUI) libraries forbid accessing UI ele-ments from threads other than the UI event loop thread. Violating this requirement leads to a program crash or an inconsistent UI. Unfortunately, such errors are all too common in GUI programs. We present a polymorphic type and effect system that prevents non-UI threads from accessing UI objects or invoking UI-thread-only methods. The type system still permits non-UI threads to hold and pass references to UI objects. We implemented this type system for Java and annotated 8 Java programs (over 140KLOC) for the type system, including several of the most popular Eclipse plugins. We confirmed bugs found by unsound prior work, found an additional bug and code smells,...
This paper introduces the Checker Framework, which supports adding pluggable type systems to the Jav...
The goal of this thesis is to explore ways of integrating an API-misuse detector into Eclipse, one o...
This paper introduces the artifact for Usability-Oriented Design of Liquid Types for Java. We presen...
Information hiding is a positive consequence of properly defining component interfaces. Unfortunatel...
International audienceContext. User Interfaces (UIs) intensively rely on event-driven programming: w...
Java access modifiers regulate interactions among software components. In particular, class modifier...
With the rise of modern programming languages like Java that include native support for multi-thread...
Java access modifiers regulate interactions among software components. In particular, class modifier...
Effect handling is a way to structure and scope side-effects which is gaining popularity as an alter...
International audienceSince most software systems provide their users with interactive features, bui...
International audienceGraphical User Interfaces (GUIs) intensively rely on event-driven programming:...
Within the Java platform, there are many easy reach GUI libraries, among which developers can choose...
Prevailing Aspect-Oriented Programming (AOP) frameworks for Java, such as AspectJ, use bytecode inst...
We have identified three patterns in the source code to identify over-exposed methods. We also propo...
In this paper, we describe static analysis techniques for finding bugs in programs using the Java Na...
This paper introduces the Checker Framework, which supports adding pluggable type systems to the Jav...
The goal of this thesis is to explore ways of integrating an API-misuse detector into Eclipse, one o...
This paper introduces the artifact for Usability-Oriented Design of Liquid Types for Java. We presen...
Information hiding is a positive consequence of properly defining component interfaces. Unfortunatel...
International audienceContext. User Interfaces (UIs) intensively rely on event-driven programming: w...
Java access modifiers regulate interactions among software components. In particular, class modifier...
With the rise of modern programming languages like Java that include native support for multi-thread...
Java access modifiers regulate interactions among software components. In particular, class modifier...
Effect handling is a way to structure and scope side-effects which is gaining popularity as an alter...
International audienceSince most software systems provide their users with interactive features, bui...
International audienceGraphical User Interfaces (GUIs) intensively rely on event-driven programming:...
Within the Java platform, there are many easy reach GUI libraries, among which developers can choose...
Prevailing Aspect-Oriented Programming (AOP) frameworks for Java, such as AspectJ, use bytecode inst...
We have identified three patterns in the source code to identify over-exposed methods. We also propo...
In this paper, we describe static analysis techniques for finding bugs in programs using the Java Na...
This paper introduces the Checker Framework, which supports adding pluggable type systems to the Jav...
The goal of this thesis is to explore ways of integrating an API-misuse detector into Eclipse, one o...
This paper introduces the artifact for Usability-Oriented Design of Liquid Types for Java. We presen...