java - 为什么java虚拟机规范还是1999版

标签 java jvm

<分区>

jvm 规范版本 2:http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html 看起来很老。

java 已经发布了新版本,变化很大。 java 5, java6..

但 jvm 规范似乎保持不变。

这是否意味着它只是过时了? 或者 新的 Java 语言特性不会改变 jvm 规范。甚至在 1.5 中引入了很多内容,例如泛型、并发和 jvmti?

还是因为jvm只和运行class文件有关,class文件没有变,如何运行他们的spec没有变?

我对这个话题有点困惑。

最佳答案

你只是看起来不够好 ;) 但我同意这是非常不直观和有问题的。参见 here更改规范。但请注意,例如泛型的实现方式不需要更改 JVM,因此不需要对规范进行太多更改。

虽然我不确定上面的列表是否完整(实际上我认为 Java7 中对 switch 语句的更改必须在 JVM 级别处理,因为这需要与当前两个完全不同的方法解决方案),总的来说,我同意拥有一个包含所有说明和补充的最新版本的规范确实很好。

PS:我认为 JVM 本身最大的变化是 Java5 对内存模型的变化(即提供 volatile 读/写获取/释放语义)。

关于java - 为什么java虚拟机规范还是1999版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6604961/

相关文章:

java - 编写打印素数数组的方法时遇到麻烦

java - ClassCastException -- Redhat 上的错误,而不是 Windows 上的错误

java - 如何用 Java 编写正确的微基准测试?

java - 从不同 JVM 中的 Java 桌面应用程序中执行 Java main 方法

java - 在 Java 中读取 OpenSSL 生成的 PEM/DER 格式的 S/MIME 消息

java - 从共享点解析json?

java - JiraRestClient 搜索未返回 JQL 查询的结果

java - G1GC OutOfMemory 过早

Java 垃圾收集引用类

android-studio - 守护进程到期,因为 JVM 堆空间已耗尽