Why and How Java']Java Developers Break APIs

被引:0
|
作者
Brito, Aline [1 ]
Xavier, Laerte [1 ]
Hora, Andre [2 ]
Valente, Marco Tulio [1 ]
机构
[1] Univ Fed Minas Gerais, Dept Comp Sci DCC, ASERG Grp, Belo Horizonte, MG, Brazil
[2] Univ Fed Mato Grosso do Sul, Fac Comp Sci FACOM, Campo Grande, MS, Brazil
关键词
API Evolution; Breaking Changes; Field Study; RECOMMENDATION; USAGE;
D O I
暂无
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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.
引用
收藏
页码:255 / 265
页数:11
相关论文
共 50 条
  • [1] How Java']Java APIs break - An empirical study
    Jezek, Kamil
    Dietrich, Jens
    Brada, Premek
    INFORMATION AND SOFTWARE TECHNOLOGY, 2015, 65 : 129 - 146
  • [2] "Jumping Through Hoops": Why do Java']Java Developers Struggle With Cryptography APIs?
    Nadi, Sarah
    Krueger, Stefan
    Mezini, Mira
    Bodden, Eric
    2016 IEEE/ACM 38TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2016, : 935 - 946
  • [3] Why and How Java']JavaScript Developers Use Linters
    Tomasdottir, Kristin Fjola
    Aniche, Mauricio
    van Deursen, Arie
    PROCEEDINGS OF THE 2017 32ND IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING (ASE'17), 2017, : 578 - 589
  • [4] Mock objects for testing java']java systems: Why and how developers use them, and how they evolve
    Spadini, Davide
    Aniche, Mauricio
    Bruntink, Magiel
    Bacchelli, Alberto
    EMPIRICAL SOFTWARE ENGINEERING, 2019, 24 (03) : 1461 - 1498
  • [5] How Developers Use Exception Handling in Java']Java?
    Asaduzzaman, Muhammad
    Ahasanuzzaman, Muhammad
    Roy, Chanchal K.
    Schneider, Kevin A.
    13TH WORKING CONFERENCE ON MINING SOFTWARE REPOSITORIES (MSR 2016), 2016, : 516 - 519
  • [6] Why Do Developers Remove Lambda Expressions in Java']Java?
    Zheng, Mingwei
    Yang, Jun
    Wen, Ming
    Zhu, Hengcheng
    Liu, Yepang
    Jin, Hai
    2021 36TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING ASE 2021, 2021, : 67 - 78
  • [7] How Do Developers Use the Java']Java Stream API?
    Nostas, Joshua
    Sandoval Alcocer, Juan Pablo
    Elias Costa, Diego
    Bergel, Alexandre
    COMPUTATIONAL SCIENCE AND ITS APPLICATIONS, ICCSA 2021, PT VII, 2021, 12955 : 323 - 335
  • [8] How are Java']Java software developers usiong the eclipse IDE?
    Murphy, Gail C.
    Kersten, Mik
    Findlater, Leah
    IEEE SOFTWARE, 2006, 23 (04) : 76 - +
  • [9] What Java']Java developers know about compatibility, and why this matters
    Dietrich, Jens
    Jezek, Kamil
    Brada, Premek
    EMPIRICAL SOFTWARE ENGINEERING, 2016, 21 (03) : 1371 - 1396
  • [10] A voice for Java']Java developers
    Ross, R
    BYTE, 1997, 22 (12): : 44 - 44