有没有人知道是否有Java 10和JVM 10规范的版本,以及之前版本的差异?对于Java 8和Java 9,有一些带有差异的规范,并且很难看出其他的确切变化。
答案 0 :(得分:8)
对于Java 9和Java 10(18.3)之间的差异,您可以下载" JSR-000383 Java SE 10(18.3)最终版本附件3以进行评估"通过以下链接:
请注意,您必须接受软件许可协议才能下载。
此档案包含JLS和JVMS的差异。
答案 1 :(得分:1)
我知道Java 10有什么新功能,让我们简单地快速浏览一下。
1。局部变量类型推断(JEP 286) 与JavaScript,Kotlin和Scala相似,现在Java也将具有var关键字,该关键字使您可以在不指定其类型的情况下声明局部变量 例如: var name =“ Java”
2。垃圾收集器接口(JEP 304) 它增加了不同垃圾收集器的代码隔离度,并为它们提供了一个干净的接口,这意味着更容易从JDK构建中排除GC,同时还可以更轻松地添加新的GC而不会影响代码库。
3。适用于G1的并行完整GC(JEP 307) 它通过使完整的GC并行化来提高G1最坏情况的延迟。如果您还记得Java 9的发行版,则将G1设置为JVM的默认GC,该JVM旨在避免使用完整的GC。但是,当并发集合无法足够快地回收内存时,它最终会退回到完整的GC上,从而产生了问题。此更改将并行化完整的GC算法,因此在不太可能的情况下发生G1完整GC可以使用与并发集合中相同数量的线程,以提高整体性能。
4。替代存储设备上的堆分配(JEP 316) 它使HotSpot VM可以在用户指定的备用存储设备上分配Java对象堆,例如,此功能使分配较低优先级的进程以使用NV-DIMM内存成为可能,而仅分配较高优先级在多JVM环境中处理到DRAM。
5。将JDK森林整合到一个存储库中(JEP 296) 它将把JDK林的众多存储库合并到一个存储库中。
6。基于Java的实验性JIT编译器(JEP 317) 使基于Java的JIT编译器Graal可以在Linux / x64平台上用作实验性JIT编译器。如果您还记得,Java 9中已经添加了Graal,但是现在您可以使用以下JVM参数启用它:
-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler
7。线程本地握手(JEP 312) 通过无需执行全局VM保存点就可以在应用程序线程上执行回调来提高VM性能。这意味着JVM可以停止单个线程,而不仅仅是所有线程。
8。删除本机头生成工具(JEP 313) 它将从JDK中删除javah工具,这是一个单独的工具,可在编译JNI代码时生成头文件,因为这可以通过javac完成。
来源/信用:Java 10 Features