1) javac.exe 是 sun 的 java 编译器实现吗?
2)并且java编译器被定义为将java源代码翻译成java字节码的东西,
3)而 JVM 被定义为接受 java 字节码作为输入并实际告诉机器做事的东西。
4)并且有许多不同种类的 JVM,实际上不同的操作系统需要不同的 JVM,
5)而Windows 98上运行的JVM与Windows 7上运行的JVM不同?
是的。 (JVM = Java“虚拟”机)
我认为你问这些问题是为了帮助你理解JAVA的一些基本概念,所以我们不要挖得太深,考虑这里的许多“例外”。
1) Sun 的编译器实现通常称为 javac.exe,但其他编译器也可能将其可执行文件命名为 javac.exe(我认为 c 表示编译器)。
2)还有更多内容,但这总的来说是正确的
3)这并不完全错误。不同的 JVM 可能有不同的实现,但 JVM 的想法是将(假定的)通用字节码转换为可以在该特定计算机上执行的机器/操作系统特定代码。
4)基本正确。只是我们对“不同操作系统”的定义有点宽松。一些操作系统共享相同的体系结构,并且可以使用相同的 JVM。同一操作系统也可以有不同的 JVM 实现。
5)我相信这是真的。
1) javac.exe 是 sun 的 java 编译器实现吗? - 这取决于,因为任何公司/开发人员都可以按照 JVM 规范分发 Java 编译器。
2)java编译器被定义为将java源代码翻译成java字节码的东西, - 是的,它将源代码编译为字节代码
3)而 JVM 被定义为接受 java 字节码作为输入并实际告诉机器做事的东西。 - 是的
4)而且JVM有很多种,实际上不同的操作系统需要不同的JVM, - 正确,对于每个操作系统,它应该有自己的 JVM 实现,您不能在 Linux 上运行适用于 Windows 的 JVM
5)Windows 98 上运行的 JVM 与 Windows 7 上运行的 JVM 不同吗? - 是的
除了问题 2、3、4、5 之外,编译器还会将源代码转换为 JVM 实现的字节码,以便了解 JVM 在何处运行。