jdk、jvm、jre的关系
JDK:全名 Java Development Kit(java开发工具包)
- 整个Java开发的核心,集成了jre以及其他的一些工具,如javac.exe,jar.exe等
- 一般来说需要开发java程序,使用jdk工具包更好,能够使用很多便捷工具
JRE:全名 Java Runtime Environment(Java运行时环境)
- 主要包含jvm的标准实现和java的一些基本类库
- JRE可以用于服务器中,因为一般不会在服务器中直接开发java,通常是在本地主机完成程序后,上传到服务器中运行即可,因此服务器中安装JRE用于运行java程序即可。
JVM:全名 Java Virtual Machine(Java虚拟机)
- 只认识 xxx.class文件,用于将class文件中的字节码指令识别并调用操作系统的api完成动作。
一张图展示三者关系
主流Java虚拟机
从Java语言诞生开始至今,java虚拟机作为其重要组成部分,主流java虚拟机经历了很多次迭代更新,下面展示出这些主流的虚拟机:
- Sun Classic VM
- 世界上第一款商用java虚拟机
- 纯解释器的方式执行java代码,所以运行速度慢
- Exact VM
- Exact Memory Management:准确式内存管理
- 编译器和解释器混合工作以及两级即时编译器
- Hotspot VM
- 绝对的主流,在通常讨论虚拟机时都是以Hotspot为基准
- 优势:
- 热点代码探测技术:找出最具价值被编译的代码,让JIT编译器编译,方便多次调用
- KVM
- kilobyte,简单,轻量,高度可移植
- 在手机平台运行
- 运行速度较慢
- JRockit
- BEA公司所开发,被Sun公司收购,Sun公司被Oracle收购
- 号称世界上最快的java虚拟机
- 专注服务端应用
- 优势:垃圾收集器、MissionControl服务套件
- J9
- IBM公司开发的一个高度模块化的JVM
- 在许多平台上,IBM J9 VM都只能跟IBM产品一起使用。这不是技术限制,而是许可证限制。
- Dalvik
- 不是java虚拟机,没有遵循java虚拟机规范,不能直接执行编译后的class文件
- 执行的是dex文件,dex文件可以由class文件转化而来
- 是Android开发的重要部件
- Microsoft JVM
- 微软开发的java虚拟机,由于版权问题,被sun公司上述后弃用
- Azul VM/BEA liquid VM
- Taobao VM
- 淘宝公司开发的jvm
参考
- 本文作者: xczll
- 本文链接: https://xczllgit.github.io/2020/03/23/jvm/2020-03-23-jvmIntroduction/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!