jvm优化_Java中JVM,JIR,JRE和JDK之间的区别
jvm优化
JRE,JVM和JDK是您经常与Java编程语言结合使用的三个术语,大多数人会混淆它们或认为它们都是相同的。 在本文中,您将了解什么是Java运行时(JRE),什么是Java虚拟机(JVM),什么是Java开发工具包(JDK)以及即时编译器或JIT。 一旦了解了JRE,JVM或JDK意味着什么,就可以轻松地自己区分它们。 本文是每个Java程序员都应该知道的Essential JVM选项的延续。 如果您还没有阅读这些文章,则也可以阅读它们。
现在,让我们详细了解所有JRE(Java运行时环境),JVM(Java虚拟机)和JDK(Java开发工具包),以了解它们之间的区别。
1. Java运行时环境(JRE)
Java在浏览器,移动设备,电视或机顶盒中无处不在,如果您使用Java编程语言,那么您会知道捆绑在JAR(Java归档)文件中的Java代码需要Java虚拟机JVM才能执行。执行它。
现在, JVM是一个可执行文件或程序,与任何其他程序一样,您可以将其安装到计算机中。 您已经看到浏览器经常建议下载JRE运行从Internet下载的Java Applet。
java.oracle.com中提供了各种版本的JRE,并且大多数只想在浏览器中执行Java程序或独立下载JRE的用户。 所有浏览器(包括Internet Explorer,Firefox和Chrome)都可以使用JRE。
2. Java虚拟机(JVM)
当您下载JRE并在您的计算机上安装时,您已获得创建JVM所需的所有代码。 使用诸如Java HelloWorld之类的Java命令运行Java程序时,将创建Java虚拟机。
JVM负责将字节码转换为特定于机器的代码,这就是为什么您为Windows,Linux或Solaris使用不同的JVM,但是在所有这些操作系统上都可以运行一个JAR的原因。
Java虚拟机是Java编程语言的核心,并为Java程序员提供了一些功能,包括内存管理和垃圾收集,安全性以及其他系统级服务。
可以自定义Java虚拟机,就像我们可以在创建JVM时指定位于JVM内部的启动内存或堆大小的最大内存一样。
如果我们为java命令提供了无效的参数,它可能会拒绝创建Java虚拟机,方法是说“创建Java虚拟机失败:无效参数”。
这是Java程序员用来学习更多有关JVM,性能和内存管理(包括解决Java中的内存泄漏问题)的高级课程之一。
3. Java开发套件(JDK)
JDK也被简称为JRE,但它比JRE更为重要,它提供了编译和执行Java程序所需的所有工具和可执行文件。 就像JRE一样,JDK也是特定于平台的,您需要使用单独的安装程序才能在Linux和Windows上安装JDK 。
JDK的当前版本是1.7,也称为Java7,它包含基于Java7和Java编程规则的javac(Java编译器),可以使用新功能(例如Switch中的String , fork-join框架或Automatic Resource)执行Java7代码。管理。
安装JDK时,安装文件夹通常称为JAVA_HOME。 所有二进制文件都位于JAVA_HOME / bin内,其中包括javac,java和其他二进制文件,并且它们必须位于系统PATH中才能编译和执行Java程序。 有关Path的详细信息,请参见 如何在Windows和UNIX中为Java设置PATH 。
4. JRE,JDK和JVM之间的区别
简而言之,JRE,JDK和JVM之间几乎没有什么区别:
1)JRE和JDK作为安装程序提供,而JVM与它们捆绑在一起。
2)JRE仅包含执行Java程序的环境,但不包含其他用于编译Java程序的工具。
3)JVM随JDK和JRE一起提供,并在执行Java程序时通过提供“ java”命令创建。
4.即时编译器(JIT)
最初,Java被指控性能低下,因为它既编译又解释指令。 由于编译或Java文件到类文件是独立于Java程序的执行的,请勿混淆。
这里,编译字用于字节码到机器指令的翻译。 JIT是Java虚拟机的高级部分,它通过同时编译相似的字节码来优化字节码到机器指令转换部分,从而减少了总体执行时间。
JIT是Java虚拟机的一部分,还执行其他一些优化,例如内联函数。
所有这些都在JRE,JDK和Java虚拟机上,并且它们之间是有区别的。 尽管它们看起来很相似,但是它们是不同的,并且对JVM,JIT或JDK有清晰的了解有助于Java编程。
您可能喜欢的其他JVM内部文章
- Java中的堆栈和堆内存之间的区别? ( 回答)
- 生产应用程序的10个基本JVM选项( 文章)
- 深入学习JVM内部知识的前5门课程( 课程)
- 了解Java内存管理和GC的前5本书? ( 书籍)
- 垃圾回收如何在Java中工作? ( 文章)
- 32位和64位JVM之间的区别? ( 回答)
- 关于Java堆内存的10分? ( 文章)
- -XX:UseCompressedOOPS在64位JVM中做什么? ( 文章)
- 您如何找到Java应用程序的CPU和内存使用情况? ( 文章)
- 在JVM中加载或初始化类时? ( 文章)
- Classloader如何在Java中工作? ( 文章)
- 学习性能的前五门高级Java课程? ( 课程)
感谢您到目前为止阅读本文。 如果您发现此JRE,JVM和JDK文章有用,请与您的朋友和同事分享。 如果您有任何疑问或反馈,请留言。
翻译自: https://www.javacodegeeks.com/2020/08/difference-between-jvm-jir-jre-and-jdk-in-java.html
jvm优化
jvm优化_Java中JVM,JIR,JRE和JDK之间的区别相关推荐
- java 静态变量和非静态_Java中静态和非静态变量之间的区别
变量为我们提供了程序可以操纵的命名存储.Java中的每个变量都有一个特定的类型,该类型确定变量的内存大小和布局.可以存储在该内存中的值的范围:以及可以应用于该变量的一组操作. 静态变量 静态变量也称为 ...
- java jli.dll_JVM、JRE、JDK之间的区别和联系,你居然还不知道?
JDK包含了JRE,JRE包含了JVMJDK:java开发工具包,针对java开发人员,可以编译运行java程序 JRE:java运行时环境,针对使用java程序的客户,可以运行字节码(.class) ...
- SQL Server中唯一索引和唯一约束之间的区别
This article gives you an overview of Unique Constraints in SQL and also the Unique SQL Server index ...
- JRE和JDK有什么区别,我们为什么使用JDK?
1.1.2. JRE和JDK有什么区别,我们为什么使用JDK? 1.1.3. 如何配置并修改环境变量.环境变量有什么用? 1.1.4. 系统环境变量和用户环境变量有 ...
- IO多路复用中select、poll、epoll之间的区别
本文来说下IO多路复用中select.poll.epoll之间的区别 文章目录 什么是IO多路复用 为什么有IO多路复用机制 同步阻塞(BIO) 同步非阻塞(NIO) IO多路复用(现在的做法) 3种 ...
- 解析java中方法的重载和重写之间的区别与联系
解析java中方法的重载和重写之间的区别与联系 1 不同点 1.1 方法重写是在不同的类中(父子类),方法重载是在同一类中 1.2 方法重载最初的目的是构造方法的多样化,方法重写的目的是让重写的方法满 ...
- java虚拟机参数优化_JAVA虚拟机JVM参数优化(2):垃圾收集算法选择
JAVA虚拟机JVM优化重要性,昨天JAVA虚拟机JVM参数优化(1)文章中已经描述,今天我们来讨论JAVA虚拟机在不同性能要求下如何选择三种垃圾收集算法. JVM内部结构如下图所示: 串行收集用于单 ...
- jvm优化_在JVM中记录世界停顿
jvm优化 不同的事件可能导致JVM暂停所有应用程序线程. 这种暂停称为世界停止(STW)暂停. 触发STW暂停的最常见原因是垃圾回收( 例如github中的示例),但是不同的JIT操作( 示例),偏 ...
- java中的vm自变量_java中JVM虚拟机内存模型详细说明
java中JVM虚拟机内存模型详细说明 JVM的内部结构如下图: 一个优秀Java程序员,必须了解Java内存模型.GC工作原理,以及如何优化GC的性能.与GC进行有限的交互,有一些应用程序对性能要求 ...
最新文章
- Android LayoutInflater 源码解析
- HttpWatch截取网页数据的工具以及介绍
- UML图系列——UML概要
- ActiveMQ安装笔记
- IOS6 新特性之UIRefreshControl
- python函数定义参数类型和返回值类型
- 俺也用一下mandriva,恩,KDE的效果的确不错
- Cassandra Wiki Login JmxSecurity
- android声音播放mp3文件,如何在android中播放音频文件
- Java从入门到精通章节练习题——第三章
- 【Auto.js教程】Auto.js入门及第一个示例程序
- svn提示commit:remains in tree-conflict的解决方法
- Python爬虫笔记【一】模拟用户访问之验证码清理(4)
- 利用SQL查询扶贫对象医保报销比率的审计方法
- 关于uIP的移植以及部分特性解析和勘误
- 如何让ffplay或者ffmpeg支持H265编码的rtmp/http-flv 实时直播流
- UI设计必备工具有哪些?
- 环签名——典型的数字签名技术
- networkx_to_metis
- 微信小程序:组件Component接收不到参数id