java环境中的JDK、JVM、JRE详细介绍

 更新时间:2016年11月26日 14:39:34   作者:BigFengFeng  
这篇文章主要介绍了java环境中的JDK、JVM、JRE详细介绍的相关资料,对于初学者还是有必要了解下,细致说明他们是什么,需要的朋友可以参考下

java环境中的JDK、JVM、JRE

  近来小看了下Android,扑面而来一堆概念JDK、JVM、JRE、SDK、NDK、ADT。缕了一下,其中JDK、JVM、JRE是java环境的东西,而SDK、NDK、ADT是Android开发用到的东西。下面来区别一下JDK、JVM、JRE。

小贴士:mac下装完java后,它在哪里呢,见下图

首先来说一下JDK

  JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。

  JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API )。

  有以下三种版本:

  SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。

  EE(J2EE),enterprise edition,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE。

  ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序,从JDK 5.0开始,改名为Java ME。

再来谈谈JRE

  JRE为Java Runtime Environment的简称,Java Runtime Environment(包括Java Plug-in)是Sun的产品,包括两部分:Java Runtime Environment和Java Plug-in。JavaRuntimeEnvironment(JRE)是可以在其上运行、测试和传输应用程序的Java平台。它包括Java虚拟机(jvm)、Java核心类库和支持文件。它不包含开发工具(JDK)--编译器、调试器和其它工具。JRE需要辅助软件--Java Plug-in--以便在浏览器中运行applet。

没有JDK的话,无法编译Java程序,但在有JRE环境的系统上可以运行程序。所以当你只需要运行Java程序或Applet,下载并安装JRE即可。如果你要自行开发 Java软件,请下载JDK。

最后再来了解一下JVM

  JVM即Java Virtual Machine(Java虚拟机),JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。

  这是三者的关系图:

  我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

JVM(Java Virtual Machine),即Java虚拟机

  JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。编译虚拟机的指令集与编译微处理器的指令集非常类似。

  JVM是Java语言跨平台(这里的“平台”是指不同的操作系统)的基础,要想在不同的操作系统上运行Java程序,就需要在不同操作系统上安装对应的JVM。所以,JVM有Windows版本、MAC版本、Linux版本等。

JRE(Java Runtime Environment),即Java运行环境

  JRE包括Java虚拟机和Java程序所需的核心类库。如果要想运行一个开发好的Java程序,只需要在计算机中安装JRE即可。

  总结:JRE=JVM+Java类库

JDK(Java Development Kit),即Java开发工具包

  JDK是提供给Java开发人员使用的,包含了JRE和一些Java开发工具,如编译工具(javac.exe)、打包工具(jar.exe)等。所以安装了JDK就不需要再安装JRE了。作为Java语言的学习者,我们必须安装JDK,没有JDK,我们是没有办法编译和运行Java代码的,这也是几乎所有的Java入门教程推荐我们安装JDK的原因。

  总结:JDK=JRE+Java开发工具

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Java领域模型示例详解

    Java领域模型示例详解

    本文介绍了Java领域模型(POJO/Entity/VO/DTO/BO)的定义、用途和区别,强调了它们在不同场景下的角色和使用场景,文章还通过一个流程示例展示了各模型如何协同工作,以及如何使用转换工具简化模型间的转换,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • http中get请求与post请求区别及如何选择

    http中get请求与post请求区别及如何选择

    这篇文章主要介绍了http中get请求与post请求在应用中应该如何选择,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-09-09
  • java中的FileInputStream(输入流)

    java中的FileInputStream(输入流)

    这篇文章主要介绍了java中的FileInputStream(输入流),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 基于AspectJ注解方式实现AOP

    基于AspectJ注解方式实现AOP

    这篇文章主要介绍了基于AspectJ注解方式实现AOP,使用AspectJ的注解可以更方便地编写和管理切面逻辑,而Spring AOP也是使用了AspectJ提供的注解来实现切面编程,需要的朋友可以参考下
    2023-09-09
  • Java中异或的深入讲解

    Java中异或的深入讲解

    这篇文章主要给大家介绍了关于Java中异或的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • Java开发实现的Socket双向通信功能示例

    Java开发实现的Socket双向通信功能示例

    这篇文章主要介绍了Java开发实现的Socket双向通信功能,结合实例形式分析了java基于socket实现的服务器端与客户端双向通信相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • MVC+DAO设计模式下的设计流程详解

    MVC+DAO设计模式下的设计流程详解

    这篇文章主要介绍了MVC+DAO设计模式下的设计流程详解,分别介绍了数据库设计、设计符合java bean标准的entity类、设计访问数据库的DAO接口等内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 解决springboot利用ConfigurationProperties注解配置数据源无法读取配置信息问题

    解决springboot利用ConfigurationProperties注解配置数据源无法读取配置信息问题

    今天在学习springboot利用ConfigurationProperties注解配置数据源的使用遇到一个问题无法读取配置信息,发现全部为null,纠结是哪里出了问题呢,今天一番思考,问题根源找到,下面把我的解决方案分享到脚本之家平台,感兴趣的朋友一起看看吧
    2021-05-05
  • 详解Java从工厂方法模式到 IOC/DI思想

    详解Java从工厂方法模式到 IOC/DI思想

    工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口。本文将详细介绍Java从工厂方法模式到 IOC/DI思想。
    2021-06-06
  • SpringBoot实现elasticsearch索引操作的代码示例

    SpringBoot实现elasticsearch索引操作的代码示例

    这篇文章主要给大家介绍了SpringBoot如何实现elasticsearch 索引操作,文中有详细的代码示例,感兴趣的同学可以参考阅读下
    2023-07-07

最新评论