乐趣区

关于后端:向前兼容与向后兼容

2012 年 3 月公布了 Go 1.0, 随着 Go 第一个版本公布的还有一份兼容性阐明文档。该文档阐明,Go 的将来版本会确保 向后兼容性,不会毁坏现有程序。

即用 10 年前 Go 1.0 写的代码,用 10 年后的 Go 1.18 版本,仍然能够失常运行。即 较高版本的程序能失常解决较低版本程序的数据(代码)

反之则不然,如之前遇到过的这个问题:在 Mac 上用 Go 1.16 可失常编译 & 运行的代码,在 cvm 服务器上 Go 1.11 版本,则编译不通过;

再如部署 Spring Boot 我的项目时遇到的,在 Mac 上用 Java 17 开发并打的 jar 包,在 cvm 服务器上,用 Java 8 运行会报错

个别会认为向前兼容是向之前的版本兼容,这了解其实是谬误的。

留神要把「前」「后」别离了解成「后退」和「后退」,不能够了解成「从前」和「当前」

线上我的项目开发中,向后 (后退) 兼容十分重要; 向后兼容就是新版本的 Go/Java,能够保障之前用老版本写的程序仍然能够失常应用

前 forward 将来拓展。

后 backward 兼容以前。

  • 向前兼容(Forward Compatibility):指老版本的软/硬件能够应用或运行新版本的软/硬件产生的数据。“Forward”一词在这里有“将来”的意思,其实翻译成“向将来”更明确一些,汉语中“向前”是指“从前”还是“之后”是有歧义的。是旧版本对新版本的兼容(即向前 到底是 以前 还是 后面 ?理论是 后面
  • 向上兼容(Upward Compatibility):与向前兼容雷同。

  • 向后兼容(Backward Compatibility):指新的版本的软/硬件能够应用或运行老版本的软/硬件产生的数据。是新版本对旧版本的兼容
  • 向下兼容(Downward Compatibility):与向后兼容雷同。

软件的「向前兼容」和「向后兼容」如何辨别?

本文由 mdnice 多平台公布

退出移动版