User-driven Design and Evaluation of Liquid Types in Java

10/11/2021
by   Catarina Gamboa, et al.
0

Bugs that are detected earlier during the development lifecycle are easier and cheaper to fix, whereas bugs that are found during production are difficult and expensive to address, and may have dire consequences. Type systems are particularly effective at identifying and preventing bugs early in the development lifecycle by causing invalid programs to result in build failure. Liquid Types are more powerful than those found in mainstream programming languages, allowing the detection of more classes of bugs. However, while Liquid Types were proposed in 2008 with their integration in ML and subsequently introduced in C (2012), Javascript(2012) and Haskell(2014) through language extensions, they have yet to become widely adopted by mainstream developers. This paper investigates how Liquid Types can be integrated in a mainstream programming language, Java, by proposing a new design that aims to lower the barrier to entry and adapts to problems that Java developers commonly encounter at runtime. To promote accessibility, we conducted a series of developer surveys to design the syntax of LiquidJava, our prototype. To evaluate the prototype's usability, we conducted a user study of 30 Java developers, concluding that users intend to use LiquidJava and that it helped to find more bugs and debug faster.

READ FULL TEXT

page 3

page 5

page 7

research
12/10/2019

User-Centered Programming Language Design in the Obsidian Smart Contract Language

Programming language designers commonly guess what language designs woul...
research
09/28/2018

Memory and Resource Leak Defects and their Repairs in Java Projects

Despite huge software engineering efforts and programming language suppo...
research
03/17/2021

On the Rise and Fall of Simple Stupid Bugs: a Life-Cycle Analysis of SStuBs

Bug detection and prevention is one of the most important goals of softw...
research
09/21/2020

Recommending Stack Overflow Posts for Fixing Runtime Exceptions using Failure Scenario Matching

Using online Q A forums, such as Stack Overflow (SO), for guidance to ...
research
08/23/2021

Q A MAESTRO: Q A Post Recommendation for Fixing Java Runtime Exceptions

Programmers often use Q A sites (e.g., Stack Overflow) to understand a...
research
05/18/2018

Towards Taming Java Wildcards and Extending Java with Interval Types

Of the complex features of generic nominally-typed OO type systems, wild...
research
03/27/2018

Proactive Empirical Assessment of New Language Feature Adoption via Automated Refactoring: The Case of Java 8 Default Methods

Programming languages and platforms improve over time, sometimes resulti...

Please sign up or login with your details

Forgot password? Click here to reset