您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

什么是JVM?什么是JDK?什么是JRE?

时间:2019-09-04 09:34:41  来源:  作者:



JVM 
:JVM是JAVA Virtual machine(Java虚拟机)的缩写,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。JVM是Java平台的基础,和实际的机器一样,它也有自己的指令集,并且在运行时操作不同的内存区域。 JVM通过抽象操作系统和CPU结构,提供了一种与平台无关的代码执行方法,即与特殊的实现方法、主机硬件、主机操作系统无关。JVM的主要工作是解释自己的指令集(即字节码)到CPU的指令集或对应的系统调用,保护用户免被恶意程序骚扰。 JVM对上层的Java源文件是不关心的,它关注的只是由源文件生成的类文件(.class文件)。
 

JRE:JRE是java runtime environment(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)。JRE是Sun公司发布的一个更大的系统,它里面就有一个JVM。JRE就与具体的CPU结构和操作系统有关,是运行Java程序必不可少的(除非用其他一些编译环境编译成.exe可执行文件……),JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。
 

JDK:JDK是java development kit(java开发工具包)的缩写。每个学java的人都会先在机器上装一个JDK,那 让我们看一下JDK的安装目录。在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的是以下四个文件夹:bin、include、lib、jre。现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。

bin:最主要的是编译器(javac.exe)

include:java和JVM交互用的头文件

lib:类库

jre:java运行环境

(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。eclipse、idea等其他IDE有自己的编译器而不是用JDK bin目录中自带的,所以在安装时你会发现他们只要求你选jre路径就ok了。
 

JDK,JRE,JVM三者关系概括如下:

jdk是JAVA程序开发时用的开发工具包,其内部也有JRE运行环境JRE。JRE是JAVA程序运行时需要的运行环境,就是说如果你光是运行JAVA程序而不是去搞开发的话,只安装JRE就能运行已经存在的JAVA程序了。JDk、JRE内部都包含JAVA虚拟机JVM,JAVA虚拟机内部包含许多应用程序的类的解释器和类加载器等等。



Tags:JVM   点击:()  评论:()
声明:本站部分内容来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
篇文章将重点分析jvm,涉及到的内容包括jvm内存模型,类加载器,GC回收算法,GC回收器,整体偏向于理论。本篇文章不适合初学者,适合具有3年以上开发经验的技术人员,欢迎大家一起交流分...【详细内容】
2020-07-06   JVM  点击:(0)  评论:(0)  加入收藏
前言 -XX:+PrintFlagsFinal打印参数值当你在网上兴冲冲找到一个可优化的参数时,先打印看看,它可能已经默认打开了,再找到一个,还是默认打开了...JDK7与JDK8,甚至JDK7中的不同小版...【详细内容】
2020-06-26   JVM  点击:(0)  评论:(0)  加入收藏
jps :基础工具查看JAVA进程PID。jps 命令用来查看所有 Java 进程,每一行就是一个 Java 进程信息。jps 仅查找当前用户的 Java 进程,而不是当前系统中的所有进程,要显示其他用...【详细内容】
2020-05-25   JVM  点击:(2)  评论:(0)  加入收藏
概述在这篇文章中,我们将一起看一下,一些常见的Java虚拟机的参数配置。堆内存 - Xms 和 Xmx配置堆内存配置,可以说是应用程序中,最常见的提升性能的参数配置。这就是为什么我们...【详细内容】
2020-05-21   JVM  点击:(3)  评论:(0)  加入收藏
Java与C++之间有一堆由内存动态分配与垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。 —— 《深入理解Java虚拟机:JVM高级特性与最佳实践》...【详细内容】
2020-05-12   JVM  点击:(2)  评论:(0)  加入收藏
异常堆栈丢失今天登陆服务器进行例行的检查,发现异常日志文件里有很多nullPointException,只有简单的异常名称,却没有堆栈信息。没有异常堆栈,无法定位错误,也就不能修改了。到...【详细内容】
2020-04-18   JVM  点击:(10)  评论:(0)  加入收藏
大家都知道程序员涨薪主要还是要靠跳槽来完成!但是我们都知道,无论是考试,还是求职,这个难度,参加人数是影响难度的一个很大因数(当然特别牛逼的大佬可以忽略这句话)。每年高考、考...【详细内容】
2020-03-16   JVM  点击:(12)  评论:(0)  加入收藏
JVM有两种运行模式Server与Client。两种模式的区别在于,Client模式启动速度较快,Server模式启动较慢;但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很...【详细内容】
2020-03-14   JVM  点击:(13)  评论:(0)  加入收藏
什么是JVM这个大家都应该很熟悉了吧,JVM不就是虚拟机吗?Java虚拟机本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。JVM可以说离我们既熟...【详细内容】
2020-03-12   JVM  点击:(18)  评论:(0)  加入收藏
注:源代码就是.java文件,JVM字节码就是.class文件1. Java 堆(Java Heap): (1)是Java虚拟机所管理的内存中最大的一块。 (2)在虚拟机启动的时候创建。堆是jvm所有线程共享的。 (3)唯一...【详细内容】
2020-01-04   JVM  点击:(4)  评论:(0)  加入收藏
我们重点关注 JVM在运行时的数据区,你可以看到在程序运行时,大致有5个部分。...【详细内容】
2019-12-12   JVM  点击:(31)  评论:(0)  加入收藏
什么是JVM虚拟机JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的...【详细内容】
2019-12-05   JVM  点击:(24)  评论:(0)  加入收藏
摘要已经使用了一段时间的Java,期间也了解和用过一些JVM(Java Virtual Machine)参数,但是没有仔细去整理过每个参数代表的意义,为此整理成文。Java使用方式java [options] clas...【详细内容】
2019-11-12   JVM  点击:(84)  评论:(0)  加入收藏
1. Java 堆空间发生频率:5颗星造成原因 无法在 Java 堆中分配对象 吞吐量增加 应用程序无意中保存了对象引用,对象无法被 GC 回收 应用程序过度使用 finalizer。finalizer 对...【详细内容】
2019-10-22   JVM  点击:(36)  评论:(0)  加入收藏
00 前言Java程序具有 " Write Once , Run Anywhere ." 的跨平台特性。实现这样的目的,Java的方案是:半编译 + 半解释,即 .Class + JVM 。 1、源程序内容会被编译为.Class文件,.C...【详细内容】
2019-10-15   JVM  点击:(13)  评论:(0)  加入收藏
Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Jav...【详细内容】
2019-10-15   JVM  点击:(32)  评论:(0)  加入收藏
【1】JDK、JRE、JVM区别与联系JVM :英文名称(Java Virtual Machine),就是我们耳熟能详的 Java 虚拟机。它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进...【详细内容】
2019-09-24   JVM  点击:(22)  评论:(0)  加入收藏
每个Java开发人员都知道字节码将由 JRE (Java运行时环境)执行。但是很多人不知道JRE是 Java Virtual Machine (JVM)的实现,它分析字节码、解释代码并执行代码。作为开发者,了...【详细内容】
2019-09-05   JVM  点击:(40)  评论:(0)  加入收藏
JVM :JVM是Java Virtual Machine(Java虚拟机)的缩写,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是...【详细内容】
2019-09-04   JVM  点击:(32)  评论:(0)  加入收藏
我们的监控系统是zabbix,最近刚做完jvm还有tomcat的监控,需要吐槽以下内容:...【详细内容】
2019-09-02   JVM  点击:(105)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条