JDK,JRE与JVM

JDK

定义: JDK,全称Java Development Kit,(又称为Java SDK,Java Software Development Kit) ,是 Java 语言的软件开发工具包。

其中, JDK中包含JRE(Java Runtime Environment)和Java开发工具包,JRE又包含jvm虚拟机和Java运行所需的核心类库。

根目录下有个bin文件夹,这里面放的都是Java的可执行文件(也可以理解为Java开发工具,可执行文件就是利用这个文件可以对写出来的代码进行一些操作,比如javac是用来编译的,这个javac就是其中的一个可执行文件).

    还是这一级目录,有个lib文件夹,这个文件夹的作用就是对bin目录下的开发工具起支持作用的,说白了就相当于一个环境,在这个环境的支持下,bin目录下的开发工具才能起作用。

    还有个jre文件夹,这个就是上面所所的JRE(Java Runtime Environment  Java运行环境),此目录下有个bin文件夹,这里面放的是java运行的必要组件(就是传说中的jvm),同一级目录下有个还有lib文件夹(注意,这里的lib文件夹,和根目录下的lib文件夹作用是不同的),这里的lib是对jvm进行支持的,也可以认为是一个环境,有了这个环境,jvm才能运行起来。

    总的来说,只要是用JDK开发的程序,就必须在JRE上运行。

JRE

定义(简介):JRE 是Java Runtime Enviroment的简称,即Java 运行时环境,它是Java程序运行所必须的环境集合,主要由Java虚拟机、Java平台核心类和若干支持文件组成。JRE不包含开发工具、编译器、调试器以及其他工具。J2RE是Java2 Runtime Environment的简称,有时简称为JRE

JRE 自带的基础类库主要在 JRE\lib\rt.jar 文件中,该文件包括了 Java 2 平台标准版的所有类库,与JRE的版本是一致的。在程序运行时,JRE由ClassLoader(类加载器)负责查找和加载程序引用到的基类库和其他类库。基础类库,ClassLoader 会自动到 rt.jar 中加载,操作系统通过PATH 环境变量来查找 JRE 并确定基础类库文件 rt.jar 的位置;其他的类库,ClassLoader在环境变量CLASSPATH指定的路径中搜索,按照先来先到的原则,放在CLASSPATH前面的类库优先被搜到,因此建议在Java程序启动之前先把PATH和CLASSPATH环境变量设置好。


JVM

