gpt4 book ai didi

java - JVM 是生成字节码还是运行字节码?

转载 作者:搜寻专家 更新时间:2023-11-01 04:05:41 25 4
gpt4 key购买 nike

我在这里有点困惑,JVM 代表字节码(生成它)还是它只是将编译的 .class 文件(字节码)加载到内存中?!或者 JVM 只是以独立于平台的方式运行字节码的规范?!非常感谢。

最佳答案

  1. JVM = JIT 编译器 + Java 解释器 + 垃圾收集器
  2. JRE = JVM + 库类
  3. JDK = JRE + 开发工具

Sun JVM 是用C 编写的,而Oracle JVM 是用C++ 编写的

Java 编译器 javac 将源代码转换为字节码。JVM内部的JIT编译器和Java解释器将字节码转换成相应的机器码。

在java中,只有源代码(.java文件)和字节码(.class文件)可用。而且我们不能保存机器代码(.exe 文件),因为.exe 文件只能在运行时形成,并在程序完全执行后立即从 RAM 中消失。

在我们的系统中,javac.exe(用于编译java源代码,例如:javac HelloWorld.java)和java.exe(用于通过JVM执行java字节码,例如:java HelloWorld)都被调用,它们在.仅限 exe 格式(javac.exe 和 java.exe)。所以 Java 编译器 javac 和 JVM 不是用 Java 编写的。如果它们是用 Java 编写的,那么它们可能以 javac.class 和 java.class 格式提供。

javac 属于 JDK 而不是 JVM。请记住,JVM 仅在运行时工作,这意味着在将源代码编译为字节代码之后..但在此之前,javac 将源代码编译为字节代码。JVM 通过 JIT Compiler 和 Java Interpreter 将字节码转换成相应的机器码。

针对不同的操作系统,Oracle 公司提供了不同的 JDK 和 JRE 软件;所以JVM(JRE下的)和javac Compiler(JDK下的)都是Platform Dependent。所以可以确认javac Compiler和JVM不是用Java写的。因为Java语言总是Platform Independent。

关于java - JVM 是生成字节码还是运行字节码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32011039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com