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.mzph.cn/news/211461.shtml

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

相关文章

vue的知识点

Vue.js是一个渐进式JavaScript框架,用于简化Web应用程序开发和管理。下面是Vue.js的一些核心知识点: 1. 数据绑定:Vue.js通过指令和模板语法实现了双向数据绑定,可以实时更新视图和模型之间的数据。 2. 组件化开发:V…

【力扣】移除链表元素203

目录 1.前言2. 题目描述3. 题目分析3.1 不带哨兵位3.2 带哨兵位 4. 附代码4.1 不带哨兵位4.2 带哨兵位 1.前言 这里开始介绍从网上一些刷题网站上的题目,在这里做一些分享,和学习记录。 先来介绍一些力扣的OJ题目。 这里的OJ就是我们不需要写主函数&…

数据表记录的操作

一、数据添加 1、打开SSMS,附加数据库(数据库文件在自己的文件夹下面),并进行下面的设置: (1)设置“部门信息”表中的“编号”为主键(SSMS) 首先建立好所需的数据库库…

华为OD机试 - 生成哈夫曼树(Java JS Python C)

题目描述 给定长度为 n 的无序的数字数组,每个数字代表二叉树的叶子节点的权值,数字数组的值均大于等于1。 请完成一个函数,根据输入的数字数组,生成哈夫曼树,并将哈夫曼树按照中序遍历输出。 为了保证输出的二叉树中序遍历结果统一,增加以下限制: 二叉树节点中,左节…

java中什么是线程池?

线程池(Thread Pool)是一种线程管理的机制,它主要解决了线程生命周期的开销和资源消耗问题。线程池在程序中创建一些预先定义数量的线程,将任务分配给这些线程,从而提高了线程的重用性和性能。线程池的核心思想是将创建…

为 Compose MultiPlatform 添加 C/C++ 支持(3):实战 Desktop、Android、iOS 调用同一个 C/C++ 代码

theme: serene-rose 前言 在本系列的前两篇文章中我们已经学会了如何在 kotlin native 平台(iOS)使用 cinterop 调用 C/C 代码。以及在 jvm 平台(Android、Desktop)使用 jni 调用 C/C 代码,并且知道了如何自动编译 A…

Git 五分钟教程速度入门

Git 五分钟教程速度入门 分类 编程技术 许多人认为 Git 太混乱,或认为它是一种复杂的版本控制系统,其实不然,这篇文章有助于大家快速上手使用 Git。 入门 使用Git前,需要先建立一个仓库(repository)。您可以使用一个已经存在的…

Win10操作系统安装Python

1 Python解释器下载 1.1 安装环境 Windows 10 专业工作站版22H2 python-3.9.6-amd64.exe 1.2 下载地址 Python官网:Welcome to Python.org Python镜像:CNPM Binaries Mirror 2 Python解释器安装 2.1 Install Python 3.9.6 (64-bit)界面 双击运行下…

鸿蒙开发组件之list

1、鸿蒙中的list作为可滑动列表功能,初始化方式是 List({space: 10}){ForEach(arr, item > {ListItem() {//列表单个Item组件}})} 其中,List中的space可以设置两个ListItem组件的间距 List中是一个ForEach,需要注意的是item要返回的是L…

【数据结构】面试OJ题———栈|队列|互相实现|循环队列|括号匹配

目录 1. 有效的括号 思路: 2.用队列实现栈 思路: 3.用栈实现队列 思路: 4.设计循环队列 思路: 1. 有效的括号 20. 有效的括号 - 力扣(LeetCode) 给定一个只包括 (,),{&…

Hive SQL间隔连续问题

问题引入 下面是某游戏公司记录的用户每日登录数据, 计算每个用户最大的连续登录天数,定义连续登录时可以间隔一天。举例:如果一个用户在 1,3,5,6,9 登录了游戏,则视为连续 6 天登录。 id dt1001 2021-12-121002 2021-12-12…

visual studio code 好用的插件

vscode-icons Better comments 该插件对不同类型的注释会附加了不同的颜色,更加方便区分,帮助我们在代码中创建更人性化的注释。 Error Lens Error Lens插件是一款可以检测你编写的代码的语法错误,并且会显示出对语法错误的诊断信息…

USB的高速速率是如何确定的?

从全局说起。先说host对dev的插入检测。由于dev插入到host,导致为0的D和D-线突然有了电平变化,有且只有一根线的电平会变。在高速和全速模式下,D线会被拉高;在低速模式下D-线会被拉高。同时,host会对插入的dev进行消抖…

RCNN 学习

RCNN算法流程 RCNN算法流程可分为4个步骤 一张图像生成1K~2K个候选区域(使用Selective Search方法)对每个候选区域,使用深度网络图特征特征送入每一类的SVM分类器,判别是否属于该类使用回归期器细修正候选框位置 1.候选区域的生…

【星海随笔】Prometheus(一)

注:Pagerduty作为报警系统,出镜率很高。 虽然收费,但对于企业来说很便宜。 一个月几十美金 不太支持中文,主要是语音方面。 Prometheus 查询语句 , 基于数学运算模式的监控查询 我们计算一下一天多少秒 1 * 24 * 60 *…

ChatGPT是科学还是艺术?

OpenAI最近谈到GPT4变懒的问题,说“它更像是多人共同参与的艺术创作”,那到底大模型是科学还是艺术?

公式识别任务各个链条全部打通

目录 引言公式识别任务是什么?公式识别任务解决方案初探使用建议写在最后 引言 随着LaTeX-OCR模型转换问题的解决,公式识别任务中各个链条已经全部打通。小伙伴们可以放开膀子干了。 解决业界问题的方案,并不是单独训练一个模型就完事了&am…

如何确认网站是否有漏洞,如何找出网站存在的漏洞,找到漏洞该如何处理

如何确认网站或者服务器是否有漏洞 判断一个网站是否是存在漏洞的方法: 1.可以借助德迅云安全漏洞扫描功能来检查漏洞。 2.打开德迅云安全首页,点击最上面导航栏中的“安全产品”。 3.滑到“漏洞扫描”,选择“产品价格”服务。 4.选择您需…

【力扣】141和142环形链表

141.环形链表 法一:快慢指针 思路: 用两个指针slow,fast,后者能比前者多走一步路,那判断是不是有环,只需要判断是否会相遇。 就是有一个能比乌龟跑2倍快的兔子,两小只都在有环的路上跑,那是不是肯定会相…

golang开发之个微机器人的二次开发

简要描述: 下载消息中的文件 请求URL: http://域名地址/getMsgFile 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型…