首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java编译器:如何将Java语言映射到JVM指令?

Java编译器:如何将Java语言映射到JVM指令?
EN

Stack Overflow用户
提问于 2013-12-05 16:27:10
回答 2查看 89关注 0票数 5

Java语言中的构造的语义是由Java语言规范定义的,但它们不是JVM指令。那么,是否有可能没有严格定义规范以防止Java编译器的错误实现?或者Java语言和JVM指令之间的映射非常简单,没有必要担心吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-05 17:52:48

Java语言中的构造的语义是由Java语言规范定义的,但它们不是JVM指令。那么,是否有可能没有严格定义规范以防止Java编译器的错误实现?

是的,当然。语言规范的后期版本比以前的版本使用更多的正式表示法。这将有助于减少歧义和误解的可能性,但任何语言规范,主要是用英语编写的,都容易出现误解。

或者Java语言和JVM指令之间的映射非常简单,没有必要担心吗?

我认为“直截了当”是一种主观尺度。当然,这比我最初预期的要简单得多。

编译器(javac)本身似乎在优化方面做得不多,例如,参见this question。大多数优化实际上是由JVM在运行时(通过HotSpot)完成的。

其他编译器实现可能会进行更多的优化。此外,还有一些字节码处理器(如ProGuard)对字节码执行优化。

票数 2
EN

Stack Overflow用户

发布于 2013-12-05 16:32:13

这将克服将语言与字节码分离的大部分问题,因为要将Java代码清晰地映射到JVM指令。相反,编译器可以自由地确定哪些指令最能代表所提供的源代码,以便优化实际运行的效率。

这确实意味着编译器可能会做错误的事情,但是一般来说,您可以相信像Oracle这样的主要编译器所做的事情是正确的;它们需要经过大量的测试。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20405333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档