Java虚拟机是用啥语言写的
同问题传送门:Java 平台中的 JVM 和 .Net 平台下的 CLR 分别是用什么语言写的? - RednaxelaFX 的回答
■网友
Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。
Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。平台无关有两种:源代码级和目标代码级。C和C++具有一定程度的源代码级平台无关,表明用C或C++写的应用程序不用修改只需重新编译就可以在不同平台上运行。 
Java主要靠Java虚拟机(JVM)在目标码级实现平台无关性。JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。但JVM通常是在软件上而不是在硬件上实现。(目前,SUN系统公司已经设计实现了Java芯片,主要使用在网络计算机NC上。另外,Java芯片的出现也会使Java更容易嵌入到家用电器中。)JVM是Java平台无关的基础,在JVM上,有一个Java解释器用来解释Java编译器编译后的程序。Java编程人员在编写完软件后,通过Java编译器将Java源程序编译为JVM的字节代码。任何一台机器只要配备了Java解释器,就可以运行这个程序,而不管这种字节码是在何种平台上生成的。另外,Java采用的是基于IEEE标准的数据类型。通过JVM保证数据类型的一致性,也确保了Java的平台无关性。
Java虚拟机通过调用某个指定类的方法main启动,传递给main一个字符串数组参数,使指定的类被装载,同时链接该类所使用的其它的类型,并且初始化它们。例如对于程序:public class HelloApp {public static void main(String args){System.out.println("Hello World!");for (int i = 0; i \u0026lt; args.length; i++ ) {System.out.println(args);}}}编译后在命令行模式下键入:java HelloApp run virtual machine
将通过调用HelloApp的方法main来启动java虚拟机,传递给main一个包含三个字符串"run"、"virtual"、"machine"的数组。现在我们略述虚拟机在执行HelloApp时可能采取的步骤。
■网友
我觉得,JVM作为一个可执行程序,用什么语言写其实不是多么重要的事情,任何表现力足够完成JVM逻辑编写的语言都可以将JVM编写出来,只是实现的方式不同罢了。然后目前已经实现的JVM中,用的语言是上述回答的而已。。所以这个问题可以换成,JVM可以被哪些语言编出来,为什么,目前有哪些实现,这些实现的差异是什么。或许更清晰一些。以上。
■网友
JAVA的虚拟机是用什么语言写的?将持续关注该问题。
■网友
本地方法栈
当程序通过JNI(java Native Interface)调用本地方法(如C或者C++代码)时,就根据本地方法的语言类型建立相应的栈。
》》方法区域
【Java虚拟机是用啥语言写的】 方法区域是一个JVM实例中的所有线程共享的,当启动一个JVM实例时,方法区域被创建。它用于存运行放常量池、有关域和方法的信息、静态变量、类和方法的字节码。不同的JVM实现方式在实现方法区域的时候会有所区别。Oracle的HotSpot称之为永久区域(Permanent Area)或者永久代(Permanent Generation)。
■网友
Android的虚拟机dalvikvm时代是绝大部分的C极少量汇编,ART 时代是极少量的C和汇编,几乎是C++.
■网友
理论上什么语言都可以写。
■网友
主要是C需要,其次在一些部件和界面中也使用了C++
推荐阅读
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
- 想写个个人博客,苦于不知道用啥前端框架
- 27岁,转行java的血与泪,该何去何从
- 怎样统计工程中未使用的java类
- 新互联网网站用Java还靠谱么对比Php,Python,Ruby的话
- 我想学java和安卓软件开发?
- 学计算机专业,java那些和网站开发选台式还是笔记本好
- JAVA设计思路
- 本人大专毕业一年,想要去培训,定了JAVAEE和安卓两个方向,应该学那个纠结,求帮助
