首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java语言在其整个历史中是否保持了源代码向后兼容性?

Java语言在其整个历史中是否保持了源代码向后兼容性?
EN

Stack Overflow用户
提问于 2012-04-04 03:21:07
回答 6查看 875关注 0票数 8

Java在开发过程中是否总是保持源代码的向后兼容性?

更准确地说:给定两个Java版本X和Y,其中X< Y,那么有没有哪个Java X的程序也是Java Y的有效程序,具有相同的语义?例如,X= Java 2(或使用旧编号的1.2 )和Y= Java 5。

或者只有JVM级别的兼容性:例如,为JVM 1.2编译的类可以由JVM 5运行?

如果可以在Java5(或6或7)上运行Java2代码,我必须遵循的确切步骤是什么?用Java5编译器直接编译?使用Java 2编译器编译并在JVM 5上运行?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-04-04 03:39:06

Sun和现在的Oracle一直非常小心地对待Java的向后兼容性。

Java二进制兼容性:您应该能够在新版本上运行用旧版本编译的代码,而无需修改。然而,可能会有一些小的不兼容性。

Java源兼容性:最初为较旧版本编写的代码应该几乎总是不需要使用较新的编译器进行修改即可编译,但也存在一些小的不兼容性。其中之一是Java5中添加的enum关键字;在旧版本的Java中,enum是一个有效的标识符,但在Java5中不是。此外,从默认包导入类已被删除(我认为从Java1.4开始)。所以你不能这样做:

代码语言:javascript
复制
import SomeClassName;

在Java1.4或更高版本上不再存在。

在每个JDK版本的文档中,都有一个关于与以前版本的向后兼容性的文档,其中列出了详细信息。

  • Java SE 7 and JDK 7 Compatibility
  • Java SE 6 Compatibility
  • Incompatibilities in J2SE 5.0 (since 1.4.2)
  • Java 2 Platform, Standard Edition Version 1.4.0 Compatibility with Previous Releases
票数 4
EN

Stack Overflow用户

发布于 2012-04-04 03:25:16

从Java1.5开始,enum变成了保留字。因此,从1.5开始,任何包含enum的Java1.4源代码都被破坏了

票数 4
EN

Stack Overflow用户

发布于 2012-04-04 03:26:23

据我所知,JVM是向后兼容的。用JDK 1编译的类可以在最新的JRE 7中工作。库肯定不是100%兼容的。有些方法已被弃用(并随后被删除)。一些类以(通常)微妙的方式改变了行为,这将导致程序的行为不同。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9999942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档