Java核心概念详解:JVM、JRE、JDK、Java SE、Java EE (Jakarta EE)

1. Java

  • 是什么? Java首先是一种编程语言。它拥有特定的语法、关键字和结构,开发者可以用它来编写指令,让计算机执行任务。

  • 核心特点: Java最著名的特点是“一次编写,到处运行”(Write Once, Run Anywhere - WORA)。这得益于Java的编译和运行机制(下面会讲到JVM)。

  • 更广的含义: “Java”这个词也常常指整个Java技术体系,包括平台、工具、社区和生态系统。

简单比喻: Java就像是一本烹饪菜谱的规则,规定了如何写菜谱(语法),比如需要有哪些部分(食材、步骤)。


2. JVM (Java Virtual Machine - Java虚拟机)

  • 是什么? JVM是Java程序运行的环境。它是一个虚拟机,即一台用软件模拟出来的计算机。

  • 核心职责:

    1. 加载代码:读取编译后的Java字节码文件(.class文件)。

    2. 验证代码:确保代码是安全且符合规范的。

    3. 执行代码:将字节码解释编译成所在操作系统能理解的本地机器码并执行。

    4. 提供运行时环境:管理内存(著名的垃圾回收机制就在JVM中)、处理异常等。

  • 关键点:

    • JVM是 “平台相关” 的。不同操作系统(Windows, Linux, macOS)有各自版本的JVM。正是这些不同平台上的JVM,才使得同一份Java字节码可以在任何装有对应JVM的系统上运行,实现了“跨平台”。

简单比喻: JVM就像是一个能看懂标准菜谱(字节码)的万能厨师。无论你在哪里(Windows厨房或Linux厨房),只要有一个这样的万能厨师,他就能按照标准菜谱做出一样的菜。这个厨师负责具体的烹饪工作(执行),管理厨房的食材(内存管理)。


3. JRE (Java Runtime Environment - Java运行时环境)

  • 是什么? JRE是用来运行已开发好的Java程序的软件包。如果你的电脑只想运行Java程序(如Minecraft),而不进行Java开发,那么安装JRE就足够了。

  • 包含什么?

    • Java虚拟机 (JVM):核心执行引擎。

    • Java核心类库 (Java API):一系列预先写好的、可供程序调用的工具类,比如用于数学计算的Math类、用于处理字符串的String类等。

    • 其他一些用于支持文件处理、网络通信等的基础组件。

简单比喻: JRE就像是整个厨房,里面包含了万能厨师(JVM)和所有基础食材和厨具(核心类库)。有了厨房,你就可以做出菜谱上的菜(运行程序)。

关系:JRE = JVM + Java核心类库


4. JDK (Java Development Kit - Java开发工具包)

  • 是什么? JDK是提供给Java开发者使用的软件工具包。如果你要编写编译Java程序,就必须安装JDK。

  • 包含什么?

    • JRE:因为开发完成后需要运行和测试程序,所以JDK包含了完整的JRE。

    • 编译器 (javac):将你写好的.java源代码文件翻译成JVM能识别的.class字节码文件。

    • 调试和分析工具:如jdb(调试器)、javap(反编译工具)、jconsole(监控工具)等。

    • 其他工具:如打包工具、文档生成工具(javadoc)等。

简单比喻: JDK就像是一整个厨师培训套装,它不仅包含了一个完整的厨房(JRE),还包含了如何写菜谱的指南(编译器)、调试菜谱味道的工具(调试工具)等,让你能够创作和测试新的菜谱。

关系:JDK = JRE (JVM + 核心类库) + 开发工具 (编译器、调试器等)


5. Java SE (Java Platform, Standard Edition)

  • 是什么? Java SE是Java平台的标准版,它提供了Java最核心的功能和库。

  • 包含什么?

    • 它定义了Java语言的基础部分(语法、类型、变量等)。

    • 它包含了所有Java核心类库(如集合框架、网络、I/O、数据库连接JDBC、多线程等)。

    • 它也包括了JREJDK

  • 用途: 用于开发和部署桌面应用程序、命令行程序以及一些简单的服务器应用程序。它是Java技术的基石。

简单比喻: Java SE就像是烹饪的入门教科书和标准食材套装,它教你所有基础烹饪技巧(核心语法和API),让你能做出口感不错的家常菜(桌面/命令行程序)。


