通过实例了解Java jdk和jre的区别

首先笔者想阐明的是:JDK和JRE没想象中的那么简单。

相信大家都知道JDK和JRE是什么,但是具体干什么用不妨先试问下自己,如果能说出个所以然来,那么这篇文章大神请自觉忽略,呵呵,或者可以温故一下。

如果有哪里说的不对的地方还望指出,谢谢。

下面来简单说明下

先上张图,宏观的看一下

从图中可以看出JDK包含JRE包含JVM...

JDK:java development kit (java开发工具)

JRE:java runtime environment (java运行时环境)

引申出JVM

JVM:java virtuak machine (java虚拟机)

一、JDK——开发环境(核心)

java development kit 的缩写,意思是JAVA开发工具,我们写文档做PPT需要office 办公软件,开发当然需要开发工具了,说到开发工具大家肯定会想到Eclipse,但是如果直接安装Eclipse你会发现它是运行不起来 是会报错的,只有安装了JDK,配置好了环境变量和path才可以运行成功。这点相信很多人都深有体会。

JDK主要包含三部分,

第一部分就是Java运行时环境,JVM。

第二部分就是Java的基础类库,这个类库的数量还是非常可观的。

第三部分就是Java的开发工具,它们都是辅助你更好的使用Java的利器。

详寻《玩好JDK,面试不用愁》

二、JRE——运行环境

java runtime environment (java运行时环境)的缩写

1.1_JDK中的JRE

如下图:jdk中包含的jre,在jre的bin目录里有个jvm.dll,既然JRE是运行时环境,那么运行在哪?肯定是JVM虚拟机上了。另,jre的lib目录中放的是一些JAVA类库的class文件,已经打包成jar文件。

1.2_第二个JRE(独立出来的运行时环境)

如下图,不管是JDK中的JRE还是JRE既然是运行时环境必须有JVM。所以JVM也是有两个的。

三、JVM——转换环境

java virtuak machine (java虚拟机)的缩写。

大家一提到JAVA的优点就会想到:一次编译,随处运行,说白了就是跨平台性好,这点JVM功不可没。

JAVA的程序也就是我们编译的代码都会编译为Class文件,Class文件就是在JVM上运行的文件,

只有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库。

JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

JVM也是一门很深的学问,感兴趣的童鞋可以深入研究,只有好处,没有坏处。

其实有时候面试官问JDK和JRE的区别的目的不是想让你解释什么名词的,而是想看看你的基础和研究JAVA的深浅,还有另一方面就是你是不是经常喜欢问为什么。

总结:

如果你面试遇到这个问题了,不用解释太多,一个词(javac)就够了,如果面试官不傻的话,我相信他已经秒懂了。

