zoukankan      html  css  js  c++  java
  • JDK与JRE的关系

    JDK与JRE的关系

    安装

      安装jdk时会提示是否安装JRE,一般选择安装。

      安装完成后,需要配置环境变量,将jdk的bin目录添加到系统path中。

      问题——JDK与JRE有什么区别和联系呢???

    区别与联系

      Jre (java runtime environment)——用于环境, 是java程序的运行环境。虚拟机在jre/bin/client里面——jvm.dll(由于现在硬件性能较高,所以很多都已经废弃了虚拟机client模式,即jvm在jre/bin/server——jvm.dll);所有java类库的class文件,都在lib目录下打包成了jar。

      Jdk (java development kit)——用于开发,是java的开发工具包,里面包含了各种类库和工具。JDK也包括了一个Jre,那么为什么要包括另外一个Jre呢?而且jdk/jre/bin同时有client和server两个文件夹下都包含一个jvm.dll(一般废弃client模式)。 说明是有两个虚拟机的。这一点不知道大家是否注意到了呢?

      javac:相信大家都知道jdk的bin下有各种java程序需要用到的命令,与jre的bin目录最明显的区别就是jdk下才有javac,jre用于提供与运行环境,不需要自己手动去编译开发,所以也就不需要javac。

      path:安装完jdk后,配置将jdk的bin目录添加到path中,但是 在命令行运行的java 命令(java.exe)实际上是jre/bin中的命令,即使不配置jdk路径也能运行(javac不行)。

      那么有人会问了?我明明没有设置jre/bin目录到环境变量中啊?

    试想一下如果java为了提供给大多数人使用,他们是不需要jdk做开发的,只需要jre能让java程序跑起来就可以了,那么每个客户还需要手动去设置环境变量多麻烦啊?所以安装jre的时候安装程序自动帮你把jre的java.exe添加到了系统变量中,验证的方法很简单,大家看到了系统环境变量的 path最前面有“%SystemRoot%system32;%SystemRoot%;”这样的配置,那么再去Windows/system32下面去看看吧,发现了什么?有一个java.exe。

      如果强行能够把jdk/bin挪到system32变量前面,当然也可以迫使使用jdk/jre里面的java,不过除非有必要,我不建议大家这么做。使用单独的jre跑java程序也算是客户环境下的一种测试。

    【参考源】https://blog.csdn.net/liupeng900605/article/details/7651500

  • 相关阅读:
    Hexo命令无法找到 -问题修复
    技术的本质
    java 多线程总结篇4——锁机制
    java 多线程总结篇3之——生命周期和线程同步
    java 多线程总结篇2之——Thread类及常用函数
    java 多线程总结篇1之——基本概念
    java IO流的继承体系和装饰类应用
    java IO流知识点总结
    java IO流之——File类知识总结和面试
    为什么需要学UML建模
  • 原文地址:https://www.cnblogs.com/yelao/p/9626442.html
Copyright © 2011-2022 走看看