JDK,JRE,JVM有什么区别?跨平台?跨语言?

news2024/11/24 19:46:52

JDK

    Java Development Kit(Java开发工具包),提供了Java的开发环境和运行环境。包含Java源文件的编译器Javac,还有调试和分析工具。

JRE

    Java Runtime Environment(Java运行环境)包含了Java虚拟机(JVM)和一些基础类库。

JVM

    Java Virtual Machine(Java虚拟机),提供执行字节码文件的能力。

    所以如果只是运行Java程序,只要安装了JRE都可以运行。

    注:但是JVM本身不是跨平台的,JVM是实现Java跨平台的核心,不同的平台需要安装不同的JVM。

Java源文件运行过程 

如下图解:

     也就是说 .java文件先经过编译,生成 .class字节码文件,最后才在JVM上运行的,但是JVM本身不跨平台,所以不同版本的JVM才可以运行在不同的操作系统上。(如果深入JVM的内部结构还是很复杂的,本文只是简单介绍一下JVM)

跨平台性

    Java源文件编写之后(比如编写一个Hello World源文件)然后经过编译,生成字节码文件,此时的字节码文件是符合一定的规范,符合一定的规范程序才能在JVM上跑起来,也就是说我只有这么一份Java源文件,经过编译之后,我可以跑在Windows上,也可以跑在Linux上。

    但是注意上图的图解:程序运行并不是直接在Windows或者Linux上就跑起来了,而是要借助JVM(Java虚拟机),所以所谓的跨平台是指Java源文件生成的字节码文件(.class文件)是跨平台的;但是本身的JVM是不跨平台的。

    如上图图解:字节码文件是需要不同版本的Java虚拟机才能把字节码文件翻译成不同的操作系统的机器码的。(有一个编译以及翻译的过程)

跨语言性

     还是看上图的图解,我们以为JVM(Java虚拟机)就只能跑Java的语言,但是实际上编译生成的字节码文件只是起到了规范的作用,只要你开发其他的语言是符合我 .class字节码文件的规范(不一定只是Java语言),就可以在JVM上运行。

    也就是所谓的“ 某种某种语言 ” 也是属于Java虚拟机体系的语言,只要符合字节码文件的规范,此时不同的开发语言就可以跑在 不同的平台(操作系统)了。

                                                                                           本文是总结的网上风清扬大佬的面试题~

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

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

相关文章

WPF开发txt阅读器10:语音播报快进快退

文章目录 MySpeech类快进 文章目录 MySpeech类快进 txt阅读器系列: 需求分析和文件读写目录提取类💎列表控件与目录字体控件绑定💎前景/背景颜色书籍管理系统💎用树形图管理书籍语音播放💎播放进度显示 MySpeech类 …

MySQL 中有哪些锁?

数据库中锁的设计初衷处理并发问题,作为多用户共享资源,当出现并发访问的时候,数据库需要合理控制资源访问规则。锁就是实现这些访问规则中的重要数据。 锁的分类 根据加锁范围,MySQL 里面的锁可以分成全局锁、表级锁、行锁三类…

计算机视觉算法——BEV Perception算法总结

计算机视觉算法——BEV Perception算法总结 计算机视觉算法——BEV Perception算法总结1. Homograph Based——3D LaneNet2. Depth Based——LSS3. MLP Based——PON4. Transformer Based——BEVFormer5. Transformer Based——Translating Image into Maps 计算机视觉算法——…

急于生成人工智能是有风险的:如何保护数据

每天的业务用户都在尝试使用 ChatGPT 和其他生成式 AI 工具。事实上, Gartner 预测, 到 2025 年,30% 的营销内容将由生成式人工智能创建并由人类增强。 然而,像三星这样的公司已经发现,不了解新技术风险的用户正在成…

linux(线程控制)

目录: 1.线程创建 2.线程等待 3.线程终止 4.线程分离 5.线程ID -------------------------------------------------------------------------------------------------------------------------------- 1.线程创建 pthread_create pthread_t *pthread 是一个输出型…

Nucleo-F411RE (STM32F411)LL库体验 5 - 通用定时器TIM2的使用

Nucleo-F411RE (STM32F411)LL库体验 5 - 通用定时器TIM2的使用 1、简述 设定TIM2,计数周期为10KHZ,即计时1s需要10000次,通过shell命令动态修改reload值,来更改定时器的频率。 假定设定TIM2 counter cloc…

第五章 部署PKI与证书服务

❄️作者介绍:奇妙的大歪❄️ 🎀个人名言:但行前路,不负韶华!🎀 🐽个人简介:云计算网络运维专业人员🐽 前言 PKI(公钥加密基础结构):通…