如果继续追问的话,再一 一给他细分。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 批处理一键安装JDK/一键安装JRE和自动配置Java环境变量

    安装JDK/安装JRE以及配置java环境变量对于java初学者来说是一件比较头疼的事情,这边分享一个简单的批处理命令,助大家一步完成JDK或者单独安装JRK的需求. 关键步骤: 1.新建一个.txt文档,复制附件一/附件二到文档中: 2.修改文档中的内容: 附件一:start /WAIT jdk-8u141-windows-i586.exe /qn INSTALLDIR=C:\Java\jdk1.8 附件二:start /WAIT jre-8u144-windows-i586.exe /s I

  • 详解Java中的JDK、JRE、JVM

    JDK.JRE.JVM JDK包含JRE,而JRE包含JVM JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库.Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库.JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的

  • 解决-BASH: /HOME/JAVA/JDK1.8.0_221/BIN/JAVA: 权限不够问题

    1)进入存放jdk文件的文件夹路径 我这里是 usr/local/jdk/ 2)输入命令 chmod 777 jdk1.8.0_221/bin/java修改权限 3)再次输入 java -version 成功 总结 以上所述是小编给大家介绍的解决-BASH: /HOME/JAVA/JDK1.8.0_221/BIN/JAVA: 权限不够问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处

  • 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如何使用Optional与Stream取代if判空逻辑(JDK8以上)

    通过本文你可以用非常简短的代码替代业务逻辑中的判null校验,并且很容易的在出现空指针的时候进行打日志或其他操作. 注:如果对Java8新特性中的lambda表达式与Stream不熟悉的可以去补一下基础,了解概念. 首先下面代码中的List放入了很多Person对象,其中有的对象是null的,如果不加校验调用Person的getXXX()方法肯定会报空指针错误,一般我们采取的方案就是加上if判断: public class DemoUtils { public static void main(

  • 每天学Java!一分钟了解JRE与JDK

    Java的源代码是以*.java的纯文本文件,可以使用任何文本编辑器来进行编写,但是这个源代码是无法执行的.执行源代码的这个任务就需要JDK和JRE. JDK是Java语言的开发包,它可以将*.java结尾的文件编译为可以执行的Java程序.那么,有了可以执行的Java程序,则需要一个JVM才可以将这个Java程序运行起来.而Java运行环境,也就是JRE中包含了JVM.JVM就是Java的虚拟机.最后,JDK中包含了JRE.有了这样一个逻辑基础,下面,我们来分别认识JRE和JDK. 我们先来看

  • CentOS8 安装 jdk8 / java8的教程(推荐)

    前言 最开始我是想在CentOS8上使用 wget 下载,然后对它进行解压,配置环境变量,奈何搞了很长时间都没有搞好,于是放弃,使用yum直接安装. 1.安装方法 CentOS8上使用 yum 直接安装,环境变量自动配置好 2.查看是否已安装 看到下面结果,说明已经安装配置 jdk [root@localhost ~]# java -version openjdk version "1.8.0_222" OpenJDK Runtime Environment (build 1.8.0_

  • 通过实例了解Java jdk和jre的区别

    首先笔者想阐明的是:JDK和JRE没想象中的那么简单. 相信大家都知道JDK和JRE是什么,但是具体干什么用不妨先试问下自己,如果能说出个所以然来,那么这篇文章大神请自觉忽略,呵呵,或者可以温故一下. 如果有哪里说的不对的地方还望指出,谢谢. 下面来简单说明下 先上张图,宏观的看一下 从图中可以看出JDK包含JRE包含JVM... JDK:java development kit (java开发工具) JRE:java runtime environment (java运行时环境) 引申出JVM

  • jdk与jre的区别 很形象,很清晰,通俗易懂

    简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境.SDK是Software Development Kit 一般指软件开发包,可以包括函数库.编译程序等. JDK就是Java Development Kit JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者. 如果安装了JDK,会发同你的电脑有两套JRE,一套位于 \jre 另外一套位于 C:\Program Files\Java\j2re1.4.

  • Java JDK动态代理(AOP)的实现原理与使用详析

    本文主要给大家介绍了关于Java JDK动态代理(AOP)实现原理与使用的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 一.什么是代理? 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理. 代理模式UML图: 简单结构示意图: 为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别.通过代理类这中间一层,能有效控制对委托类对

  • 详解java JDK 动态代理类分析(java.lang.reflect.Proxy)

    详解java JDK 动态代理类分析(java.lang.reflect.Proxy) /** * JDK 动态代理类分析(java.lang.reflect.Proxy使用) * * @author 张明学 * */ public class ProxyStudy { @SuppressWarnings("unchecked") public static void main(String[] args) throws Exception { // 动态代理类:通用指定类加载器,和接

  • 通过实例了解Java 8创建Stream流的5种方法

    这篇文章主要介绍了通过实例了解Java 8创建Stream流的5种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 不知不觉间,Java已经发展到13了,来不及感慨时间过得真的太快了,来不及学习日新月异的技术更新,目前大多数公司还是使用的JDK8版本,一方面是版本的稳定,另一方面是熟悉,所以很多公司都觉得不升级也挺好. 说到JDK8,真的是一个里程碑的版本,一出世就受到所有开发者的青睐,并主动花时间和精力去学习,也是我见过企业升级JDK最豪爽

  • 详解Java JDK动态代理

    今天来看看Java的另一种代理方式--JDK动态代理 我们之前所介绍的代理方式叫静态代理,也就是静态的生成代理对象,而动态代理则是在运行时创建代理对象.动态代理有更强大的拦截请求功能,因为可以获得类的运行时信息,可以根据运行时信息来获得更为强大的执(骚)行(操)力(作). 我们还是以上一个例子为例,这里的IStars接口和Stars类都不需要修改,只需要修改代理类. 创建JDK动态代理需要先实现InvocationHandler接口,并重写其中的invoke方法,具体步骤如下: 1. 创建一个类

  • Java jdk安装及javac命令无效解决方案

    一,我们安装java8,如下,我们可以选择安装地址,这个地址是我们用来配置环境变量的,唯一注意的是这个,其他的都是默认下一步.直至安装完成,jdk下载地址https://www.oracle.com/java/technologies/javase-downloads.html 二,我们配置环境变量 1>JAVA_HOME,值I:\JAVA\JDK(PS:这个是我自己切换的地址) 2>CLASSPATH, 值.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\to

  • 关于Java JDK安装、配置环境变量的问题

    JDK安装 1. 点击进入官方网站下载JDK(注意,下载需要注册账号) 根据自己的电脑版本选择相对应的 JDK 软件包 2. 双击安装,选择安装路径 我这里选择的是安装在F盘(可根据自己的需要选择合适的安装路径) 配置环境变量 1. 我的电脑-->右键-->属性-->高级系统设置-->环境变量--> 新建系统变量 变量名为JAVA_HOME,变量值为安装JDK路径 2.系统变量-->Path-->新建Path变量 将bin目录和jre\bin目录添加到Path变量

  • Java JDK 二分法 分析demo(推荐)

    如下所示: public class Test { public static void main(String[] args) { Long[] arr = new Long[100000]; for(int i =0;i<100000;i++) { arr[i] = (long) i; } System.out.println(binarySearch(arr, 3L)); Comparable midVal = (Comparable) 2L;; System.out.println(mi

随机推荐