在学习JVM 之前,需要先对java虚拟机进行了解以此作为基础进行学习。
随着java7的正式发布,java虚拟机的设计者们通过JSP-292 规范基本实现在java虚拟机平台上运行非java语言编写的程序。java虚拟机根本不关心运行在其内部的程序到底是使用何种编程语言编写的,它只关心“字节码”文件,也就是说java虚拟机拥有语言无关性,并不会单纯地与java语言“终身绑定”,只要其他编程语言的编译结果满足并包含java虚拟机的内部指令集、符号表以及其他的辅助信息,它就是一个有效的字节码文件,就能够被虚拟机所识别并装载运行。
java不是最强大的语言,但是jvm是最强大的虚拟机。在jdk11 之前,oraclejdk中还存在一些openjdk中没有的、闭源的功能。 但在jdk11中,我们可以认为openjdk和oraclejdk 代码实质上已经完全一致的程度。
虚拟机与java虚拟机
所谓虚拟机(Virtual Mechine),就是一台虚拟的计算机,它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。