
Java
以我个人的经验来看,在版本升级的兼容性方面,我反倒觉得
Java比go更胜一筹。在我看来,语言版本升级时最棘手的地方在于第三方依赖包的版本管理与升级。如果能清楚知晓版本升级带来的特性变化,那么自己工程里的代码在语言版本升级时通常不会有太大问题,麻烦的是那些第三方依赖包。我自己做过
Java从6到8、11、17再到21的版本升级工作,而go语言的升级工作做得较少,只做过从1.17到1.22的升级。我对
Java升级更为熟悉,借助maven helper进行版本冲突分析,基本上整个升级过程都比较顺利,
Java生态中众多第三方jar的维护大体上能够保证版本的兼容性。至于go,可能是我的操作方法不对,我一直觉得go mod没有
Java的maven那么好用,go的生态虽然也很不错,但在版本升级时总是会发现不少依赖包在升级后有一些废弃的api,修改起来比较麻烦,版本兼容性相对较差。