‹Programming› 2018
Mon 9 - Thu 12 April 2018 Nice, France
Thu 12 Apr 2018 11:00 - 11:30 at Baie des Anges A + B - Session 4

Programming languages and platforms improve over time, sometimes resulting in new language features that offer many benefits. However, despite these benefits, developers may not always be willing to adopt them in their projects for various reasons. In this paper, we describe an empirical study where we assess the adoption of a particular new language feature. Studying how developers use (or do not use) new language features is important in programming language research and engineering because it gives designers insight into the usability of the language to create meaning programs in that language. This knowledge, in turn, can drive future innovations in the area. Here, we explore Java 8 default methods, which allow interfaces to contain (instance) method implementations.

Default methods can ease interface evolution, make certain ubiquitous design patterns redundant, and improve both modularity and maintainability. A focus of this work is to discover, through a scientific approach and a novel technique, situations where developers found these constructs useful and where they did not, and the reasons for each. Although several studies center around assessing new language features, to the best of our knowledge, this kind of construct has not been previously considered.

Despite their benefits, we found that developers did not adopt default methods in all situations. Our study consisted of submitting pull requests introducing the language feature to 19 real-world, open source Java projects without altering original program semantics. This novel assessment technique is proactive in that the adoption was driven by an automatic refactoring approach rather than waiting for developers to discover and integrate the feature themselves. In this way, we set forth best practices and patterns of using the language feature effectively earlier rather than later and are able to possibly guide (near) future language evolution. We foresee this technique to be useful in assessing other new language features, design patterns, and other programming idioms.

Thu 12 Apr

Displayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change

10:30 - 12:00
10:30
30m
Talk
Fast, Flexible, Polyglot Instrumentation Support for Debuggers and other Tools
Research Papers
Michael Van De Vanter Oracle Labs, Chris Seaton Oracle Labs, Michael Haupt eBay, Christian Humer Oracle Labs, Switzerland, Thomas Wuerthinger Oracle Labs
Link to publication DOI
11:00
30m
Talk
Proactive Empirical Assessment of New Language Feature Adoption via Automated Refactoring: The Case of Java 8 Default Methods
Research Papers
Raffi Khatchadourian City University of New York (CUNY) Hunter College, Hidehiko Masuhara Tokyo Institute of Technology
Link to publication DOI
11:30
30m
Talk
Introspection for C and its Applications to Library Robustness
Research Papers
Manuel Rigger Johannes Kepler University Linz, Rene Mayrhofer Johannes Kepler University Linz, Roland Schatz Johannes Kepler University Linz, Matthias Grimmer Oracle Labs, Austria, Hanspeter Mössenböck JKU Linz, Austria
Link to publication DOI Media Attached