定义(简介):JVM是Java Virtual Machine(Java 虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

JAVA语言的一个重要特点就是平台无关性,而java虚拟机(即jvm)可以来实现这样的特点

Java语言 编译程序只需生成在Java虚拟机上运行的目标代码( 字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的 机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。


三者的区别与联系:

  1. JDK(Java Development Kit)

    • 它是Java开发工具包,包含了编写Java程序所需的所有工具和库。
    • JDK是面向开发者的,它不仅包含了JRE,还包括了编译Java代码的编译器(javac),运行Java程序的工具(java),以及用于开发Java应用程序的各种工具和库。
    • JDK是开发Java应用程序的基础。
  2. JRE(Java Runtime Environment)
    • 它是Java运行时环境,包含了运行Java应用程序所需的全部Java核心类库和Java虚拟机(JVM)。
    • JRE是面向最终用户的,它允许用户运行Java应用程序,但不支持Java程序的开发。
    • 简单来说,如果你只需要运行Java程序,而不需要开发,那么只需要安装JRE。
  3. JVM(Java Virtual Machine)
    • 它是Java虚拟机,是一个可以执行Java字节码的虚拟计算机。
    • JVM是Java平台的核心,它提供了一种机制,使得Java字节码可以在任何安装了JVM的平台上运行,实现了所谓的“一次编写,到处运行”(Write Once, Run Anywhere)。
    • JVM负责加载Java类文件,执行字节码,并提供必要的运行时服务,如内存管理。

联系

  • JDK包含了JRE,因此安装了JDK的用户不需要单独安装JRE,因为JDK中已经包含了JRE的所有组件。
  • JRE包含了JVM,因此JRE提供了运行Java程序所需的最小环境。

区别

  • JDK是为开发者设计的,包含了编写和编译Java程序所需的工具
  • JRE是为最终用户设计的,只包含运行Java程序所需的组件
  • JVM是Java程序运行的平台,与是否开发或运行Java程序无关,它是Java语言跨平台特性的关键

JDK,JRE与JVM的更多相关文章

  1. Difference between JDK, JRE and JVM

    With Java programming language, the three terms i.e. JDK, JRE and JVM will always be there to unders ...

  2. Java语言的跨平台性-JDK,JRE和JVM

    Java语言的跨平台性 1 Java虚拟机--JVM JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的 运行环境, ...

  3. java学习之Java中JDK,JRE和JVM之间的关系(转载)

    最近要重新抓一下java,大量扫技术文档,保存下来供自己查阅.以下转载自http://www.cnblogs.com/xiaofeixiang/p/4085159.html 初学JAVA很容易被其中的 ...

  4. Java中JDK,JRE和JVM之间的关系

    初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...

  5. Java基础知识 ——JDK,JRE和JVM

    1.开发简单的Java程序过程: 名词解释: JDK:JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行 ...

  6. Java中JDK,JRE和JVM之间的关系-(转载)

    初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...

  7. JAVA语言的跨平台性和JDK,JRE与JVM

    Java虚拟机--JVM ~JVM:java虚拟机简称JVM是运行所有java程序的假想计算机,是java程序的运行环境,是java最具有吸引力的特性之一,我们编写的java代码,都运行在JVM之上 ...

  8. 【java】JDK、JRE、JVM的关系

    目录结构: contents structure [-] 什么是JDK,JRE,JVM 安装JDK的时候为什么有两个jre 专用JRE 共用JRE 共用JRE和专用JRE的对比 java的跨平台特性 ...

  9. JDK,JRE,JVM,三者的区别于联系?

    万事开头难,从基础抓起! 下载JDK官网:http://www.oracle.com/technetwork/java/javase/downloads/index.html JDK:Java Dev ...

  10. java环境变量以及jdk、jre、jvm

    一.jdk,jre,jvm的了解:jdk全称java development kit即java开发工具包,是整个java的核心,包含了java运行环境jre.java工具包和java的基础类库: jr ...

随机推荐

  1. CSP2020复赛后日志

    day0 死磕T1,1h30min后估30pts无从下手优化: 看到T2,貌似是组合数学,直接\(pass\) 看到T3,想到暴力--线段树--vector存展开指令--1h30min写完暴力继续T1 ...

  2. Token:大语言模型的“语言乐高”,一切智能的基石

    1.什么是Token?--AI眼中的"文字积木块" Token 是模型用来表示自然语言文本的基本单位,也是模型的计费单元,可以直观的理解为"字"或"词 ...

  3. HarmonyOS运动语音开发:如何让运动开始时的语音播报更温暖

    鸿蒙核心技术##运动开发##Core Speech Kit(基础语音服务)# 前言 在运动类应用中,语音播报功能不仅可以提升用户体验,还能让运动过程更加生动有趣.想象一下,当你准备开始运动时,一个温暖 ...

  4. 题解:CF1045I Palindrome Pairs

    题目链接:link. 首先上思路: 如果一个字符串是回文串,只有当其中最多的只有一个字符的出现次数是奇数. 注意我们可以将每个字符串的字符出现次数的奇偶性用一个 \(26\) 位的二进制表示. 接下来 ...

  5. 打工人神助攻!2025年最火OKR工具榜单,看板式目标管理必备

    OKR(目标与关键成果)已成为企业目标管理的标准框架,为确保OKR目标可落地,可视化.协作性强的工具需求激增.2025年,哪些OKR工具真正助力团队落地战略?本文盘点当下最火的5款OKR工具,帮助HR ...

  6. FastAPI权限验证依赖项究竟藏着什么秘密?

    title: FastAPI权限验证依赖项究竟藏着什么秘密? date: 2025/06/12 06:53:53 updated: 2025/06/12 06:53:53 author: cmdrag ...

  7. 阿里微服务解决方案-Alibaba Cloud之服务提供方搭建(二)

    一.新建服务提供方模块 1.1 右键父工程 New-> Module 1.2 选择 Maven项目,然后 Next 1.3 指定父工程,并且子模块以端口号结尾,方便调试 1.4 因为父工程已经添 ...

  8. Vue 结合Sortablejs实现table行排序

    场景 在一个列表展示页面上,使用了表格组件,原有组件本身不支持拖拽功能,需求要求在列表的基础上支持行拖拽排序.因此引入了Sortablejs插件. 问题及解决方案 引入Sortablejs后刚开始都很 ...

  9. 《好好学Java 从零基础到项目实战》姗姗而来

    梦里寻她千百度,千呼万唤始出来.从决定开始写这本书,到最终出版上市,数数已经是第三个夏天了.今年疫情有点紧,各行各业都受到影响,多亏出版社各位老师东奔西走,总算排除了万般艰难险阻,这才有了<好好 ...

  10. 调试栈 linux

    参考连接 bluez 中有对于backtrace 的使用.所以看了一下这篇文章比较好.转载了 参考:CSDN大牛