arrow
返回

How Java APIs break - An empirical study

delete2015-09-01
delete41
PRE
AI
K
Kamil Ježek
J
Jens Dietrich *
P
Přemek Brada
DOI:10.1016/j.infsof.2015.02.014delete
delete原文链接
delete分享
delete收藏
摘要

摘要

En 中文
Context: It has become common practice to build programs by using libraries. While the benefits of reuse are well known, an often overlooked risk are system runtime failures due to API changes in libraries that evolve independently. Traditionally, the consistency between a program and the libraries it uses is checked at build time when the entire system is compiled and tested. However, the trend towards partially upgrading systems by redeploying only evolved library versions results in situations where these crucial verification steps are skipped. For Java programs, partial upgrades create additional interesting problems as the compiler and the virtual machine use different rule sets to enforce contracts between the providers and the consumers of APIs. Objective: We have studied the extent of the problem in real world programs. We were interested in two aspects: the compatibility of API changes as libraries evolve, and the impact this has on programs using these libraries. Method: This study is based on the qualitas corpus version 20120401. A data set consisting of 109 Java open-source programs and 564 program versions was used from this corpus. We have investigated two types of library dependencies: explicit dependencies to embedded libraries, and dependencies defined by symbolic references in Maven build files that are resolved at build time. We have used JaCC for API analysis, this tool is based on the popular ASM byte code analysis library. Results: We found that for most of the programs we investigated, APIs are unstable as incompatible changes are common. Surprisingly, there are more compatibility problems in projects that use automated dependency resolution. However, we found only a few cases where this has an actual impact on other programs using such an API. Conclusion: It is concluded that API instability is common and causes problems for programs using these APIs. Therefore, better tools and methods are needed to safeguard library evolution. (C) 2015 Elsevier B.V. All rights reserved.
Keyword:
Binary compatibility
API evolution
Backward compatibility
Byte-code
Java
AI总结

AI总结

对已上传原文的论文进行重点信息的提取,主要内容包括:简要概述、研究摘要、背景介绍、关键亮点、图文解析、展望与总结。

期刊

Information and Software Technology 封面图
Information and Software Technology
IF:
4.3
论文数:
3.8K
被引数:
7.7K

机构

M
Massey University
学者数:
7.7K
论文数: 7.9K
被引数: 9.6K
U
university of west bohemia pilsen
学者数:
1.6K
论文数: 1.4K
被引数: 8
引用论文

引用论文

err分享
err收藏
Cross-facial and functional microvascular muscle transplantation for longstanding facial paralysis
err2002-10-01
err0
PREAI
errHarry J Buncke; Gregory M Buncke; Gabriel M Kind; Rudolf F Buntic; Darrell Brooks; Brien T Chin
err分享
err收藏
err分享
err收藏
err分享
err收藏
An atom faucet原子水龙头
err2001-08-01
err0
PREAI
errW. Wohlleben; F. Chevy; K. Madison; J. Dalibard
err分享
err收藏
In the beginning..2
err2014-10-22
err0
errOAAI
errWilliam C. Summers
err分享
err收藏
没有更多内容