zoukankan      html  css  js  c++  java
  • [java]说说 JRE , JDK , JVM 三者之间的区别与联系

    在写了很多代码之后,如果问 jre 和 jdk 之间有什么关系, jvm 又是什么,估计有相当一部分人不知道在说什么.所以这篇文章,就尝试解释一下这三者之间的区别和联系.

    基本概念

    咱们先来说说, jvm , jre , jdk 都是什么.
    JVM ( Java Virtual Machine ):
    就是常说的 java 虚拟机,顾名思义,它就是一个虚拟出来的计算机,通过在实际的计算机上模拟各种计算机功能来实现.
    JVM 是 java 实现跨平台最核心的部分,所有的 java 程序,首先会被编译成 .class 的类文件, JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用. java 面对不同操作系统使用不同的虚拟机,这样实现了跨平台.
    因为 JVM 对上层的 java 源文件怎样是不关心的,它关心的是由源文件生成的类文件.
    JRE ( Java Runtime Environment ):
    java 运行时环境.
    它主要包括两部分: jvm 的标准实现和 java 的一些基本类库还有一些模块等.
    在 java 平台下,所有的 java 程序都需要在 JRE 下才能运行,这是因为在解释 class 时, JVM 需要调用解释所需要的类库 lib .
    可以看看自己下载的 jre ,里面有 bin 和 lib , 在这里可以认为 bin 就是 JVM , lib 就是 JVM 所需要的类库. JVM 和 lib 合起来就称为 JRE .
    JDK (Java Development Kit ):
    java 开发工具包.
    jdk 是整个 java 开发的核心,包括了 java 的运行环境,一堆 java 工具和 java 基础的类库.你可以将 JDK 看成是 JRE 的一个超集.
    由上,我们能够看出来,这三者之间的关系是层层嵌套的: JDK 包含 JRE , 而 JRE 包含 JVM .

    Q & A

    在以上基础上,面试的时候,就有的问了.
    比如:
    Q : java 为什么能够跨平台,实现" write once , run anywhere "
    A : java 能够跨平台运行的核心在于 jvm ,所以并不是 java 能够跨平台,而是它的 jvm 可以做到跨平台.
    java 引入了字节码的概念, jvm 只认识字节码,并将它们解释到系统的 API 调用.不同的系统有不同的 jvm 实现,有 Linux 版本的 jvm 实现,也有 Windows 版本的 jvm 实现,但是同一段代码在编译后的字节码是一样的.
    也就是说,我想要实现的功能,因为编译生成的字节码是唯一的,所以和系统无关,因为在不同的 jvm 实现上会映射到不同系统的 API 调用,从而实现了代码不做任何修改,就可以跨平台运行.

    Q : jdk 和 jre 有什么区别
    A : 把<基本概念>里面的内容说说,然后再说一下在实际中:如果只是想跑 java 程序,只安装 jre 就可以了,如果想要写 java 程序并且运行,就需要 jdk .

    如果能够玩转 jre , jdk , jvm ,你就可以骄傲的说,你有扎实的 java 基础了.
    在这里推荐两篇博客,好好阅读,会有很多收获.
    回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
    万能的林萧说:一篇文章教会你,如何做到招聘要求中的“要有扎实的Java基础”。

    感谢您的阅读~

  • 相关阅读:
    BootStrap弹出框插件popover简单实例
    peity(jQuery 插件可以将元素内容转换为一个小的 <svg> 饼图,圆环图,条形图和折线图)
    java生成API文档
    搭建eova开发环境
    搭建jfinal+maven框架
    注解Annotation
    【转】hive时间函数
    [hive][转]hive修改 表/分区语句
    【java findbugs集锦】【转】May expose internal representation by incorporating reference to mutable object
    [java学习笔记]继承和组合
  • 原文地址:https://www.cnblogs.com/zll-0405/p/12534133.html
Copyright © 2011-2022 走看看