首页天道酬勤只有jre没有jdk(jvm jdk jre)

只有jre没有jdk(jvm jdk jre)

admin 12-04 07:01 323次浏览

大多数人在第一次接触java的时候会经常看到JDK、JRE和JVM,但是他们可能会一直困惑,不知道它们的真正功能和意义。了解什么是JDK、JRE和JVM以及它们之间的关系将有助于我们对Java语言的特性有更深的理解。

Java程序运行在JVM(Java虚拟机)上。在开发程序之前,应该配置Java开发环境,配置环境应该是JDK的安装配置。

三者的大致结构如下。简单来说,JDK包含了JRE,而JRE包含了JVM的关系。如下图所示:

00-1010 JDK: Java开发工具包是Java的标准开发工具包(hpdxh只需要安装JRE就可以运行Java程序。并且程序开发者必须安装JDK来编译和调试程序)。它提供了编译和运行Java程序所需的各种工具和资源,包括Java编译器、Java运行环境JRE,以及常用的JAVA基本类库等。它是整个Java的核心。

JDK一般有三个版本:

SE(J2SE),标准版,标准版,是我们常用的一个版本,EE (J2EE),企业版,企业版。利用这个JDK开发J2EE应用,ME (J2ME),Microedit,主要用于移动设备和嵌入式设备上的java应用(现在相对很少使用)

详细介绍JDK安装目录下的各个子文件目录和文档功能

下图显示了Java8中JDK的安装目录。

暴躁发夹文件包含JDK的各种开发工具的可执行文件,主要是编译器(javac.exe)

Db文件是一个基于Java技术的高级数据库,具有完整的事务处理(使用jdk自己的数据库db)

include文件包含用于Java和jvm交互的头文件。

Jre是java运行环境。

lib文件存储JDK工具命令的实际执行程序。

00-1010 JRE:Java Runtime Environment是运行基于Java语言编写的程序不可缺少的运行环境,用于解释执行Java的字节码文件。

也正是通过它,Java开发人员可以将自己的程序发布给用户使用。JRE包括Java虚拟机(JVM)、运行时类库和Java应用启动器,它们是运行Java程序的必要组件。与众所周知的JDK不同,JRE是一个Java运行环境,不是开发环境,所以不包含任何开发工具(比如编译器和调试器),只针对使用Java程序的用户。

下图是Java8中JRE的安装目录,包含两个文件夹:暴躁发夹和lib。你可以认为暴躁的发夹是JVM,而lib是JVM工作所需的类库,JVM和lib合起来叫做JRE。

由于JDK11,JDK和JRE在一起,安装后默认没有JRE。如果您需要JRE作为一个单独的目录,您可以在JDK目录下打开一个命令窗口,然后执行以下命令(win10需要目录权限来执行这个JRE生成):

暴躁发夹\ jlink . exe-module-path jmods-add-modules Java . desktop-output JRE

JRE会在执行后生成,但是不管你用tomcat还是eclipse,没有JRE文件夹实际上不会影响你的使用。

00-1010 JVM: Java虚拟机是Java的虚拟机,是JRE的一部分。它是整个java跨平台实现的核心部分,负责解释和执行字节码文件,是一台可以运行java字节码文件的虚拟计算机。

所有平台上的JVM都为编译器提供了相同的接口,而编译器只需要面向虚拟机,生成虚拟机可以识别的代码,然后由虚拟机进行解释和执行。

JDK简单介绍

pgc-h-arrow-right">Java跨平台的原因

使用Java编译器编译Java程序时,生成的是与平台无关的字节码,这些字节码只面向JVM。不同平台的JVM都是不同的,但它们都提供了相同的接口。

JVM是Java程序跨平台的最核心的部分,只要为不同平台实现了相应的虚拟机,编译后的Java字节码就可以在该平台上运行。其屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

正是因为有了JVM的存在,Java才实现了强大的跨平台特性。

jvm执行程序的过程

1、加载.class 文件

所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。只有JVM还不能成功执行.class的类文件,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库。

运行class文件

可以在命令行中输入 java 字节码文件名 ,此时启动了一个jvm,加载字节码文件名.class字节码文件到内存,然后jvm运行内存中的字节码指令

在IDE上就类似于点击运行按钮。

2、管理并分配内存

3、执行垃圾收集调用垃圾收集器进行垃圾回收

三者的区别与联系

JDK用于开发,是给开发人员用的,JRE 用于运行java程序,和JVM是给hpdxh使用的。如果只是运行Java程序,可以只安装JRE,无序安装JDK。也就是说:使用JDK开发完成的java程序,交给JRE去运行。

JDK包含了JRE,JDK 和 JRE 中都包含 JVM。也可以说JDK是JRE+Java的开发工具。JRE包含了JVM+Java语言的核心类库。
v-for和v-if的优先级哪个更高FAQs 云内存 UMem RedisIOS开发UITextView回收或关闭键盘解决CodeIgniter伪静态失效特性 云主机 UHost
() ()
相关内容