与C ++相比,Java的向后兼容性

时间:2017-01-22 10:14:51

标签: c++ boost package backwards-compatibility

我用C ++编写了一段时间,我已经习惯了平台兼容性问题。但现在,我意识到向后兼容性是另一个重要问题:

  

Boost库如何成功用于重要项目?

     

许多Boost库都得到了积极的维护和改进,因此无法始终向后兼容先前版本

(来源:http://www.boost.org/users/faq.html

Java是否有同样的问题?我知道情况因包而异,但是与boost一样着名的Java包在C ++世界中怎么样?

1 个答案:

答案 0 :(得分:3)

你已经在Boost常见问题解答中方便地剪掉了其余的答案,它会告诉你如何处理这个问题:

  

通过冻结所使用的Boost库的版本来解决这个问题   你的项目。只能在项目生命周期中的某些点进行升级   一点点改变不会导致问题。个别错误修复   总是可以从boost存储库中获取。

至于你的其余问题......

  

Java是否有同样的问题?

当然。这不是特定编程语言的问题。这是第三方库或框架的一个问题。

  

我知道组件的情况不同,但是在C ++世界中,那些与boost一样着名的Java软件包怎么样呢?

没有像Boost for Java那样的东西,因为Boost提供的许多东西已经成为Java框架本身的一部分,无论好坏。想想字符串算法或文件系统操作。

话虽这么说,或许Apache Commons也很接近。事实证明,它有自己的向后兼容性问题 - 如上所述,这是完全正常的。例如,release notes for v4.0明确说明以下内容:

  

此版本使用Java 5的泛型功能,与早期的JDK版本不兼容。

     

(...),我们选择以各种方式打破API。 (...)我们还删除了之前的API中所有已弃用的类和固定的奇怪,由于向后兼容性限制,我们无法解决这些问题。

请记住,Boost和Apache Commons都以非常专业且记录良好的方式处理这个基本的软件工程问题。遗憾的是,无论使用何种编程语言,无论在野外都会遇到的大多数其他库和框架都是如此。