【C++】list的使用和模拟实现

目录 1.什么是list2.list的一些接口3.list的模拟实现3.1 迭代器3.2 list主体3.2.1 构造函数3.2.2 拷贝构造、赋值重载3.2.3 主体内引入迭代器3.2.4 insert和erase3.2.5 clear和析构函数 3.3 const迭代器的实现3.4 实现迭代器的operator-> 4.总结list迭代器的实现 1.什么是li…

领域驱动应用架构实践

一个合适的应用架构不仅能促使项目朝着好的方向发展,易于维护,也能指导团队成员有效协作。 DDD是站在领域的角度来驱动应用架构的落地,接下来将介绍一种落地方案。 架构分层 首先在架构层次方面,在遵循DDD的分层架构模式的同时&…

STM32单片机(六)TIM定时器 -> 第五节:TIM输入捕获

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…

Nucleo-F411RE (STM32F411)LL库体验 4 -Letter Shell移植与调试

Nucleo-F411RE (STM32F411)LL库体验 4 -Letter Shell移植与使用 1、串口的初始化 Nucleo-F411RE自带st-link,并支持虚拟串口的功能,根据原理图,st-link的rx tx接到了Nucleo-F411RE的PA2 PA3,所以我们要初…

以太网MII、RMII、GMII、RGMII(三)

目录 一、MII 二、RMII 三、GMII 四、RGMII 以太网硬件主要包括OSI的最下面两层,物理层和数据链路层,前者的芯片为PHY,后者的芯片为MAC控制器。而MAC与PHY之间的常用的数据传输接口有MII、RMII、GMII、RGMII。 模式 时钟 位宽 速率 M…

pytorch笔记:transformer 源码

来自B站视频,API查阅,TORCH.NN seq2seq 可以是 CNN,RNN,transformer nn.Transformer 关键源码: encoder_layer TransformerEncoderLayer(d_model, nhead, dim_feedforward, dropout,activation, layer_norm_eps, ba…

5.vue3医疗在线问诊项目 - _极速问诊-前置准备 ==> 需求分析、枚举类型、pinia仓库的初始化

5.vue3医疗在线问诊项目 - _极速问诊-前置准备 > 需求分析、枚举类型、pinia仓库的初始化 极速问诊-需求分析{#consult-product} 极速问诊阶段流程分析 线下看病流程: 选择医院(三甲、普通)》挂号》选择科室 》选择医生(专家…

牛客网专项练习——C语言错题集(5)

文章目录 指针的值指针与数组、函数的组合空结构体* 和 的优先级 指针的值 指针的值是一个地址,题目中的字符串 “girl” 应该是 *p 的值,即指针 p 所指地址存储的数据的值。 指针与数组、函数的组合 int *p[n] 等价于 int (*)p[n],是一个…

xinput1_3.dll丢失怎么办?xinput1_3.dll丢失的修复方法

xinput1_3.dll是电脑文件中的dll文件(动态链接库文件)。如果计算机中丢失了某个dll文件,可能会导致某些软件和游戏等程序无法正常启动运行,并且导致电脑系统弹窗报错。 在我们打开软件或者游戏的时候,电脑提示xinput1_…

STM32 Proteus仿真自动刹车系统超声波测距电机控制-0042

STM32 Proteus仿真自动刹车系统超声波测距电机控制-0042 Proteus仿真小实验: STM32 Proteus仿真自动刹车系统超声波测距电机控制-0042 功能: 硬件组成:STM32F103C6单片机 LCD1602显示器HCSR04超声波传感器按键(加 减)电机蜂鸣器 1.单片机…

学习Angular的编程之旅

目录 1、简介 2、特点 2.1 横跨多种平台 2.2 速度与性能 2.3 美妙的工具 3、Angular 应用:知识要点 3.1 组件 3.2 模板 3.3 依赖注入 4、与其他框架的对比 1、简介 Angular 是一个应用设计框架与开发平台,旨在创建高效而精致的单页面应用。 A…

Java(二):Spring Boot 项目-文件的增删改查下载

Spring Boot 项目-文件的增删改查下载 准备docker运行mysql设置MySQL时区查看当前MySQL使用的时区MySQL建库建表 定义两个实体类数据表实体类查询条件实体类 工具类com/example/user/utils/FileUtil.java 用到的SQL语句mapper user/src/main/resources/mapper/FileTableDao.xml…

基于SSM框架的Java的医院管理系统的设计与实现+文档

博主介绍:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 基于SSM框架的Java的医院管理系统的设计与实现文档 视频演示 视频去哪了呢?_哔哩哔哩_bilibili 系统介绍 摘 要 随着互联网技术的快速进…