Java理清JDK、JRE、JVM之间什么关系?如何做到一次编译到处执行的?

news2024/11/16 5:33:17

在理解Java基础知识或者有一定编程基础后,看此文章会深有体会。

JDK、JRE、JVM之间什么关系

包含关系
在这里插入图片描述
开发环境(jdk),执行环境(jre)

源程序通过Javac编译成字节码文件

这个字节码文件是可以被各个操作系统通用的文件
在这里插入图片描述

如何做到一次编译到处执行的?

1.首先明白java代码是通过独立于操作系统运行的,如何独立的?

通俗讲:
JAVA提供了各种不同操作系统上的虚拟机(JVM)制。所以能够实现“到处”。
通过JRE提供给虚拟机类库和相关资源,然后虚拟机与操作系统之间进行交互。
如何交互?通过将java的字节码文件翻译成对应操作系统的机器语言交互。
在这里插入图片描述

2.Java代码编译成字节码文件成通用文件的高明之处?

代码以字节为一个单位的形式存储,无论什么操作平台他们都能认识字节码文件,不同的操作系统或者环境根据字节码文件翻译成对应平台的机器码实现交互。

JVM虚拟机与操作系统关系

jvm 就是虚拟的计算机,假的仿真环境
在这里插入图片描述
应用程序如何在操作系统运行?虚拟机与操作系统之间交互
在这里插入图片描述
Java虚拟机采用基于栈的架构,其指令由操作码和操作数组成。这些字节码指令,就叫作opcode,
当使用Java命令运行.class文件,相当于启动了一个JVM进程。JVM会翻译这些字节码,它有两种执行方式。其一常见的就是解释执行边执行边解释,将opcode+操作数翻译成机器代码;第二种执行方式就是JIT,我们常说的即时编译,它会在一定条件下将字节码编译成机器码之后再执行。

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

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

相关文章

【Nginx】在Linux上如何安装Nginx教程+Nginx基本命令的使用

目录1. Nginx下载2. 系统准备3. Nginx安装3.1 安装方式3.2 依赖准备1)GCC编译器2)PCRE3)zlib4)OpenSSL3.3 源码下载3.4 解压编译3.5 Nginx目录结构3.6 配置环境变量4. Nginx基本命令4.1 检查配置文件的正确性4.2 查看Nginx配置文件…

qt example plugandpaint 插件 动态库 pnp_extrafiltersd.dll无法加载问题

