java运行环境(jre)_什么是JRE? Java运行时环境简介

java运行环境(jre)

Java开发工具包(JDK),Java虚拟机(JVM)和Java运行时环境(JRE)共同形成了强大的Java平台组件三部曲,用于开发和运行Java应用程序。 我之前已经介绍了JDKJVM。 在本快速教程中,您将学习JRE,它是Java的运行时环境。

实际上, 运行时环境是一种旨在运行其他软件的软件。 作为Java的运行时环境,JRE包含Java类库,Java类加载器和Java虚拟机。 在此系统中:

  • 类加载器负责正确加载类并将它们与核心Java类库连接。
  • JVM负责确保Java应用程序具有在设备或云环境中运行和良好运行所需的资源。
  • JRE主要是那些其他组件的容器,并负责协调它们的活动。

在以下各节中,我们将更深入地研究这些组件如何协同工作。

安装JDK,JRE和JVM

从安装角度来看,无论何时下载JDK ,它都将包含一个版本兼容的JRE,并且该JRE将包含一个默认的JVM。 您还可以从JDK单独下载JRE,并且可以从各种JVM中进行选择。 默认值在大多数实现中都能很好地工作,特别是在您开始使用Java时。

什么是运行时环境?

软件程序需要执行,并且为此需要运行环境。运行时环境将加载类文件,并确保可以访问内存和其他系统资源来运行它们。 过去,大多数软件都使用操作系统(OS)作为其运行时环境。 该程序可以在所用的任何计算机上运行,​​但都依赖于操作系统设置来进行资源访问。 在这种情况下,资源将是诸如内存和程序文件以及相关性之类的东西。 Java Runtime Environment改变了所有这些,至少对于Java程序而言。

WORA for Java

最初引入Java时,Java的“编写一次,随处运行”的原则被认为具有革命性,但如今,它已被大多数软件系统采用。

Java运行时环境

我们可以将软件视为位于系统硬件之上的一系列层次。 每一层都将提供其上一层将使用(和要求)的服务。 Java运行时环境是在计算机操作系统之上运行的软件层,提供特定于Java的附加服务。

JRE简化了操作系统的多样性,确保Java程序几乎可以在任何操作系统上运行而无需修改。 它还提供增值服务。 自动内存管理是JRE最重要的服务之一,可确保程序员不必手动控制内存的分配和重新分配。

简而言之,JRE是一种用于Java程序的元OS。 这是一个抽象的经典示例,将底层操作系统抽象到运行Java应用程序的一致平台中。

JRE如何与JVM配合使用

Java虚拟机是运行中的软件系统,负责执行实时Java程序。 JRE是磁盘上的系统,它使用Java代码,将其与必要的库组合在一起,然后启动JVM来执行它。

JRE包含Java程序需要运行的库和软件。 例如, Java类加载器是Java运行时环境的一部分。 这个重要的软件将编译后的Java代码加载到内存中,并将代码连接到适当的Java类库。

在我刚刚描述的分层视图中,JVM是由JRE创建的。 从包的角度来看,JRE包含JVM,如图1所示。

jw whatisjre图1 马修·泰森(Matthew Tyson)

图1.分层的架构视图显示JRE包含JVM,类加载器和Java类库

安装和使用JRE

JRE有一个概念方面,在实际操作中,它只是安装在计算机上的软件,其目的是运行Java程序。 作为开发人员,您将主要使用JDK和JVM,因为它们是用于开发和运行Java程序的平台组件。 作为Java应用程序用户,您将更多地参与JRE,它使您可以运行那些程序。

在大多数情况下,您的计算机将安装Java,并且JRE将包含在其中。 如果确实需要手动安装或升级,则可以从Oracle 下载当前的JRE版本

JRE版本

Java运行时环境针对Java的每个新版本进行了更新,并且其版本号与Java平台版本控制系统保持一致,因此,例如JRE 1.8运行Java8。尽管您可以选择各种JDK软件包(例如Enterprise Edition)或标准版),而JRE并非如此。 大多数计算机都运行针对Java SE开发的JRE,该JRE能够运行任何Java应用程序,而不管其开发方式如何。 大多数移动设备都随附有用于Java ME的JRE,该JRE已预先安装在移动设备上,无法下载。

