什么是JVM?
虽然目前已经有不少项目开发经验了,但是对于JVM的理解还停留在比较粗浅的理解,JVM(Java Virtual MACHINE)不就是JAVA虚拟机吗。
记得在初学java时课程时第一次接触JVM:JAVA程序具有跨平台性质,就和这个JVM息息相关。因为java可以运行在任何一个具有JVM的计算机或者电子设备上运行。实际上JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上一次编译,多次运行,具有跨平台性。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
JDK,JRE,SDK区别?
- JDK(Java Development Kit): 编写Java程序的程序员使用的软件。
- JRE(Java Runtime Environment):运行Java的运行环境的集合,包含JVM标准实现及Java核心类库。
- SDK(Software Development Kit): 软件开发工具包,一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。
介绍JVM
JVM是一种用于计算设备的规范,它是一个虚构的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
JVM在哪?
实际上JVM 是一个抽象的概念,并不真实存在。
JVM是JRE的一部分。在JDK的安装过程中,JRE也是安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。如果安装了JDK,会发同你的电脑有两套JRE, 一套位于 <JDK安装目录> \jre ,另外一套位于 C:\Program Files\JAVA\jre 目录下 。后面这套比前面那套少了Server端的Java虚拟机。JRE目录下的Bin目录中的server下就是真正的jvm.dll所在。
jvm.dll 无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位于jvm.dll所在目录的父目录之中。因此想使用JVM,只需要设置PATH,指向JRE所在目录底下的jvm.dll。
JVM由啥组成?
JVM:运行时数据区,类加载器,执行引擎,本地接口 图1 JVM组成图
用JVM来干嘛?
基于安全方面考虑,JVM 要求在 class 文件中使用强制性的语法和约束,但任意一门语言都可以转换为被 JVM 接受的有效的 class 文件。作为一个通用的、机器无关的执行平台,任何其他语言的实现者都可将 JVM 当作他的语言产品交付媒介。
JVM学习哪些?
如图1所示,目前我的打算是先从图片中每个大的模块慢慢深入的进入了解。 也就是了解:运行时数据区,类加载器,执行引擎,本地接口等。
|