首页 > 其他分享 >关于JDK与JRE的区别

关于JDK与JRE的区别

时间:2023-05-16 22:47:00浏览次数:44  
标签:JRE exe Java JDK 区别 java 目录

JDK安装路径下的JRE与独立安装的JRE区别:

在JDK安装目录下的子文件下,已经默认安装了一个jre。且与独立安装的JRE6所包含的文件几乎完全一样。

       JDK里面内置的JRE和独立的JRE是有一点差别的:
 在JDK安装文件中包含了一个完整的独立版本的JRE,他会在JDK安装过程中自动被执行。 

     JDK里面的工具也是用JAVA编写的,它们本身运行的时候也需要一套JRE,如C:/Program Files/Java/jdk1.8.x/目录下的JRE。而C:/Program Files/Java/目录下的JRE是用来执行我们自己编写的JAVA程序。当然,两套JRE中的任何一套都可以用来执行我们自己编写的JAVA程序,但是JDK里面的工具只能由C:/Program Files/Java/jdk1.8.x/目录下的JRE来执行。

一个是java开发包(java develop kit),一个是java运行时环境(java runtime environment)


JDK JRE区别 

       JDK里面的工具也是用JAVA编写的,它们本身运行的时候也需要一套JRE,如C:/Program Files/Java/jdk1.8.x/目录下的JRE。而C:/Program Files/Java/目录下的JRE是用来执行我们自己编写的JAVA程序。当然,两套JRE中的任何一套都可以用来执行我们自己编写的JAVA程序, 但是JDK里面的工具只能由C:/Program Files/Java/jdk1.8.x/目录下的JRE来执行。


       jdk(java development kit)是开发工具包,相当于是一个编译器。
       jre(java runtime environment)是运行环境,相当于jvm虚拟机。jdk开发出来的java程序必须在jvm中运行,jre就提供了这么一个环境。


       JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。

       SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。

       JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。


1、为什么Sun要让JDK安装两套相同的JRE?

       这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在/lib/tools.jar里。从下面例子可以看出,先将tools.jar改名为tools1.jar,然后运行javac.exe,显示如下结果:Exception in thread"main"java.lang.NoClassDefFoundError:com/sun/tools/javac/Main这个意思是说,你输入javac.exe与输入java-cp c:/jdk/lib/tools.jar com.sun.tools.javac.Main是一样的,会得到相同的结果。从这里我们可以证明javac.exe只是一个包装器(Wrapper),而制作的目的是为了让开发者免于输入太长的指命。而且可以发现/lib目录下的程序都很小,不大于2 9K,从这里我们可以得出一个结论。就是JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于C:/Program Files/Java目录下的那套JRE就是用来运行一般Java程序用的。

2、如果一台电脑安装两套以上的JRE,谁来决定呢?

       这个重大任务就落在java.exe身上。Java.exe的工作就是找到合适的JRE来运行Java程序。Java.exe依照底下的顺序来查找JRE:自己的目录下有没有JRE;父目录有没有JRE;查询注册表:[HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment]所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。


1.JVM--java virtual machine
       JVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
2.JRE--java runtime environment
       JRE是指java运行环境。光有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。(jre里有运行.class的java.exe)
3.JDK--java development kit
       JDK是java开发工具包,基本上每个学java的人都会先在机器上装一个JDK,那他都包含哪几部分呢?让我们看一下JDK的安装目录。在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的是以下四个文件夹:bin、include、lib、jre。现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。

标签:JRE,exe,Java,JDK,区别,java,目录
From: https://www.cnblogs.com/meng-xiang-tao-1999/p/17407061.html

相关文章

  • HTML 里 img 元素的 src 和 srcset 属性有何区别?
    在HTML中,img元素通常用于在网页中插入图片。img元素有两个相关的属性:src和srcset。src属性指定图像的URL,它是必需的。浏览器将使用该URL加载图像并将其显示在页面上。srcset属性允许您指定一系列不同大小或分辨率的图像文件,以便浏览器可以根据设备的像素密度和屏幕大......
  • Java static、final、static final 以及final static区别
    一、相同点都是Java修饰符二、不同点finalfinal修饰类:表示该类不能被继承;final修饰方法:表示该方法不能被重写;final修饰方法参数:表示在变量的编译期中它的值不能被改变;final修饰变量:包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲......
  • Java public、protected、default和private四种修饰符区别
    一、相同点都是修饰符二、不同点访问权限不同public任何地方都可以访问,被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。****protected修饰符,权限介于public与default之间。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类......
  • 恒创科技:深入分析香港 windows 和 linux VPS 区别和使用需求
    ​香港虚拟专用服务器(VPS)是一种流行的托管解决方案,可为用户提供专用物理服务器的灵活性和控制力,且成本不高。两种常见的VPS类型是Windows和LinuxVPS。尽管两者都提供相似的好处,但两者之间的显著差异会影响哪一个更适合用户的特定需求。在本文中,我们将探讨这两种......
  • 微服务注册中心之Zookeeper,Eureka,Nacos,Consul,Kubernetes区别
    目录1微服务注册中心1.1注册中心概念1.1.1为什么需要注册中心1.1.2如何实现一个注册中心1.1.3如何解决负载均衡的问题1.2注册中心如何选型1.2.1Zookeeper1.2.2Eureka1.2.3Nacos1.2.4Consul1.2.5Kubernetes1微服务注册中心微服务的注册中心目前主流的有以下五种:Zooke......
  • JAVA基础(多线程Thread和Runnable的使用区别
    [color=red][size=x-large]两种定义方式[/size][/color]定义方式一:classTestThreadextendsThread{publicvoidrun(){........................}}Threadt=newTestThread();t.run()//或者t.start();定义方式二:Threadt=newRunnabl......
  • 【垃圾回收器】JDK的垃圾回收器
    JDK不同版本的默认垃圾回收器JDK1.7:PS+POJDK1.8:PS+POJDK1.9:G1另,要注意的是:(1)CMS从来不是某个版本默认的垃圾回收器;(2)CMS是划时代的,从1.4开始出现,开启了并发回收。但它的缺点也很明显,并不是默认的垃圾回收。(3)G1是从jdk1.7开始,但到1.8才比较稳定,所以G1基本从1.8就......
  • Java 中 ArrayList 和 LinkedList 有什么区别
    在Java中,ArrayList和LinkedList是两种常见的集合类。它们都实现了List接口,提供了类似数组的功能,可以存储任意类型的对象。虽然它们都可以实现相同的功能,但是它们的底层实现方式有所不同,因此在性能和用途上也存在一些差异。ArrayListArrayList是一个基于数组实现的动态数组,它可......
  • @Autowired和@Resource的区别
    @Autowired和@Resource的区别一、相同点@Resource的作用相当于@Autowired,均可标注在字段或属性的setter方法上。二、不同点(1)提供方:@Autowired是由org.springframework.beans.factory.annotation.Autowired提供,换句话说就是由Spring提供;@Resource是由javax.annotation.Resource......
  • JDK安装教程(Windows)
    Windows端:1.安装        首先进入官网:https://www.oracle.com/java/technologies/javase-downloads.html        因为我已经安装了JDK8,所以我就以 JDK15 举例(平时还是建议JDK8):                        下载对应的版本  ......