Java、JDK、JRE、JVM

Java、JDK、JRE、JVM

一、 Java

广义上看,Kotlin、JRuby等运行于Java虚拟机上的编程语言以及相关的程序都属于Java体系的一员。从传统意义上看,Java社区规定的Java技术体系包括以下几个部分:

  • Java程序设计语言
  • 各种硬件平台上的Java虚拟机实现
  • Class文件格式
  • Java类库API
  • 来自商业机构以及开源社区的第三方Java类库

Java技术体系

二、 JDK

JDK(Java Development Kit),Java开发工具包,是支持Java程序开发的最小环境。它提供了JRE、类库和编译器、调试器等开发工具,以支持Java开发人员创建和构建各种类型的程序。

三、 JRE

JRE(Java Runtime Environment),Java运行时环境,是支持Java程序运行的标准环境。它包括JVM和Java类库,用于解释和执行Java字节码,并提供了运行Java应用程序所需的基本功能。

四、 JVM

JVM(Java Virtual Machine),Java虚拟机,是Java程序运行的核心组件之一。JVM是一个用于解释和执行Java字节码的虚拟计算机,它提供了运行Java程序的环境。

JDK、JRE、JVM关系

程序员使用JDK开发Java程序,Java程序最终在JRE中的JVM上运行。

五、 Java,编译型?解释型?

  • 编译型语言:把源程序编译成二进制代码的可执行程序然后运行这个程序,如C、C++。编译型语言执行速度快、效率高,但依靠编译器、跨平台性差些。

  • 解释型语言:源程序翻译一句执行一句,如Python、JavaScript。解释型语言执行速度慢、效率低,但依靠解释器、跨平台性好。

Java既不属于传统的编译型语言,也不属于解释型语言,Java是先将代码编译成字节码文件(“.class”文件),然后再利用JVM对字节码进行解释执行,所以Java即可以说成编译型,也可以说成解释型。另外,Java是一种动态语言,可以在程序运行时安全地修改它,这对于无法承受任何停机时间的网络应用程序来说尤其重要。

Java提出了“一次编译,到处运行”的口号,这个特性便是通过字节码以及JVM实现的。Java经过编译后的字节码由JVM解释执行,无论硬件配置如何,JVM的设计都遵循统一的规范。因此,Java在编写时不需要考虑不同架构CPU之间的差异,这为Java的可移植性、跨平台性提供了极大地便利。比如,对于C语言,在不同硬件平台上,int类型的变量可表示的范围不同。但由于JVM的存在,硬件平台的差异对于Java是不可见的,Java只需要知道JVM中int类型变量的表示范围即可。

JVM隐藏了不同硬件平台之间的差异

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[报错]记录IDEA远程开发报错:java: Cannot run program.....