使用版本windows qt5.12.0vs2015编译器。 运行plugandpaint工程的时候发现pnp_extrafiltersd.dll在load的时候失败了,经过调试,发现qlibrary.cpp中的findPatternUnloaded()的qt_find_pattern()无法通过。(release 版的pnp_extrafilters.dll是…

Java基础深化和提高 ---- 网络编程

网络编程基本概念 计算机网络 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其 外部设备,通过通信线路连接起来,在网络操作系统,网络管理软 件及网络通信协议的管理和协调下,实现资源共享和信息传递的计 算机系统。 …

Linux系统下文件的压缩与打包

压缩和解压缩 压缩数据或者解压数据: 为什么要移出数据信息前面的 / 目录 -P --absolute-paths 不要从文件名中去除 /1 compress和uncompress 格式 compress Options [file ...]常用选项 -d 解压缩,相当于uncompress-c 结果输出至标准输出…

Spring 事务失效的场景

1、private、final、static 方法 被 Transactional 注解标注的方法的访问权限必须是 public; 被 Transactional 注解标注的方法不能被 final、static 修饰,被标注的方法必须是可覆盖的。这是因为事务底层使用的是 aop,而 aop 使用的是代理模…

嵌入式为何钟爱SourceInsight,主要因为这个功能~

已剪辑自: https://mp.weixin.qq.com/s/F-gafwbZswpnY8EaCz8HxQ 不管是玩单片机还是嵌入式linux,只要是与硬件结合比较紧密的部分目前基本上还是C语言,当然了,不知道以后C语言会不会被取代,即便哪天被某种更加优秀的语言取代&…

m基于matlab的MIMO信道容量分析,对比了不同天线数量;非码本预编码SVD,GMD;码本预编码DFT,TxAA以及空间分集

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 MIMO信道容量 平均功率分配的MIMO信道容量:通过Matlab仿真在加性高斯白噪声情况下的SISO (1*1)、SIMO(1*6)、MISO(4*1)、MIMO(3*3)、MIMO(4*4)系统的…

VMware Explore 2022 China,赋能中国企业加速实现云智能

全球领先的企业软件创新者VMware(NYSE: VMW)的年度技术盛会—— VMware Explore 2022 China于11月8日正式举行。本届大会以“探索多云宇宙”为主题,汇聚云计算领域的顶尖技术专家和创新者,通过150多场解决方案演讲、围绕云基础架构…

[附源码]Python计算机毕业设计超市团购平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

JuiceFS 使用效果及注意事项

以某线上集群为例,数据规模:每天写入 5TB,数据储存 30 天,热数据储存一周,节点数量:5 个热节点,15 个冷节点。 采用 JuiceFS 后,热节点保持不变,冷节点从 15 个降到了 1…

[b01lers2020]Life on Mars (难发现的sql注入)

[b01lers2020]Life on Mars 打开界面以后,查看各种都没有提示,果断扫描目录,但也是没获得什么。 到这里只能burp抓个包看看 抓包两个界面发现了get传参,考虑是否存在sql注入 尝试额以后发现只返回了一个1,试一下别的引…

Nginx显示500错误原因和解决方法

文章目录1.背景2.Nginx 常见的几种报错3. 解决500错误1.背景 最近在操作nginx 的时候出现了 Nginx 500 内部错误,在此记录一下原因,项目采用的是前后端分离方式,后端SpringBoot ,前端是Vue 部署到Nginx 下。 2.Nginx 常见的几种…

从水质监测运维工程师转行软件测试,武汉校区小哥哥除了收获10k高薪,还有...

从大学步入社会,每个人都会面临角色和身份的转变,大部分同学对此充满信心和期待,仿佛有用不完的精力、耗不尽的热情。可是社会中的磨砺也让心态慢慢变得成熟,生活、文化等方面的落差显现出来,想要做出改变,…

java项目-第151期ssm文物管理系统_java毕业设计_计算机毕业设计

java项目-第151期ssm文物管理系统_java毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm文物管理系统》 该项目分为2个角色,管理员、用户。 用户可以浏览前台文物信息、论坛交流、文物资讯、留言反馈。 管理员负责登录后台系统&#xff0c…

[附源码]java毕业设计校医院病人跟踪治疗信息管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

产品质量模型

产品质量模型将系统/软件产品质量属性划分为8个特征:功能性、性能效率、兼容性、易用性、可靠性、安全性、可维护性、可移植性,每个特征由一组相关子特征组成。 衡量一个优秀软件的维度: 产品质量模型只应用于软件产品,或者包含软…

从零开始做一款Unity3D游戏<三>——编写游戏机制

添加跳跃 了解枚举 使用层遮罩 发射投射物 实例化对象 管理游戏对象的创建 游戏管理器 维护玩家属性 get和set属性 精益求精 图形用户界面 胜败条件 使用预编译指定和命令空间 总结 前面一章,我们专注于通过代码来移动玩家和相机,同时了解了…

深入理解计算机系统——Midterm Exam 2012

深入理解计算机系统——Midterm Exam 2012Problem 4 疑问Problem 6 疑问Problem 7 疑问Problem 8 疑问试卷&#xff1a;Midterm Exam 2012 答案&#xff1a;Exam Solutions Problem 4 疑问 第 4 题为第三章内容&#xff0c;这里觉得题目有一步骤写错了&#xff0c;<13> …

让Python可视化事半功倍!

分享一款不错的Matplotlib可视化查询手册&#xff0c;让Python Matplotlib事半功倍&#xff01; 当可视化时&#xff0c;记不清楚图形Marker名称、colormap名称、坐标轴刻度设置、图例设置等等时&#xff0c;稍微扫描一眼该手册&#xff0c;直接YYDS。 下面简单介绍一下这个手册…

SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.5 变更缓存供应商 Ehcache

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇5 整合第三方技术5.5 变更缓存供应商 Ehcache5.5.1 缓存实现方案5.5.…