What is Java binary compatibility?
File(s)BinaryCompatibility.pdf (333.52 KB)
Accepted version
Author(s)
Drossopoulou, S
Wragg, D
Eisenbach, S
Type
Journal Article
Abstract
Separate compilation allows the decomposition of programs into units that may be compiled separately, and linked into an executable. Traditionally, separate compilation was equivalent to the compilation of all units together, and modification and re-compilation of one unit required re-compilation of all importing units.Java suggests a more flexible framework, in which the linker checks the integrity of the binaries to be combined. Certain source code modifications, such as addition of methods to classes, are defined as binary compatible. The language description guarantees that binaries of types (i.e. classes or interfaces) modified in binary compatible ways may be re-compiled and linked with the binaries of types that imported and were compiled using the earlier versions of the modified types.However, this is not always the case: some of the changes considered by Java as binary compatible do not guarantee successful linking and execution. In this paper we study the concepts around binary compatibility. We suggest a formalization of the requirement of safe linking and execution without re-compilation, investigate alternatives, demonstrate several of its properties, and propose a more restricted definition of binary compatible changes. Finally, we prove for a substantial subset of Java, that this restricted definition guarantees error-free linking and execution.
Date Issued
1998-10
Citation
ACM SIGPLAN NOTICES, 1998, 33 (10), pp.341-361
ISSN
0362-1340
Publisher
ASSOC COMPUTING MACHINERY
Start Page
341
End Page
361
Journal / Book Title
ACM SIGPLAN NOTICES
Volume
33
Issue
10
Copyright Statement
© ACM, 1998. This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version was published in ACM SIGPLAN NOTICES, {VOL:33, ISS:10, (1998). (Also published in Conference on Object Oriented Programming Systems Languages and Applications: Proceedings of the 13th ACM Sigplan OOPSLA (1998))
http://doi.acm.org/10.1145/286936.286974
http://doi.acm.org/10.1145/286936.286974
Source Volume Number
33