arrow
Return

What Java developers know about compatibility, and why this matters

delete2015-07-11
delete12
delete
OA
AI
J
Jens Dietrich *
K
Kamil Ježek
P
Přemek Brada
DOI:10.1007/s10664-015-9389-1delete
deleteOriginal
deleteShare
deleteSave
View PDF
Abstract

Abstract

En 中文
Real-world programs are neither monolithic nor static-they are constructed using platform and third party libraries, and both programs and libraries continuously evolve in response to change pressure. In case of the Java language, rules defined in the Java Language and Java Virtual Machine Specifications define when library evolution is safe. These rules distinguish between three types of compatibility-binary, source and behavioural. We claim that some of these rules are counter intuitive and not well-understood by many developers. We present the results of a survey where we quizzed developers about their understanding of the various types of compatibility. 414 developers responded to our survey. We find that while most programmers are familiar with the rules of source compatibility, they generally lack knowledge about the rules of binary and behavioural compatibility. This can be problematic when organisations switch from integration builds to technologies that require dynamic linking, such as OSGi. We have assessed the gravity of the problem by studying how often linkage-related problems are referenced in issue tracking systems, and find that they are common.
Keywords:
Java
Binary compatibility
API compatibility
Empirical study
User survey
Linking
AI Summary

AI Summary

Key information extracted from the uploaded paper, including a brief overview, abstract, background, key highlights, visual analysis, and future outlook.

Journal

Empirical Software Engineering cover
Empirical Software Engineering
IF:
3.6
Papers:
2.0K
Citations:
5.3K

Organization

U
university of west bohemia pilsen
Scholars:
1.6K
Papers: 1.3K
Citations: 8
M
Massey University
Scholars:
7.7K
Papers: 7.8K
Citations: 9.6K