11

有谁知道是否存在与以前版本不同的 Java 10 和 JVM 10 规范版本?对于 Java 8 和 Java 9,存在差异的规范,很难看出其他方面到底发生了什么变化。

4

2 回答 2

9

关于 Java 9 和 Java 10 (18.3) 之间的差异,您可以通过以下链接下载“ JSR-000383 Java SE 10 (18.3) Final Release Annex 3 for Evaluation ”:

请记住,您必须接受软件许可协议才能下载它。

此存档包含 JLS 和 JVMS 的差异。

于 2018-03-24T01:00:12.230 回答
1

我知道 Java 10 有什么新的东西,让我们快速浏览一下。

1. 局部变量类型推断 (JEP 286) 与 JavaScript、Kotlin 和 Scala 类似,现在 Java 也将有一个 var 关键字,允许您在不指定其类型的情况下声明局部变量示例:var name = "Java"

2. Garbage-Collector Interface (JEP 304) 它增加了不同垃圾收集器的代码隔离,并为它们引入了一个干净的接口。这意味着更容易从 JDK 构建中排除 GC,同时也更容易添加新的 GC 而无需它影响代码库。

3. G1 的并行 Full GC (JEP 307) 它通过使 full GC 并行来改善 G1 最坏情况的延迟,如果您还记得 Java 9 的版本,G1 被设为 JVM 的默认 GC,旨在避免 Full GC . 但是当并发收集不能足够快地回收内存时,它最终会退回到完整的 GC 上,这会产生一个问题。这种更改将并行化完整的 GC 算法,以便在不太可能发生 G1 完整 GC 的情况下,可以使用与并发集合中相同数量的线程来提高整体性能。

4. 备用内存设备上的堆分配 (JEP 316) 它使 HotSpot VM 能够在用户指定的备用内存设备上分配 Java 对象堆。例如,此功能可以分配较低优先级的进程以使用NV-DIMM 内存,而在多 JVM 环境中仅将较高优先级的进程分配给 DRAM。

5. 将 JDK 森林合并到一个存储库中 (JEP 296) 它将 JDK 森林的众多存储库合并到一个存储库中。

6. Experimental Java-Based JIT Compiler (JEP 317) 使基于 Java 的 JIT 编译器 Graal 可以用作 Linux/x64 平台上的实验性 JIT 编译器。如果您还记得,Graal 已经添加回 Java 9,但现在您可以使用以下 JVM 参数启用它:

-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler

7. Thread-Local Handshakes (JEP 312) 通过在应用程序线程上执行回调而不执行全局 VM 保存点来提高 VM 性能。这意味着 JVM 可以停止单个线程,而不仅仅是所有线程。

8. 删除 Native-Header Generation Tool (JEP 313) 它将从 JDK 中删除 javah 工具,这是一个在编译 JNI 代码时生成头文件的单独工具,因为这可以通过 javac 完成。

来源/信用:Java 10 功能

于 2018-08-17T09:42:19.570 回答