Java如何被解释和编译?在编译和解释之间创建.class文件时也是如此。何时创建.class文件?
回答
简单的答案是Java解释器使用.class文件作为输入,.class文件是Java虚拟机“硬件”的机器对象代码。 javac
编译器会将.java源代码编译为.class对象,然后JavaVM可以执行(解释)这些对象。
我们是否失去了很多可以在任何机器上执行的性能力编写代码?我做了很多Fortran,我觉得我不得不担心我的机器和计算集群的特定体系结构以获得良好的性能(关于运行时速度)。 – theJollySin 2012-04-21 05:30:27
任何时候当你在需要运行的代码和硬件之间放置额外的软件时,都会有一些性能损失;多少取决于您使用的特定JVM。有些JVM非常简单,每次看到它时都需要重新解释每条指令。有些使用“JIT”(即时编译)将指令转换为本地代码,以在运行时获得性能。其他人执行“AOT”(提前编译)以获得更大的性能提升。但是,在每种情况下,虚拟机都会有一些开销。 – mah 2012-04-21 10:46:35
这里还有其他一些关于效率的考虑,它不是直接由使用Java语言引起的。术语“Java”用于描述语言和运行时环境,但是可以将Java编译为本机代码(例如使用GNU的gcj编译器),并且可以使用其他语言编译为.class文件以供执行在JVM中。 – mah 2012-04-21 10:48:55
创建.class文件是编译步骤,所以两者之间没有任何关系。
.java文件被编译为存储在.class文件中的字节码。 .class文件由JRE解释。
创建类文件时?
Answer-> 编译器启动编译时生成的类文件,当时解释器(JRE)生成类文件。解释器将我们的编码解码为二进制编码(机器语言),并且此二进制编码被我们的系统或任何系统(机器)使用,或者我们可以说任何操作系统,如linux,ubntu,windows,fadora。
我不认为运行时环境正在生成任何类文件。 [Java编程语言编译器](https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html)。 – skubski 2017-11-29 11:27:58
- 1. 如何测试创建的.class文件?
- 2. 从.java文件创建.class文件 - J2ME
- 3. 使用NetBeans为Java创建.class文件
- 4. Maven使用.class和.java文件创建jar文件
- 5. 创建exe文件时如何创建一个lib文件
- 6. 如何在Windows上运行在Mac上创建的.class文件?
- 7. 如何创建/编辑.class文件代码
- 8. 是否可以创建“class”运行时?
- 9. JNotify何时通知文件的创建
- 10. 何时首次创建JAR文件?
- 11. 创建文件时的文件权限
- 12. 无法创建“Class”对象
- 13. Scalac编译器不会创建一个.class文件
- 14. Eclipse CDT创建源文件的“New Class”默认路径
- 15. 从任意.class文件创建一个BCEL JavaClass对象
- 16. 如何在JNI中创建Class []
- 17. 构建.msi文件时即时创建文件夹
- 18. 如何在创建.a文件时添加已创建的.a文件
- 19. (JAVA)使用命令提示符从多个.class文件创建.jar文件
- 20. 在.class文件
- 21. 如何生成.class文件?
- 22. 如何读取.class文件?
- 23. 何时在.py文件上运行Jython会生成.class文件?
- 24. R创建文件时找到时间
- 25. 创建文本文件时的Java Nullpointexception
- 26. 创建torrent文件时计算(sha1)“件”
- 27. 如何在web-inf/class下的类名称空间中创建/写入文件
- 28. 如何使用创建文件创建tmp文件名
- 29. 如何在创建jar文件时包含库文件
- 30. 如何在创建jar文件时添加输入文件
[This](http://www.javaworld.com/javaworld/jw-07-1996/jw-07-classfile.html)可能会有帮助。 – sgowd 2012-04-20 11:25:06
@ sans481这对我真的很有帮助。非常感谢。 – theJollySin 2012-04-21 05:35:45