Java究竟为什么需要虚拟机?(上)

  • 来源:
  • 更新日期:2018-05-25

摘要:虚拟机究竟是什么:虚拟机和名字一样就是个虚拟机器来模拟通用的计算机有着一套虚拟的完善的硬件架构如处理器、堆栈、寄存器等还具有相应的指令系统。

 虚拟机究竟是什么:虚拟机和名字一样就是个虚拟机器来模拟通用的计算机有着一套虚拟的完善的硬件架构如处理器、堆栈、寄存器等还具有相应的指令系统。

虚拟机是一种规定好的标准规范,定义了.class文件在其内部运行的相关标准和规范。一般来讲所有的JVM都是基于栈结构的运行方式那么不符合这种要求的不算是JVM, 如Android中所使用的Dalvik虚拟机就不能称作是JAVA虚拟机因为它是基于寄存器。
虚拟机相关实现的产品有很多通常最有名的就是最常用的。
java语言与虚拟机之间的关系
458PICJ58PICAga_1024.jpg
Java程式可以跨平台这是你在许多书或文件早就看过的描述但是跨平台是怎么一回事?在这之前你得先了解跨平台是怎么一回事。
其实对于电脑而言它只认识一种语言也就是0101序列所组合而成的指令。当你使用的是C/C++等之类的高阶语言编写代码时其实这些语言都是比较贴近人类语言的语法,不过大部门都是英语语义对我们来说还是不够亲切,这都是很多小白入门学习的障碍了。这是为了方便人类阅读及编写计算机也看不懂C/C++这类语言。
你要有个「翻译员」将你写的C/C++代码翻译为电脑看得懂的0101序列指令这个翻译员就是所谓的「编译器」(Compiler):
问题在于每个平台所认识的0101序列并不一样在Windows上也许某个指令是0101、在Linux下也许是1010,因此不同的平台必须使用不同的编译器来编译你的代码而在Windows平台上编译好的程序也不能直接拿到Linux等其它平台上执行,必须要经过重新编译的动作让编译器将你的程式编译为该平台可以执行的指令。