【转】Java中JDK和JRE的区别是什么?它们的作用分别是什么?(现在直接安装 JDK是生产环境的标准做法)

2025年更新------------------------------------------------------

 为什么更推荐安装 JDK?

尽管 JRE 能够运行程序,但在生产环境中,您可能会遇到仅凭 JRE 无法解决的问题。JDK 提供了一系列强大的工具,这些工具在部署和运维中至关重要:

  1. 强大的监控和诊断工具

    • jps:列出当前系统上所有的 Java 进程的 PID,非常常用。

    • jstack:打印 Java 进程的线程堆栈信息,用于诊断死锁、CPU 飙升等问题。

    • jmap:生成 Java 进程的堆内存转储快照,用于分析内存泄漏、OOM。

    • jstat:监控 Java 进程的类加载、内存、垃圾回收等实时信息。

    • jinfo:查看和调整 Java 进程的虚拟机参数。

  2. 应对意外情况

    • 您的项目可能依赖某些库(例如 Lombok),它们在运行时通过字节码操作动态生成一些类。虽然这种情况现在变少了,但一些高级框架或特定场景下,JDK 中的工具链 (tools.jar) 可能是必需的。

    • 如果现场需要临时验证一个小的代码改动,没有 JDK 就无法编译。

  3. 历史和生态现状

    • 从 Java 9 开始,Oracle 不再提供独立的 JRE 安装包。虽然其他发行版(如 OpenJDK)可能仍提供,但趋势是JDK 作为标准的运行时环境。

    • 现在流行的容器化部署(如 Docker),其基础镜像通常直接使用 JDK 镜像,因为空间差异在镜像层中影响不大,但功能完整性至关重要。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

原文地址:http://blog.csdn.net/qq_33642117/article/details/52143824

JDK和JRE是Java开发和运行工具,其中JDK包含了JRE,但是JRE是可以独立安装的~

它们在Java开发和运行的时候起到不同的作用~

  关于JDK和JRE,大家一定会记得,在安装JDK的时候需要分为俩个步骤:安装JDK和JRE,大家一般会一起安装,也建议大家分开装,因为这样更能帮助大家弄清它们的区别

  JRE是Java Runtime Environment的缩写,是Java程序的运行环境。既然是运行,当然要包含JVM,也就是所谓的Java虚拟机,还有所以的Java类库的class文件,都在lib目录下,并且都打包成了jar。

至于在Windows上的虚拟机是哪个文件呢?就是<JRE安装目录>/bin/server中的jvm.dll。

 

  JDK是Java Development Kit的缩写,是Java的开发工具包,主要包含了各种类库和工具,当然也包含了另外一个JRE,那么为什么要包含另外一个JRE呢?而且<JDK安装目录>/JRE/bin目录下,包含有server一个文件夹~包含一个jvm.dll,这说明JDK提供了一个虚拟机。另外,JDK的bin目录下有各种Java程序需要用到的命令,与JRE的bin目录最明显的区别就是JDK文件下才有javac,这一点很好理解,因为JRE只是一个运行环境而已,与开发无关。正因为如此,具备开发功能的JDK所包含的JRE下才会同时有server的JVM,而仅仅作为运行环境的JRE下,只需要server的jvm.dll就够了。

  注意:JDK所提供的运行环境和工具度需要进行环境变量的配置以后,才能使用,最主要的配置就是把<JDK安装目录>/bin目录设置为Path环境变量值的一部分。

  另外,安装JRE的时候安装程序会自动把JRE的java.exe添加到了系统变量中。系统变量Path的最前面有%SystemRoot%system32;%SystemRoot%;这样的配置,那样到Windows/system32目录下main去看看,会发现一个java.exe文件。这样就无需配置环境变量,也可以运行Java程序了。

可以这样回答:

JDK是Java的开发工具,它不仅提供了Java程序运行所需的JRE,还提供了一系列的编译,运行等工具,如javac,java,javaw等。JRE只是Java程序的运行环境,它最核心的内容就是JVM(Java虚拟机)及核心类库。

posted @ 2018-01-11 14:31  dirgo  阅读(250)  评论(0)    收藏  举报