6. Java EE (Java Platform, Enterprise Edition) - 现称 Jakarta EE

  • 是什么? Java EE是建立在Java SE之上的企业版。它是一套规范(标准) 的集合,而不是一个具体的软件。

  • 核心思想: 为了开发大规模、分布式、多层次、可扩展、高可靠性的企业级应用(如电子商务网站、银行系统、ERP系统)。

  • 包含什么? 它扩展了Java SE,增加了一系列用于企业开发的API和规范,例如:

    • Servlet / JSP:用于处理Web请求和生成动态网页。

    • EJB:用于实现复杂的业务逻辑。

    • JPA:用于对象和关系数据库的映射(持久化)。

    • JMS:用于消息服务。

    • CDI:依赖注入。

  • 重要提示: Oracle公司将Java EE移交给了开源组织Eclipse基金会,并改名为 Jakarta EE。所以现在更准确的叫法是Jakarta EE,但它的目的和内容与Java EE一脉相承。

简单比喻: Java EE (Jakarta EE) 就像是开高级餐厅的完整商业方案。它基于烹饪教科书(Java SE),但额外提供了如何管理后厨(EJB)、如何接待大量顾客(Servlet)、如何管理会员系统(JPA)等一系列高级规范和标准。具体的餐厅(如Tomcat, WildFly, WebSphere)需要按照这个方案来实施。


总结与关系图

层级关系:

  1. JVM 是最底层,负责实际执行代码,是跨平台的基础。

  2. JRE = JVM + 基础类库。提供了运行环境。

  3. JDK = JRE + 开发工具。提供了开发环境。

  4. Java SE 是一个平台规范,它包含了JDK和JRE,定义了Java的核心。

  5. Java EE (Jakarta EE) 是基于Java SE的一系列扩展规范,用于企业级开发。

如何选择?

  • 只想运行Java程序:安装 JRE 即可(但现在JDK通常已捆绑JRE,直接装JDK也行)。

  • 想要开发Java程序:必须安装 JDK

  • 学习Java基础或做桌面开发:学习 Java SE

  • 想要做网站、大型分布式系统:在学会Java SE后,学习 Java EE (Jakarta EE) 的规范和技术(如Servlet、Spring框架等)。

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

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

相关文章

OSPF高级技术 相关知识点

