java jdk、jre和jvm的关系。
已经从事java开发工作有一段时间了。可是对于上述是三个关系一直模模糊糊,于是就抽空看看网上的东西结合自己的理解,在这边整理一下
首先要说的是jdk( Java Development ToolKit)java开发工具包,它是我们从事java开发工作的核心,它包括了我们常说的jre(java runtime environment)java运行环境和一堆Java工具(javac/java/jdb等)和一些基础的库类(java api 应用程序接口)
其次,是jre 也就是我们常说的java平台,java运行环境所有的java程序都要在jre下面才能运行,它包括JVM和JAVA核心类库和支持文件。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。
最后,要说的是jvm也就是java虚拟机。顾名思义就是一个虚拟的计算机,属于jre的一部分,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。java虚拟机有自己完善的硬件架构,如处理器,堆栈等,JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。而我们所最最最熟悉的java 的跨平台性就是通过jvm来实现的,总结一下就是一句话,不同的操作系统,使用不同的JVM映射规则,从而保证映射到cpu的是对应系统的指令集,继而实现java的跨平台性。其次JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件也就是我们常说的.class文件。
最后再偷一张图

浙公网安备 33010602011771号