向前兼容与向后兼容

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):与向后兼容相同。

软件的「向前兼容」和「向后兼容」如何区分?

相关推荐
phiilo4 分钟前
golang 设置进程退出时kill所有子进程
后端
花花无缺4 分钟前
python自动化-pytest-用例发现规则和要求
后端·python
程序员小假7 分钟前
我们来说一说 Cglib 与 JDK 动态代理
后端
摆烂工程师2 小时前
教你如何认证 Gemini 教育优惠的二次验证,薅个 1年的 Gemini Pro 会员
后端·程序员·gemini
绝无仅有2 小时前
未来教育行业的 Go 服务开发解决方案与实践
后端·面试·github
程序员爱钓鱼3 小时前
Go语言实战案例- 命令行参数解析器
后端·google·go
心在飞扬3 小时前
Redis 介绍与 Node.js 使用教程
后端
milanyangbo3 小时前
“卧槽,系统又崩了!”——别慌,这也许是你看过最通俗易懂的分布式入门
分布式·后端·云原生·架构
AAA修煤气灶刘哥4 小时前
MySQL 查文本查哭了?来唠唠 ES 这货:从 “啥是 ES” 到 Java 撸代码,一篇整明白!
java·后端·elasticsearch
金銀銅鐵4 小时前
[Java] 浅析密封类(Sealed Classes) 在 class 文件中是如何实现的
java·后端