1.多区域OSPFospf 设计多区域原因:① 每个区域的路由器只需同步自己所在区域的链路状态数据库,分区域设 计可以使得每个区域的链路状态数据库得以减少。以降低路由器cpu、内存 的消耗。② 避免某区域内的网络故障(例如:接口频繁up…

Linux / Windows 下连续发送多帧 8 字节指令,下位机只响应第一帧,第二帧“丢失”。

串口编程易错点笔记 基于 serial::Serial(wjwwood serial 库) 场景:Linux / Windows 下连续发送多帧 8 字节指令,下位机只响应第一帧,第二帧“丢失”。1. 现象 serial::Serial ser("/dev/ttyUSB0", 115200);…

三十九、案例-配置文件-参数配置化(了解即可,现在主流使用yml配置文件)

参数配置化-问题引出参数配置化-问题解决参数配置化-代码与过程解析代码: AliOSSUtils(工具类) package com.itheima.utils;import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import org.springframework.beans.factory.…

Linux之virtio实现原理--pci 基础

一、概述 virtio设备可以基于不同总线来实现,本文介绍基于pci实现的virtio-pci设备。以virtio-blk为例,首先介绍PCI配置空间内容,virtio-pci实现的硬件基础——capability,最后分析PIC设备的初始化以及virtio-pci设备的初始化。 …

Claude-Flow AI协同开发:从“CTO”到“人机共生体”的AI协同开发

6.1 思维的终极融合:从“CTO”到“人机共生体” (Human-AI Symbiote) 在之前的章节中,我们逐步将您的角色从“开发者”提升为“项目经理”,最终定位为整个“人机混合团队的CTO”。这个模型强调的是一种 “指挥-控制” (Command-and-Control) …

TCGA单癌肿按单基因高低分组的转录组差异热图分析作图教程

TCGA单癌肿按单基因高低分组的转录组差异热图分析作图教程分析作图原理过程提取出TCGA中指定的单基因单癌肿的转录组表达数据对该单基因的表达水平的中位数作为阈值把样本分成高表达组和低表达组按该基因的高低表达样本分组来做该癌症的转录组差异分析对差异分析结果中top差异高…

手搓Tomcat

目录 Tomcat是什么? 前置工作准备 构建并启动Tomcat 处理Socket逻辑顺序 获取输入流并读取数据封装到Request 自定义Servlet对象 暂存响应体 按Http协议发送响应数据 部署Tomcat ​ Tomcat是什么? Tomcat 是一个 Web 应用服务器(准确…

Linux网络:初识网络

文章目录1. 网络发展1.1 独立模式1.2 网络互联1.3 局域网LAN1.4 广域网WAN2. 认识 “协议”2.1 什么是协议?2.2 为什么要有协议?2.3 深入了解协议序:开网络之篇章,建网络之基础,将近2月过去,暑假期间不曾有…

文件检查与拷贝-简化版

本篇继续来学习shell脚本,对上一篇的文件检查与拷贝脚本进行简化修改。 1 功能说明 在Linux系统中,通过一个shell脚本,实现将一个目录中的所有文件(包括子目录中的),拷贝到顶一个指定的目录,要求…

DCA1000 AWR1843 环境安装

mmWaveStudio GUI设计用于表征和评估TI Radar器械。mmWaveStudio通过SPI向mmWave设备发送命令来配置和控制mmWave设备。使用DCA 1000 EVM或TSW 1400 EVM板捕获ADC数据,并在Matlab中处理数据,结果显示在GUI中。mmWaveStudio GUI利用C DLL和一组API通过FTD…

机器学习实操项目01——Numpy入门(基本操作、数组形状操作、复制与试图、多种索引技巧、线性代数)

上一章:【从 0 到 1 落地】机器学习实操项目目录:覆盖入门到进阶,大学生就业 / 竞赛必备 下一章: 机器学习核心知识点目录:机器学习核心知识点目录 机器学习实战项目:【从 0 到 1 落地】机器学习实操项目目…

【vscode】如何离线下载vsxi插件,且在无网环境下离线安装插件-2026最新实验教程

文章目录插件市场也可以从APP进入无网环境下安装插件插件市场 https://marketplace.visualstudio.com/vscode 也可以从APP进入 这里以下载python插件为例 选择版本 无网环境下安装插件

vue2 侦听器watch

一、watch 核心作用监测数据变化:当被监听的数据发生改变时,自动执行指定的处理函数处理副作用:适合执行异步操作(如接口请求)、复杂逻辑处理等 “副作用” 代码二、基础语法(3 种写法)简单写法…

今天继续学习Linux系统中shell脚本

首先继续上次的内容看一下另一个案例案例:持续检查服务器负载uptime查看负载情况(也可以用top命令)[rootlocalhost ~]# uptime22:11:26 up 7:05, 3 users, load average: 0.00, 0.00, 0.00#!/bin/bash #Function:持续检查服务器负载,如果负…

Win系统下配置PCL库第一步之下载Visual Studio和Qt 5.15.2(超详细)

之前在上篇文章Win系统下配置PCL库_windows pcl库 下载-CSDN博客中提到配置PCL库的教程是下载Visual Studio和Qt 5.15.2,后续在测试中我发现前面这两步很重要,一般Qt在线下载器选项选不好的话Qt是装的Qt6,在VTK编译的时候Qt6往往需要C17编译&…

openCV3.0 C++ 学习笔记补充(自用 代码+注释)---持续更新 四(91-)

环境:OpenCV3.2.0 VS201791、合并Y方向重叠的轮廓以轮廓的最小垂直外接矩形框的y为依据,合并y重叠的轮廓。数学逻辑:几何合并的数学表达坐标系统:假设矩形由左上角坐标(x, y)和宽高(width, height)定义。合并公式:合并…

numpy数组的升维和降维的方法集锦

为适配计算包对numpy数组的维度要求,对numpy数组进行升维或降维转化,是非常常见的操作。这里尝试通过多种方式对numpy数组进行升维或降维。1 数组升维1.1 np.expand_dims在0维升维,示例如下a np.array([1,2,3,4,5]) np.expand_dims(a, axis0…

介绍 Python Elasticsearch Client 的 ES|QL 查询构建器

作者:来自 Elastic Miguel Grinberg 学习如何使用 ES|QL 查询构建器,这是一个新的 Python Elasticsearch client 功能,可以更轻松地使用熟悉的 Python 语法构建 ES|QL 查询。 想要获得 Elastic 认证吗?快来了解下一期 Elasticsear…

三坐标测量仪:高精度测量内径检测手段及其实际运用

在工业制造领域中,内径尺寸的精准度直接关系到产品的装配性能、运行稳定性乃至使用寿命。传统检测方法如卡尺、内径千分尺等难以满足高精度、复杂结构件的需求。三坐标测量仪技术的出现,打破了这一困境,成为当前工业领域实现高精度内径检测的…

DIPMARK:一种隐蔽、高效且具备鲁棒性的大语言模型水印技术

摘要水印技术为通过在数据中嵌入隐蔽信息来保障数据安全提供了一种很有前景的方法。该领域的一个首要挑战在于,在水印嵌入过程中保持原始数据的分布。我们的研究拓展并优化了现有的水印框架,着重强调了保持分布(DiP)水印的重要性。…