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只与运行类文件有关并且类文件没有改变,如何运行它们的规范没有改变?
我对这个话题感到有些困惑。
答案 0 :(得分:5)
你看起来不够好;)但我同意这是非常不直观和有问题的。有关规范的更改,请参阅here。但请注意,例如,泛型是以不需要更改JVM的方式实现的,因此对规范的更改没有太多必要。
虽然我不确定上面的列表是否完整(实际上我认为Java7中对switch语句的更改必须在JVM级别上进行处理,因为这需要一种完全不同于当前两种方法的方法解决方案)并且总的来说我同意拥有最新版本的规范并包括所有澄清和补充确实是非常好的。
PS:我认为JVM本身的最大变化是使用Java5对内存模型的更改(即提供易失性读/写获取/释放语义)。答案 1 :(得分:1)
一旦你有一个相当完整的语言(图灵完成,与O / S服务接口的方式),那么大多数事情从那时起最好使用其中一个...
第二点的一个优点是版本之间的兼容性更容易。为较新版本的语言构建的代码有时仍可在旧版本的VM上运行。
JVM可能是一个设计良好的虚拟机,根本不需要太多升级。
答案 2 :(得分:1)
我怀疑没有第三版JVM规范的真正原因是以下一项或多项:
其中一位作者(Tim Lindholm)现在在Google工作。
制作一本书需要付出很多努力,而那些愿意这样做的Oracle人员正在忙于其他事情。
Oracle已经考虑了投资回报率,并认为这不值得。
出版商查看了图书的销售情况,并认为这不值得。
我预计第三版最终会出现。与此同时,附录会告诉您Java 5和Java 6中发生了哪些变化,并告诉您去哪里获取详细信息。