报错内容 IDEA在进行远程开发的时候报错,内容如下: java: Cannot run program "/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java" (in directory "/home/jim/.cache/JetBrains/RemoteDev-IU/_home_jim_DevCodes_Github_zfile/compile-…

基于JavaWeb+SSM+Vue实习记录微信小程序系统的设计和实现

基于JavaWebSSMVue实习记录微信小程序系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 目 录 摘 要 III Abstract 1 1 系统概述 1 1.1 概述 2 1.2课题意义 3 1.3 主要内…

[Linux] 用LNMP网站框架搭建论坛

一、nginx在其中工作原理 原理: php-fpm.conf是控制php-fpm守护进程 它是php.ini是一个php解析器 工作过程: 1.当客户端通过域名请求访问时,Nginx会找到对应的虚拟主机 2. Nginx将确定请求。 对于静态请求,Nginx会自行处理…

基于ssm平面设计课程在线学习平台系统源码和论文

idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 随着信息化时代的到来,管理系统都趋向于智能化、系统化,平面设计课程在线学习平台系统也不例外,但目前国内的市场仍都使用人工管理,市场规模越来越大,…

持续集成交付CICD:Jenkins配置Nexus制品上传流水线

目录 一、实验 1.Jenkins配置制品上传流水线 二、问题 1.上传制品显示名称有误 一、实验 1.Jenkins配置制品上传流水线 (1) 新建流水线项目 (2)描述 (3)添加参数 (4)查看构建首页 (5&…

详解TCP报文格式以及TCP相关特性

✏️✏️✏️今天给大家分享的是TCP报文格式的解释以及TCP协议的一些重要特性。 清风的CSDN博客 🛩️🛩️🛩️希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流! ✈️✈️✈…

【Docker】进阶之路:(六)Docker镜像

【Docker】进阶之路:(六)Docker镜像 理解镜像构成获取镜像列出镜像删除本地镜像定制镜像使用Dockerfile定制镜像 使用docker build命令Dockerfile文件定制镜像 理解镜像构成 镜像由多个层组成,每层叠加之后,从外部看来…

黑豹程序员-java发邮件,发送内容支持html,带多附件的案例

介绍 发邮件mail是常见的软件功能&#xff0c;下面利于spring和java的mail库实现发送内容支持html&#xff0c;带多附件的案例 开启SMTP邮件发送协议 谁提供的SMTP邮件服务&#xff0c;就找谁开启。QQ邮箱类似。 依赖 <!--Java MAil 发送邮件API--><dependency&g…

GPT-4V 在机器人领域的应用

在科技的浩渺宇宙中&#xff0c;OpenAI如一颗璀璨的星辰&#xff0c;于2023年9月25日&#xff0c;以一种全新的方式&#xff0c;向世界揭示了其最新的人工智能力作——GPT-4V模型。这次升级&#xff0c;为其旗下的聊天机器人ChatGPT装配了语音和图像的新功能&#xff0c;使得用…

Linux基本指令(超详版)

Linux基本指令&#xff08;超详版&#xff09; 1. ls指令2.pwd指令3. cd 指令4.touch指令5mkdir指令6.rmdir指令&&rm指令7.man指令7.cp指令8.mv指令9.echo指令10.cat指令11.more指令12.less指令13.head指令14.tail指令15.date指令16.find指令17.grep指令zip(打包压缩) …

Spring基于XML文件配置AOP

AOP AOP&#xff0c;面向切面编程&#xff0c;是对面向对象编程OOP的升华。OOP是纵向对一个事物的抽象&#xff0c;一个对象包括静态的属性信息&#xff0c;包括动态的方法信息等。而AOP是横向的对不同事物的抽象&#xff0c;属性与属性、方法与方法、对象与对象都可以组成一个…

kafka常见问题处理

1. 如何防⽌消息丢失 在生产者层面&#xff0c;我们有个ack参数确认机制 设置成-1&#xff0c;也就是副本全部同步了leader才发送ack&#xff0c;这样确保leader和副本挂掉只剩一个还能 保证消息不丢失 消费者&#xff1a; 把⾃动提交改成⼿动提交 2. 如何防⽌重复消费 在…

飞天使-linux操作的一些技巧与知识点3

http工作原理 http1.0 协议 使用的是短连接&#xff0c;建立一次tcp连接&#xff0c;发起一次http的请求&#xff0c;结束&#xff0c;tcp断开 http1.1 协议使用的是长连接&#xff0c;建立一次tcp的连接&#xff0c;发起多次http的请求&#xff0c;结束&#xff0c;tcp断开ngi…

【小米电脑管家】安装使用教程--非小米电脑

安装说明功能体验下载资源 Xiaomi HyperOS发布后&#xff0c;小米妙享电脑端独立版本也走向终点&#xff0c;最新的【小米电脑管家】将会内置妙享实现万物互联。那么本篇文章将分享非小米电脑用户如何绕过设备识别验证安装使用【小米电脑管家】实现万物互联 安装说明 1.解压文…

【探索Linux】—— 强大的命令行工具 P.21(多线程 | 线程同步 | 条件变量 | 线程安全)

阅读导航 引言一、线程同步1. 竞态条件的概念2. 线程同步的概念 二、条件变量1. 条件变量函数⭕使用前提&#xff08;1&#xff09;初始化条件变量&#xff08;2&#xff09;等待条件满足&#xff08;3&#xff09;唤醒等待pthread_cond_broadcast()pthread_cond_signal() &…

windows安装protoc、protoc-gen-go、protoc-gen-go-grpc

文章目录 一、 protoc二、protoc-gen-go三、protoc-gen-go-grpc 一、 protoc 1&#xff0c;下载&#xff1a;https://github.com/google/protobuf/releases 下载对应的protoc&#xff0c;注意选择windows 2&#xff0c;下好之后解压就行&#xff0c;然后把bin目录加入到环境…

JAVA多线程

线程是相当于独立的&#xff0c;在线程中的也是句不变量&#xff0c;除非i将变量定义一在类中或者调用其他类中的方法&#xff0c;来实现公用。 多线程的创建&#xff1a;有两种方案进行创建多线程 Thread对象提供的多线程(无返回值结果void)&#xff1a; main方法默认是一条主…

【出现模块node_modules里面包找不到】

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 一、出现的问题二、解决办法三、其它可供参考 一、出现的问题 在本地运行 npm run docs:dev之后&#xff0c;出现 Error [ERR_MODULE_NOT_FOUND]: Cannot find package Z:\Blog\docs\node_modules\htmlparser2\ imported from Z:\Blo…

坚鹏:中国建设银行商业银行场景生态搭建与GBC联动培训

中国建设银行股份有限公司是一家中国领先的大型商业银行&#xff0c;总部设在北京&#xff0c;其前身中国人民建设银行成立于1954年10月。2005年10月在香港联合交易所挂牌上市&#xff0c;2007年9月在上海证券交易所挂牌上市。建设银行为客户提供公司金融业务、个人金融业务、资…

【MATLAB】基于EMD分解的信号去噪算法(基础版)

代码操作 【MATLAB】基于EMD分解的信号去噪算法&#xff08;基础版&#xff09; 代码的主要内容 基于EMD&#xff08;经验模态分解&#xff09;的信号去噪算法通常可以结合相关系数、信号的熵值或者方差贡献率来完成去噪处理。这些指标可以用于确定阈值&#xff0c;从而对信号…