DeepAI AI Chat
Log In Sign Up

Why and How Java Developers Break APIs

by   Aline Brito, et al.
Universidade Federal de Minas Gerais
Universidade Federal de Mato Grosso do Sul

Modern software development depends on APIs to reuse code and increase productivity. As most software systems, these libraries and frameworks also evolve, which may break existing clients. However, the main reasons to introduce breaking changes in APIs are unclear. Therefore, in this paper, we report the results of an almost 4-month long field study with the developers of 400 popular Java libraries and frameworks. We configured an infrastructure to observe all changes in these libraries and to detect breaking changes shortly after their introduction in the code. After identifying breaking changes, we asked the developers to explain the reasons behind their decision to change the APIs. During the study, we identified 59 breaking changes, confirmed by the developers of 19 projects. By analyzing the developers' answers, we report that breaking changes are mostly motivated by the need to implement new features, by the desire to make the APIs simpler and with fewer elements, and to improve maintainability. We conclude by providing suggestions to language designers, tool builders, software engineering researchers and API developers.


Breaking Bad? Semantic Versioning and Impact of Breaking Changes in Maven Central

Just like any software, libraries evolve to incorporate new features, bu...

V2: Fast Detection of Configuration Drift in Python

Code snippets are prevalent, but are hard to reuse because they often la...

An Empirical Study on the Impact of Refactoring Activities on Evolving Client-Used APIs

Context: Refactoring is recognized as an effective practice to maintain ...

Analyzing the Impact of Pull Requests to Guide Library Evolution

"If we make this change to our code, how will it impact our clients?" It...

Identifying Experts in Software Libraries and Frameworks among GitHub Users

Software development increasingly depends on libraries and frameworks to...

Putting the Semantics into Semantic Versioning

The long-standing aspiration for software reuse has made astonishing str...

Worst Smells and Their Worst Reasons

The aims of this paper are: 1) to identify "worst smells", i.e., bad sme...