JDK包含了JRE,JRE包含了JVM

  • JDK:java开发工具包,针对java开发人员,可以编译运行java程序
  • JRE:java运行时环境,针对使用java程序的客户,可以运行字节码(.class),但是不能编译Java源码
  • JVM:用来解释执行字节码文件(.class),但不能正确的执行

什么是JVM

JVM是JRE的一部分,是虚拟出来的一台计算机.通过实体计算机仿真各种计算功能来实现,JVM有自己完善的硬件架构,如处理器,堆栈,寄存器等,还有相应的指令集.JVM是Java跨平台的核心,Java程序通过JVM的跨平台,从而使Java程序跨平台.Java程序首选会被编译成字节码文件(.class),JVM的核心任务就是解释字节码文件(.class)并映射到真实CPU指令集或者系统调用.JVM不关系上层Java程序,只关系字节码(.class).

什么是JRE

JRE是Java运行环境,所有Java程序必须依赖JRE才能运行.只有JVM是不能运行字节码文件的(.class),因为解释的字节码的时候需要lib库. JRE里面有两个文件夹bin/,lib/bin/就是JVM,lib就是JVM所需要库。JVM+lib=JRE

什么是JDK

JDK是Java的核心,包含运行Java运行环境(JRE)和一些Java工具及Java基础类库 。

JDK提供的工具

appletviewer.exe*    java-rmi.exe*  jrunscript.exe*    policytool.exe*
extcheck.exe*        javaw.exe*     jsadebugd.exe*     rmic.exe*
idlj.exe*            javaws.exe*    jstack.exe*        rmid.exe*
jabswitch.exe*       jcmd.exe*      jstat.exe*         rmiregistry.exe*
jar.exe*             jconsole.exe*  jstatd.exe*        schemagen.exe*
jarsigner.exe*       jdb.exe*       jvisualvm.exe*     serialver.exe*
java.exe*            jdeps.exe*     keytool.exe*       servertool.exe*
javac.exe*           jhat.exe*      kinit.exe*         tnameserv.exe*
javadoc.exe*         jinfo.exe*     klist.exe*         unpack200.exe*
javafxpackager.exe*  jjs.exe*       ktab.exe*          vcruntime140.dll*
javah.exe*           jli.dll*       native2ascii.exe*  wsgen.exe*
javap.exe*           jmap.exe*      orbd.exe*          wsimport.exe*
javapackager.exe*    jps.exe*       pack200.exe*       xjc.exe*

Java Api是Java的应用程序接口,里面有很多写好的Java Class,包含一些重要的语法结构以及基本图形,网络和文件IO,我们可以直接调用。

总结

  • 有JVM和lib库(JRE)就可以执行字节码(.class)文件(Java程序)
  • 有JRE可以运行(Java程序)但是还不能开发Java程序,需要JDK(JRE+开发工具)才可以

windows 安装jdk

会发现有两个目录,其实只需要jdk1.8.0_91就可以,里面包好了jre,jre1.8.0_91是JDK单独提供一个一个运行环境

两个目录jre的区别

  • 相同点:这两个JRE都可以作为Java程序的运行环境
  • 不同点:JDK只能使用自己目录自带的JRE,不能使用外面单独安装的JRE

开发到运行

安装JDK环境,调用本地的Java api完成业务代码,通过JDK的编译器(javac)编译成字节码(.class),然后在JRE上运行这些JAVA字节码,JVM解释这些字节码,映射到CPU指令集或者系统调用。

