2-JVM、JRE、JDK的作用及联系和区别

news2024/11/17 9:51:16

在Java环境配置和项目启动中,这三者的配置是项目启动的基础保证。

JVM(Java Virtual Machine),Java虚拟机,就是一个虚拟的用于解析bytecode字节码的”虚拟计算机”。一般与OS操作系统打交道。是整个java实现跨平台的最核心的部分【使用Java编译器编译Java程序时,生成的是与平台无关的字节码,这些字节码只面向JVM。不同平台的JVM都是不同的,但它们都提供了相同的接口。只要为不同平台实现了相应的虚拟机,编译后的Java字节码就可以在该平台上运行。其屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行】。

JRE(Java Runtime Environment),Java运行环境,用于运行Java的字节码文件,包含Java虚拟机、库函数、运行Java应用程序所必须的文件。

JDK(Java Development Kit),Java开发工具包,包含JRE,以及增加编译器和调试器等用于程序开发的文件。是整个JAVA的核心。

联系:

JVM不能单独搞定.class的执行,解释.class的时候JVM需要调用解释所需要的类库lib。在JDK下面的JRE目录里面有两个文件夹bin和lib,在这里可以认为bin就是JVM,lib中则是JVM工作所需要的类库,JVM+lib=JRE。总体来说,就是我们利用JDK(调用Java Api)开发了属于我们自己的Java程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成Java字节码,在JRE上运行这些java字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

区别:

JDK和JRE区别

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

在bin文件夹目录下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将.java文件编译成.class文件的,这是开发者需要的,而用户(运行程序的人)是不需要的。JDK还有jar.exe,javadoc.exe等用于开发的可执行指令文件。这也证实了一个是开发环境,一个是运行环境。

JRE和JVM区别

JVM并不代表就可以执行.class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。

三者之间的关系:

JDK包含了JRE,JDK和JRE都包含了JVM。也可以说JDK是JRE+Java的开发工具。JRE包含了JVM+Java语言的核心类库。

  • JDK: javac,jar,debugging,tools,javap
  • JRE:java,javaw,libraries,rt_jar
  • JVM:just in Time Compiler(JIT)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/186830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GlobalPointer:用统一的方式处理嵌套和非嵌套NER

本文将介绍一个称为GlobalPointer的设计,它利用全局归一化的思路来进行命名实体识别(NER),可以无差别地识别嵌套实体和非嵌套实体,在非嵌套(Flat NER)的情形下它能取得媲美CRF的效果&#xff0c…

大数据专业前景怎么样?

大数据专业毕业生未来的岗位选择空间比较大,有三大类岗位可选择分别是大数据开发岗位、大数据分析岗位和大数据运维岗位,在不同的行业和技术体系结构下这些岗位也包含很多细分的岗位。 大数据开发岗位分为平台研发岗位和行业场景开发岗位两大类&#xf…

latex自己记录需要的

参考:LaTeX 公式篇 推荐网站:LaTeX公式编辑器,有模板 换行 $$ \begin{array}{c} 1\\ 2\\ 3\\ \end{array} $$123\begin{array}{c} 1\\ 2\\ 3\\ \end{array} 123​ 公式拆分 $$ \begin{split} 123 & 33 \\ &6 \end{split} $$123336\begin{split}…

找工作不用愁,送你一份Salesforce面试秘籍!

在之前的文章中,自由侠部落为学习者梳理了Salesforce架构师的面试秘籍,将其拆解为了3个方面——分享工作经验、展示技术知识以及证明领导能力,上篇文章已经展示了工作经验部分,接下来将继续分享面试秘籍,帮助求职者顺利…

linux内核之netlink通信

Linux内核(04)之netlink通信 Author:Onceday Date:2023年1月3日 漫漫长路,才刚刚开始… 参考文档: netlink 机制 binarydady 阿里云开发者社区linux中通用Netlink详解及使用剖析 binarydady 阿里云开发者社区RFC 3549 Linux N…

测试员最不愿遇到的18个测试问题,怎么解决?

