What Java Developers Know About Compatibility, And Why This Matters
Jens Dietrich, Kamil Jezek, Premek Brada

TL;DR
This paper investigates Java developers' understanding of compatibility rules, revealing gaps in knowledge about binary and behavioral compatibility, which can lead to linkage issues in dynamic linking scenarios.
Contribution
It provides empirical data on developers' understanding of Java compatibility rules and highlights the practical implications of misconceptions in real-world software evolution.
Findings
Most developers understand source compatibility rules.
Many lack knowledge of binary and behavioral compatibility.
Linkage problems are frequently reported in issue trackers.
Abstract
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsAdvanced Software Engineering Methodologies · Software Engineering Research · Software System Performance and Reliability
