【问题标题】:Is Java bytecode compatible within different updates of the same version of Java?Java 字节码在同一版本 Java 的不同更新中是否兼容?
【发布时间】:2009-09-25 08:39:13
【问题描述】:

这个问题与这里讨论的另一个主题有关:
Is Java bytecode compatible with different versions of Java?
但在这种情况下,想知道在同一版本中但在不同的更新中是否保留了兼容性。
例如,1.6.0_14 版本的编译器生成的字节码是否与 1.6.0 的 JVM 兼容?代码运行愉快,但不知道有没有什么问题可能会出乎意料。

问候。

【问题讨论】:

    标签: java jvm compatibility bytecode java-6


    【解决方案1】:

    是的。字节码只改变主要的¹点版本。更新 (_XX) 版本是基于 API 和工具的错误修复、性能提升和对非标准命令开关的更改。更新版本不会破坏 API 或更改类文件版本。

    1) Suns 版本号系统的 Bah。

    【讨论】:

      【解决方案2】:

      class file format 有一个版本号,正是为了解决这个问题。如果在同一版本中有重大更改,我希望类文件格式数量也会增加(可能是目前尚未使用的次要版本),从而使较旧的 JVM 立即使用 @987654322 拒绝类文件@

      【讨论】:

      • 这意味着在我测试/加载代码中的所有类之前我不会知道。
      • 您通常不会有单独的类由不同的编译器单独编译。我猜可能在最坏的情况下,JAR 文件中的一个很少使用的组件变成了一个不兼容的版本,但这是一个相当人为的场景。
      【解决方案3】:

      是的,它应该是二进制兼容的,excepted for some corner case liste in this document.

      【讨论】:

      • 该列表似乎只涉及旧(Java 6 之前)字节码在当前 JVM 上运行时可能存在的问题。
      • 如果您访问每个先前版本(1.4.0、1.4.1、1.4.2 等)的兼容性信息页面,您将获得有关次要版本之间任何可能的不兼容性的信息(即: 1.4.1 && 1.4.2)。
      • 据我了解,小版本现已被 Suns 营销团队逐步淘汰。您现在只有更新 (_XX) 版本和主要点版本。但鉴于我们谈论的是太阳队的号码系统,这可能会在明天改变。
      • @mlk - Java 版本编号的详细信息:java.sun.com/javase/6/webnotes/version-6.html
      猜你喜欢
      • 2010-11-19
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 2022-07-25
      • 1970-01-01
      • 2015-02-11
      • 2018-10-18
      • 2023-01-26
      相关资源
      最近更新 更多