测试员最不愿遇到的18个测试问题,怎么解决? 目录:导读 测试员最不愿遇到的18个测试问题,怎么解决? 一 测试充分度(Test Sufficiency) 二 测试有效性(Test Effectiveness&#x…

人大金仓数据库-表的定义

表的定义 使用子查询来创建表 通过复制student表创建student_m表,只复制原表中的部分数据到新表 通过复制course表创建course01表,复制原表中的全部数据到新表 使用LIKE语法来创建表 非空约束会默认复制到新表中 create table t03(LIKE t02 INCLUDING…

设计循环队列

前言:队列中有一种特殊的存在——环形队列,其有一定的价值与意义,这篇文章主要由一道与其相关的例题来引出相关的知识内容。 注:下述解题过程是用C语言实现。 目录 一:题目简述 二:环形队列的简单介绍 …

什么是Docker?看这一篇干货文章就够了!

什么是Docker容器技术的起源容器技术 vs 虚拟机什么是容器什么是docker如何使用dockerdocker是如何工作的docker的底层实现总结作为程序员我们应怎样理解docker? 容器技术的起源 假设你们公司正在秘密研发下一个“今日头条”APP,我们姑且称为明日头条&…

ORB-SLAM3算法和代码学习——重定位Relocalization

0总述 重定位是ORB-SLAM系列保持跟踪稳定性的保障,从ORB-SLAM沿用至ORB-SLAM3。主要作用是在跟踪失败时,通过词袋向量搜索在关键帧数据库中寻找和当前帧相似的关键帧作为匹配帧,建立数据关联并计算当前帧的位姿,恢复相机的运动。…

正大国际期货:外盘短线交易九大生存准则:从亏损预期出发

一、生存是第一位 这并不是陈词滥调,投机是非常危险的活动。投机非并输赢那样简单,首要的任务是在顶峰和谷底之间的波动中生存,如果连生存都做不到,你根本就没有谈及赢的资格。 即使有了好的资金管理、正确的系统和行动的前提&a…

Ubuntu18.04下安装配置AndroidStudio软件图文教程

运行环境:操作系统为Ubuntu18.04,android-studio版本为2022.1.1.19-linux,Java版本为jdk8,安装路径/opt/android-studio/,当前用户为xqf222,sdk下载路径默认为/home/xqf222/Android/Sdk 详细步骤和指令如下: 1.安装JDK8&#xf…

VTK CT重建(一) MPR 多层面重建 四视图

除了MPR之外,在CT重建后处理中还有很多别的常用方法,包括 多层面重建(MPR)最大密度投影(MIP)最小密度投影(MinIP)表面阴影遮盖(SSD)容积漫游技术&#xff08…

go validator参数校验器自定义规则及提示(自定义异常返回提示语)

原文连接:https://segmentfault.com/a/1190000040445612 笔者针对参数为指针的情况做了一点小优化 这里我们用validator用来做参数校验,gin默认的github.com/go-playground/validator,可以直接使用 除此之外还有一些其他的工具也挺好用的&am…

Linux基础指令

本文已收录至《Linux知识与编程》专栏!作者:ARMCSKGT演示环境:CentOS 7 目录 前言 正文 查看当前用户whoami 查看当前目录路径pwd 清理屏幕clear 查看目录下文件指令ls 进入目录指令cd 以树状结构显示目录文件tree 创建普通文件指令t…

Leetcode.1669 合并两个链表

题目链接 Leetcode.1669 合并两个链表 Rating : 1428 题目描述 给你两个链表 list1和 list2,它们包含的元素分别为 n个和 m个。 请你将 list1中下标从 a到 b的全部节点都删除,并将list2接在被删除节点的位置。 示例 1: 输入:li…

rtsp实时流通过rtmp推送到服务端

ffmpeg可以实现这个功能。ffmpeg支持rtsp协议,也支持rtmp。在这个案例中rtsp是输入, rtmp是输出,ffmpeg实现了转码的功能。下面可出一个整体思路流程图。 如图1所示:在获取都rtsp流以后,解复用(demux&…

检测之VOC转YOLO

文章目录检测所用数据有几种文件格式,我们对于检测,将使用VOC格式做为基础,与其它格式的的互转实现部分如下:检测系列相关文章参考如下链接: VOC数据的结构介绍及自定义生成,用labelimg自已标注VOC标准数据…

Notepad++作死,国产文本编辑器Notepad--发布

作死的Notepad Notepad 和 Notepad 都是基于 Windows 的文本编辑器,通常用于编写和编辑纯文本文件。 这两个应用程序都是简单的轻量级程序,提供基本的文本编辑功能。 Notepad是一口君经常使用的一款文本编辑软件,用了大概10年了。 然而Not…

配置并行(RH294)

当Ansible处理playbook的时候会顺序运行每个play确定play的主机列表之后Ansible将按顺序运行每个任务一般来说,所有主机必须在任何主机在play中启动下一个任务之前成功完成任务理论上,Ansible可以同时连接到play中的所有主机来执行每项任务Ansible所进行…