栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如果我使用最新的JDK编译Java文件,那么较早的JVM是否可以运行.class文件?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如果我使用最新的JDK编译Java文件,那么较早的JVM是否可以运行.class文件?

如果我在最新的JDK中编译了Java文件,那么较早的JVM是否可以运行.class文件?

这取决于三件事:

  • 您正在谈论的实际Java版本。例如,1.4.0 JVM可以运行由1.4.2编译器编译的代码,而1.3.x JVM不能1。

  • 使用的编译标志。有一个

    -target
    编译器标志,告诉它生成将在较旧的(目标)JVM上运行的代码。并且
    -source
    编译器标志告诉它仅接受较早的JVM的语言功能。(这种方法并不总能奏效,具体取决于代码所使用的Java语言功能。但是,如果代码可以编译,则它应该可以工作。)

  • 类文件使用的库类。如果它使用的是旧类库中不存在的库类,则它将无法运行…除非您可以包括一个可以反向移植类2的JAR 。您可以通过使用

    -bootclasspath
    选项根据旧版Java的API编译代码来避免此问题。

字节码是否取决于创建它的Java版本?

是的,对以上几点取模。


1 - Java的8 JVMS指出这一点:
“在JDK版本Oracle的Java虚拟机实现

1.0.2
支持类文件格式版本
45.0
通过
45.3
包容性的JDK版本。
1.1.*
支持范围内的类文件格式版本
45.0
通过
45.65535
包容性对于k≥2,JDK版本。
1.k
支持类文件格式版本范围内
45.0
通过
44+k.0
包容性“。

2-反向端口也会有问题。例如:1)依赖于本机代码支持的事情很可能需要您 实现 该本机代码支持。2)在较旧的JVM上 运行
代码时,您很可能需要将任何反向端口JAR文件放入bootclasspath中。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/430882.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号