Java 8引入了重要的新语言功能,例如lambda表达式.
语言中的这些更改是否伴随着编译的字节码中的这些重大更改,这些更改会阻止它在不使用某些反向转换器的情况下在Java 7虚拟机上运行?
我在另一篇文章中看到了Java的主要版本号列表:
- Java 1.2使用主要版本46
- Java 1.3使用主要版本47
- Java 1.4使用主要版本48
- Java 5使用主要版本49
- Java 6使用主要版本50
- Java 7使用主要版本51
- Java 8使用主要版本52
- Java 9使用主要版本53
- Java 10使用主要版本54
- Java 11使用主要版本55
参考文献:
https://blogs.oracle.com/darcy/entry/source_target_class_file_version https://en.wikipedia.org/wiki/Java_class_file#General_layout
Java 10引入了本地类型推理,这非常酷:
var list = new ArrayList<String>(); // Compiles fine
Run Code Online (Sandbox Code Playgroud)
但是,似乎人们不愿意在新版本发布的那一天(周,月,年)更新他们的Java版本.
这意味着我需要等到Java 8的EOL才可以使用,List.of(1, 2, 3)如果想要支持使用旧Java版本的大多数用户.
另一方面,当编译为字节码时,可能会推断出本地类型推断,因此可能使用它的程序可能会在较旧的Java版本(9或8)上运行.另一方面,Java似乎喜欢在运行时进行优化,这可能意味着类型推断需要JRE版本10.
有人试过这个吗?使用类型推断的程序是否在较旧的Java版本上运行?
感谢您的意见.