发布:2023/12/7 15:51:35作者:大数据 来源:大数据 浏览次数:520
源码兼容的两个库可以相互替换,不会新增加任何的编译错误和行为改变(不兼容的行为改变可能会引发对应的源码修改)。比如从 akka-actor 的 2.6.10 版本 升级到 2.6.11 版本 不会引入任何的编译错误、也不会引起语义改变,那么我们可以说 akka-actor 的 2.6.11 版本对其 2.6.10 版本是源码兼容的。
说明:这里的两个版本都使用Java 1.8 进行编译, 并且使用了相同的 Scala版本。
二进制兼容的两个库可以相互替换,而不会引发任何的链接错误(LinkageError)。比如 某个人对内提供的包在 1.3.13 到 1.3.14 的两个版本之间只是修改了某个方法的内部实现(逻辑优化)。此时我们说 1.3.13 和 1.3.14 这两个版本之间是二进制兼容的。
通常来说,破坏源码兼容性也会破坏二进制兼容性,而破坏二进制兼容性,则不一定破坏了破坏源码兼容性。比如在原来的某个方法基础上增加了一个参数,那么这个时候我同时破坏了源码兼容性和二进制兼容性。而如果我在不修改方法签名的情况下,在之前的版本使用Java 6编译,在新的版本实现中,我在内部实现利用了部分Java 8的特性和语法并使用Java 8 进行编译和发布。那么这个时候新的版本没有破坏源码兼容性,却破坏了二进制兼容性;此时在JVM 6 上运行会报错。
© Copyright 2014 - 2025 柏港建站平台 ejk5.com. 渝ICP备16000791号-4