JDK 7类文件向后兼容JDK 6

海:

JDK 7的哪些功能(不包括invokedynamic,因为Java并未使用它)导致了新的类文件版本,该版本与JDK 6不兼容。它暗示了所有功能都可以由编译器生成粘合代码来实现。例如,switch语句中的String可以使用由编译器生成的重复ifeq语句来实现。我希望能够为编译器提供-source 1.7 -target 1.6标志,使其与jre 6兼容,同时在jdk 7中使用项目硬币功能。

克雷格·莫特林(Craig P.Motlin):

我尚未阅读编译器的代码,但是某些新功能显然必须对字节码产生影响。

“简化的varargs方法调用”实际上只是一个警告抑制,但它必须在字节码中保留一些标记,以便客户端代码可以不同地显示警告。

“ Try-with-resources”生成的代码可以处理普通异常以及在finally块期间引发的第二个异常。额外的异常使用新的addSuppressed()方法存储这并非完全是类文件格式的更改,但显然不适用于早期的VM。

“ Multi-catch”还产生与以前的任何编译器可能产生的微妙差异的字节码。现在,异常表中的多个条目将指向同一捕获主体。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章