我了解到JDK生成的字节码是通用的,也就是说它们只处理像内存映射、调用等操作...如果这是真的,那么是否意味着我可以编写一个具有JDK 1.7特性的程序,而不必担心它是否能在安装JRE 1.6的用户计算机上运行?(这只是一个例子,可能会出现更夸张的情况。)
因此,我的问题是:我能否编写一个包含1.7新功能的程序并在1.6中运行?
因此,我的问题是:我能否编写一个包含1.7新功能的程序并在1.6中运行?
我能用1.7的新功能编写程序并在1.6中运行吗?
不行。Java不支持向后兼容。
请注意,可以通过使用交叉编译选项在1.7 JDK中创建与Java 1.6 JRE兼容的代码,但是该代码只能使用版本1.6中可用的类、属性、方法和语言特性。
INVOKEDYNAMIC
而不是“Java”。我还想补充一点,一些字节码框架有意降低类的版本,以使这些类可以通过验证器,因为验证器不会检查版本50的堆栈映射。这些都是使用案例。 - Rafael Winterhalter