pha*_*t0m 5 java bytecode language-implementation jls
Java语言规范是否要求将Java编译为Java字节代码?
据我所知,事实并非如此:
编译时通常包括将程序转换为与机器无关的字节代码[表示.
[...]
Java编程语言通常被编译为Java虚拟机规范Java SE 9 Edition中定义的字节码指令集和二进制格式.
(强调我的)
我在规范中找不到任何其他提到的"字节码"或"字节码".
这是否意味着所有字节码操作在技术上都不被JLS定义的"Java语言"所涵盖,并且在技术上依赖于实现细节?
JSL 不必知道 JVM 如何读取它,它只描述Java 语言。JDK 中提供的编译器(JAVAC)进行链接,但它不是语言本身的一部分
\n\n\n\n\nOracle的JDK软件包含一个编译器,从Java编程语言编写的源代码到Java虚拟机的指令集
\n
在《Java\xe2\x84\xa2 编程语言编译器》中,我们可以找到相同的解释:
\n\n\n\n\nJava 编程语言编译器 javac 读取用 Java 编程语言编写的源文件,并将其编译为字节码类文件。或者,编译器还可以使用可插入注释处理 API 处理源文件和类文件中的注释。该编译器是一个命令行工具,但也可以使用 Java 编译器 API 进行调用。编译器接受 Java 语言规范 (JLS) 定义的源代码,并生成 Java 虚拟机规范 (JVMS) 定义的类文件。
\n
所以 JAVAC 命令主要是规范之间的桥梁。
\n\n您可以通过查看Jave 虚拟机规范来找到一些信息。
\n\n\n\n\nJava 虚拟机对 Java 编程语言一无所知,只知道一种特定的二进制格式,即类文件格式。类文件包含 Java 虚拟机指令(或字节码)和符号表,以及其他辅助信息。
\n
(我想找到相反的说法,即Java语言对Java虚拟机语言一无所知......)
\n\n在该规范的后面,我们找到了有关类格式以及如何将语言转换为指令列表的更多信息。
\n\n.class将在下一章中介绍:第 4 章。类文件格式。| 归档时间: |
|
| 查看次数: |
347 次 |
| 最近记录: |