JVM,JRE,JDK之间的区别和联系相关推荐

  1. JVM JRE JDK,这些东西到底是什么?(转载)

    JVM JRE JDK,这些东西到底是什么? JVM JRE JDK,这些东西到底是什么? 我们在安装好JDK后就可以想象成我们已经买了一台安装好软件的新的电脑. JVM : Java Virtual ...

  2. jvm优化_Java中JVM,JIR,JRE和JDK之间的区别

    jvm优化 JRE,JVM和JDK是您经常与Java编程语言结合使用的三个术语,大多数人会混淆它们或认为它们都是相同的. 在本文中,您将了解什么是Java运行时(JRE),什么是Java虚拟机(JVM ...

  3. java jli.dll_JVM、JRE、JDK之间的区别和联系,你居然还不知道?

    JDK包含了JRE,JRE包含了JVMJDK:java开发工具包,针对java开发人员,可以编译运行java程序 JRE:java运行时环境,针对使用java程序的客户,可以运行字节码(.class) ...

  4. java开发工具(JVM,JRE,JDK)

    java开发工具 JVM(Java Virtual Machine):java虚拟机 JRE(Java Runtime Environment):是Java程序的运行环境,包含JVM和运行时所需要的核 ...

  5. 2.JVM和DVM之间的区别

    1.JVM .java----->.class----->.jar 运行在内存的 栈 栈虚拟机 2.DVM .java----->.class------>.dex-----( ...

  6. Eclipse中自带的编译器和引入的JRE(JDK)的关系

    目录 简单介绍: A  为工作空间设置编译器版本 : 无用 B  为工作空间引入JRE: C 为不同项目选择不同的编译器版本 :  Project Facets和Java Compiler D  为不 ...

  7. JDK,JRE和JVM之间的区别

    Table of Contents JAVA开发套件 JAVA运行时环境 JAVA虚拟机 JDK,JRE和JVM之间的差异 JRE和JDK如何工作? JRE如何工作? JVM如何工作? 推荐文章: J ...

  8. jdk和jre和jvm区别_JDK,JRE和JVM之间的区别

    jdk和jre和jvm区别 The difference between JDK and JRE and JVM is one of the popular interview questions. ...

  9. JVM,JDK,JRE和OpenJDK有什么区别?

    本文翻译自:What is the difference between JVM, JDK, JRE & OpenJDK? What is the difference between JVM ...

最新文章

  1. mysql远程连接设置_MySQL远程连接设置
  2. CentOS系统时间同步(NTP)
  3. 学好Python能做什么?有哪些从业方向?
  4. 在sql server2000的查询分析器里查询oracle的数据
  5. CodeForces 901D Weighting a Tree(结论)
  6. 管道的应用(pipe)《深入分析Linux内核源码》
  7. 使用动态数据进行数据分页
  8. 关于 JavaScript 浮点运算的精度解决方案
  9. Atitit.java jna 调用c++ dll 的总结
  10. 诺基亚n1平板电脑刷机教程_诺基亚N1 完整包线刷升级或救砖教程(不分台版;国行)...
  11. php读取mpp,php解析mpp文件中的前置任务
  12. Godot官网新闻翻译 - 2015年
  13. Android 中关于九宫格图片的那些事
  14. 告别UAC恼人的弹窗
  15. 用 PHP 来刷leetCode 之 三数之和
  16. iphone长截图哪个软件好_这应该是目前为止,iPhone上最好的长截图工具
  17. PnetLab模拟器一键汉化教程
  18. c语言void返回什么意思,C语言程序返回值是void什么意思?
  19. 关于DIY电池均衡器--被动均衡---蓄电池--电瓶车电池组电压均衡的经历
  20. arm-linux平台的挖矿工具cgminer移植

热门文章

  1. Word 2003快速输入技巧
  2. 用Layer.search快速查询图元
  3. linux源码Makefile详解(完整)-转
  4. 复杂多目录的Makefile模板及示例-转
  5. 蓝桥杯 ALGO-5 算法训练 最短路
  6. [Java] 蓝桥杯ADV-176 算法提高 陶陶摘苹果
  7. [Python] L1-053 电子汪-PAT团体程序设计天梯赛GPLT
  8. ai电磁组属于什么组_飞思卡尔智能车电磁组分区算法介绍
  9. 手把手教你用Spring Cloud和Docker构建微服务
  10. 通过java程序实现mysql 批量一个表的子段更新另一个表的字段