安装JRE后,您可以在命令行上输入java -version与之交互,这将告诉您所安装的版本。 在POSIX系统上,您始终可以检查which java的安装位置。

devops中的JRE

JRE在开发阶段并不是很引人注目,在J阶段,它仅在您选择的OS或IDE中运行程序。 JRE在开发和系统管理中扮演着更为重要的角色,因为它用于监视和配置。

基本上,JRE提供了用于配置和控制Java应用程序特征的“旋钮”。 内存使用是一个很好的例子,它是系统管理的基础。 尽管内存使用始终很重要,但它在云配置中至关重要,而devops是基于云的技术。 如果您在devops环境中工作,或者对分支到devops感兴趣,那么最好了解Java内存的工作方式以及如何在JRE中对其进行监视。

Devops还是sysadmin?

Devops是一个新术语,但它描述了几十年来一直存在的事实,即开发与运营之间的互操作性。 从这个意义上讲, devops只是过去称为操作或系统管理的较新术语。 像sysadmin一样,devops的重要方面是管理执行软件所必需的系统。 管理JRE是管理运行Java应用程序的系统的一部分。

Java内存和JRE

Java内存由三个组件组成:堆,堆栈和元空间(以前称为permgen)。

  • 元空间是Java保持程序不变信息(例如类定义)的地方。
  • 堆空间是Java保留变量内容的地方。
  • 堆栈空间是Java存储函数执行和变量引用的地方。

Java 8中的内存管理

在Java 8之前,元空间被称为permgen。 除了名称更酷之外,元空间是开发人员与Java内存空间交互方式的重大变化。 以前,您将使用命令java -XX:MaxPermSize监视permgen空间的大小。 从Java 8开始,Java会自动增加元空间的大小,以适应程序的元需求。 Java 8还引入了一个新标志MaxMetaspaceSize ,该标志可用于限制元空间的大小。

其他内存选项(堆和栈)在Java 8中保持不变。

配置堆空间

堆空间是Java内存系统中最动态的部分。 您可以使用-Xms-Xmx标志来告诉Java启动堆的大小以及允许堆大小的大小。 了解如何针对特定程序需求调整这些标志是Java内存管理的重要方面。 理想的做法是使堆足够大,以实现最有效的垃圾收集。 也就是说,您想要允许足够的内存来让程序运行,但是您不希望它的大小超出必要。

配置堆栈空间

堆栈空间是函数调用和变量引用排队的地方。 堆栈空间是Java编程中第二臭名昭著的错误的根源:堆栈溢出异常(第一个是空指针异常)。 堆栈溢出异常表示您已用完堆栈空间,因为已预留了太多空间。 通常,当一个或多个方法以循环方式相互调用时,您会得到堆栈溢出,从而将越来越多的函数调用投入到堆栈中。

您可以使用-Xss开关来配置堆栈起始大小。 然后,堆栈会根据程序的需要动态增长。

Java应用程序监控

尽管应用程序监视是JVM的功能,但是JRE提供了配置选项,这是监视的必要基准。 从经典工具(例如Unix command top )到复杂的远程监视解决方案(例如Oracle的基础架构监视),可以使用多种工具来监视Java应用程序。

在这些选项之间是可视分析器,例如VisualVM ,可用于检查正在运行的JVM。 这些工具使您能够跟踪热点和内存泄漏,以及查看系统中的整体内存消耗。

结论

Java运行时环境是一种磁盘程序,它加载Java应用程序以使JVM执行。 下载Java开发工具包时,默认情况下会包含JRE,并且每个JRE都包含核心Java类库,Java类加载器和Java虚拟机。 了解JVM,JDK和JRE的交互方式非常有帮助,特别是在云和devops环境中工作时。 在这些环境中,与传统的Java应用程序开发相比,JRE在监视和配置中扮演着更重要的角色。

这个故事“什么是JRE?Java运行时环境简介”最初由JavaWorld发布。

翻译自: https://www.infoworld.com/article/3304858/what-is-the-jre-introduction-to-the-java-runtime-environment.html

java运行环境(jre)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值