API的非向后兼容性无论如何通常代表着一种比较差的设计
不管一个类库或者工具方法实现多么的好,如果无法做到向后兼容性,通常会给用户带来很大的升级成本,很多对此的依赖如果希望在后续的升级和维护期间使用该类库的其他新增特性或者好处,将不得不推迟升级亦或是被迫接受改变。
无论这个类库实现的多么完美或者流行,如果版本升级意味着大量API或者包名的变更,我认为很大程度上是因为设计者意识到从维护的角度来说,这个类库的实现非常的糟糕,以至于已经非常的难以维护下去了。
在开源的社区,做这种变更或者说犯这种错几乎不需要付出任何成本,所以很多的类库甚至非常流行的类库都有发生大版本间API的完全重构,如果是商业类库,除非有适配API,恐怕用户都跑光了。常见的类库有如下:
jackson:
1.x:org.codehaus.jackson
2.x:com.fasterxml.jackson
由此带来的是大量类路劲的变化,spring HttpMessageConverter针对1.x和2.x的分别实现;到了spring 4.x,MappingJacksonHttpMessageConverter又被spring给删除了。
dbcp:
1.x:
2.x:
apache.common.lang:
2.x:
3.x:
log4j :
1.x:
2.x:
common.pool
1.x:
2.x:
netty:
4.x:
3.x:
不过主流的容器和应用服务器以及数据库则做的好的多,比如tomcat/nginx/mysql/postgresql/rabbitmq。
作者:lightdb
来源链接:https://www.cnblogs.com/lightdb/p/5977319.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。