向前兼容与向后兼容

简介: 向前兼容与向后兼容

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

微信截图_20230627110629.png

目录
相关文章
|
3天前
|
机器学习/深度学习 自然语言处理 Serverless
介绍一下什么是兼容性函数
介绍一下什么是兼容性函数
12 0
|
4月前
|
JavaScript
什么是类型兼容?
什么是类型兼容?
31 1
|
6月前
|
Android开发 C++
so兼容32位和64位
在Android开发中遇到32位`xxx.so`动态库在64位设备上运行失败的问题,导致应用崩溃。错误提示因缺少64位版本的库。尝试创建`arm64-v8a`目录并复制库文件后,依然崩溃,因为库本身是32位。解决方案是在`build.gradle`中添加配置,指定支持的ABI滤镜,并在`gradle.properties`中设置`android.useDeprecatedNdk=true`,以解决兼容性问题。
147 7
|
Java Go Spring
向前兼容与向后兼容
向前兼容与向后兼容
101 0
|
分布式计算 Cloud Native 物联网
阿里云升级2.0,云平台+数字原生操作系统,什么是数字原生?
数字原生,企业未来数字化转型的最终归宿 阿里云升级2.0,云平台+数字原生操作系统,但什么是数字原生?
633 0
阿里云升级2.0,云平台+数字原生操作系统,什么是数字原生?
|
SQL 安全 关系型数据库
核心特性—MySQL生态兼容
PolarDB-X将兼容MySQL以及周边生态作为核心设计目标之一。本文从SQL语法、事务行为、导入导出等维度总结了兼容性的相关特性。
189 0