我想了解这些语言的底层运作方式,但是我只读过一些表面浅显的东西。 我会总结一下我已经知道的,如果您能纠正我并帮助我增强一点半知不解的认识,我将非常开心。
C++:
C++编译器预处理所有源文件。这意味着它实际上在宏的原始位置插入字符串。之后,它为每个源文件创建一个包含机器无关字节码的.obj文件。 然后,连接器将来自库的所有外部.obj文件与自定义制作的.obj文件链接在一起,并将其编译成.exe。
Java:
Java代码被编译成机器无关的“字节码”,这些字节码位于.class文件中,这些文件可以位于.JAR文件中,在JRE上运行。虚拟机只需执行垃圾回收。Java代码类似于C#进行即时编译,但使用由SUN开发的热点优化。
C#:
与Java几乎相同吗? C#源代码被编译为CIL(公共中间语言)代码,该代码仍然可读。此代码将由CLR Just-in-Time运行。此编译将方法转换为机器特定代码,仅在首次调用它们时执行。
我实际上对几乎每种语言都感兴趣......但是Java和C#几乎相同,我一直想知道它们的区别。而C ++则是“经典”,没有任何虚拟机。非常感谢您的帮助!
编辑:我知道这是一个广泛的主题,但我真的找不到任何实质性的知识。如果您有解释这种东西的链接或书籍,我很乐意去研究。我尝试阅读SUN的Java虚拟机规范/白皮书,但那对我来说有点深奥。