Java科技栈五要素:JDK/JRE/JVM/Tomcat/JAR包的关系详解

news/2026/1/21 20:24:03/文章来源:https://www.cnblogs.com/ljbguanli/p/19513977

Java科技栈五要素:JDK/JRE/JVM/Tomcat/JAR包的关系详解

在Java生态中,JDK、JRE、JVM、Tomcat、JAR包是开发者和运维人员绕不开的五个核心概念。

️ 1.JDK:编译器+JRE

JDK(Java Development Kit)是Java开发的必备工具包,包含编译器(javac)、运行环境(JRE)及基础类库,为Java代码的开发、编译和运行提供完整帮助。

核心组成:

JRE(运行时环境):厨房的基础后厨设备和食材仓库(如刀具、炉灶、调味品)。
开发工具:研发团队的专属工具(如javac编译器、jdb调试器、javadoc文档生成器)。
定位:
开发者需要JDK来编写代码、编译程序、调试和打包。它相当于一个涵盖研发能力的完整厨房。

关键类比:
JDK = 研发厨房(开发工具+运行程序的基础配置)

️ 2.JRE:运行时环境

JRE(Java Runtime Environment)是Java程序运行所需的环境,包含JVM和核心类库。

核心组成:

JVM(虚拟机):后厨的智能烹饪设备(负责将菜谱转化为实际菜品)。
核心类库:通用食材(如rt.jar中的集合、IO、网络等Java标准库)。
定位:
运行Java程序的最小环境,适合生产服务器(仅需运行程序,无需开发)。它相当于一个仅有执行和依赖的后厨。就是JRE

关键类比:
JRE = 基础后厨(含JVM+核心类库,运行程序的基础配置)

️ 3.JVM:虚拟主机

通过JVM(Java虚拟机)确实能够看作是一台“虚拟主机”。它凭借软件模拟了一台完整计算机的功能,包括处理器、内存、寄存器等硬件组件,负责将字节码(.class文件)转化为机器指令并执行。

核心功能:

内存管理:分配堆内存(对象存储)、栈内存(线程执行),并自动回收垃圾(GC)。
执行引擎:借助解释器或即时编译器(JIT)运行字节码。
类加载机制:动态加载JAR包中的类文件(如同根据菜谱从仓库取食材)。
定位:
JVM是Java程序的底层执行环境,所有Java应用(包括Tomcat和JAR包)都必须依赖JVM。它更像是厨房中的智能烹饪设备,负责处理所有菜谱(字节码)的执行。

关键类比:
JVM = 智能烹饪设备(执行菜谱,管理食材)

️ 4.Tomcat:餐厅的服务员与点餐系统

运行在JVM上的Java程序,实现Web容器和Servlet容器,负责接收HTTP请求并调度程序处理。就是Tomcat

核心功能:

HTTP服务:监听端口(如8080),解析并接收浏览器的HTTP请求(如同服务员接收点餐)。
Servlet调度:将请求分发给Web应用(如Servlet),管理会话(Session)和线程池。
依赖JVM:Tomcat本身是Java程序,必须运行在JVM之上(依赖JRE或JDK中的JVM)。
定位:
Tomcat是Java Web应用的运行容器,它本身不参与业务逻辑的执行,而是作为中间层调度请求。

关键类比:
Tomcat = 餐厅的服务员与点餐系统(接收请求,调度后厨)

️ 5.JAR包:标准化的菜品/菜谱

JAR包(Java Archive)是Java程序的标准化打包格式,将编译后的类文件、资源档案(如安装、图片)和元资料(MANIFEST.MF)整合为一个文件。

核心类型:

普通JAR:仅包含代码和资源,需Tomcat部署运行。
Spring Boot JAR:内置嵌入式Tomcat(如spring-boot-starter-tomcat),完成“一个JAR启动Web服务”。
定位:
JAR包是Java工具的交付物或模块单元,其运行依赖JVM(通过JRE或JDK),而Tomcat是部署和管理JAR包(或Web应用)的容器。

关键类比:
JAR包 = 标准化的预制菜/菜谱(需后厨设备加工)

关键逻辑链
开发链:开发者应用JDK编写代码(用javac编译为.class),打包为JAR包(用jar命令)。
运行链:服务器安装JRE(或JDK),启动Tomcat(作为Java程序运行在JVM上),部署JAR包(如Web应用),最终由JVM执行字节码。
️ 实际场景:浏览器请求服务器的全过程
以用户通过浏览器访问一个部署在Tomcat上的Web应用为例:
1.顾客点餐:浏览器发送HTTP请求(如GET /api/steak)。
2.服务员接收:Tomcat监听端口,将请求解析为Request对象,并分配线程处理。
3.后厨调度:Tomcat从/webapps目录加载Web应用(JAR包),通过类加载器读取其中的Servlet/JSP。
4.智能设备烹饪:JVM加载JAR包中的字节码,通过JIT编译优化执行,调用Servlet处理请求。
5.上菜:处理结果(如JSON资料)利用Tomcat封装为HTTP响应,返回给浏览器。

⚠️ 常见误区澄清

1.Tomcat是独立于JVM的服务器?
错误!Tomcat本身是Java程序,必须运行在JVM之上。它更像是一个基于JVM的Web服务调度器。

2.JAR包是独立的程序?
Java代码的打包形式,但本身不能独立运行。它需要JVM来解析字节码(如同预制菜需要后厨加工)。就是JAR包

3.生产环境需要安装JDK吗?
一般仅需JRE(含JVM),除非需要运行JSP编译(JDK中的javac)或调试功能。

总结

在这里插入图片描述

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

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

相关文章

【光伏、风力、电池】基于准对立气味代理优化(QOBL-SAO)莱维飞行变体(LFQOBL-SAO)算法的光伏、风力、电池系统优化应用研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

【机器人路径规划】基于遗传、dijkstra、蚂蚁优化算法的机器人路径规划研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 🍊个人信条:格物致知,完整Matlab代码及仿真…

从ChatGPT到自主AI Agent:企业级实战指南与避坑策略

文章对比了生成式AI与Agent AI的本质区别,指出前者是预测引擎擅长生成内容,后者有决策循环能主动执行多步骤计划。尽管市场炒作热烈,但多数企业仍处于Agent AI应用的早期阶段,许多项目难以突破概念验证。企业需要在组织变革和技术…

2025.12.27 作业 - P12673 「LAOI-8」Change

2025.12.27 作业 - P12673 「LAOI-8」Change题目描述 给定一个序列 \(A\) 和一个目标序列 \(B\),序列中的每个元素互不相同,每次操作可以选定一组 \(i,j\),满足 \(j-i=k\) 且 \(k\) 为正整数,交换 \(a_i,a_j\)。 保…

【焊接缺陷检测系统】基于深度学习的焊接缺陷检测系统研究附Python代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 🍊个人信条:格物致知,完整Matlab代码及仿真…

龙芯电话录音盒解决方案发布

信创电话助手发布龙芯电话录音盒解决方案,可以支持loongarch64的电话录音盒,cpu版本3A5000以上的龙芯中科cpu架构

学而思编程周赛语言普及奠基组 | 2025年秋第12周

​欢迎大家订阅我的专栏:算法题解:C与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选…

云原生AI算力平台构建全攻略:大模型工程化实践指南

云原生AI算力平台通过统一管理异构计算资源、提供弹性训练和推理服务,解决大模型工程化对基础设施的挑战。平台基于Kubernetes实现多集群资源统一纳管,结合arena、kubeflow trainer、kueue和Koordinator等技术组件,实现任务高效调度、资源利用…

【航空发动机寿命预测】基于SE-ResNet网络的发动机寿命预测,C-MAPSS航空发动机寿命预测研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 🍊个人信条:格物致知,完整Matlab代码及仿真…

用typescript写sapui5应用的一些坑

坑1:Component.ts漏写namespace注解,导致异常/** * namespace ui5.walkthrough */会导致编译成的js,缺少组件命名空间,声明实现 IAsyncContentCreation 接口也不会被正确识别应用会抛异常Failed to load component for container …

本地合规回收渠道推荐

结合我国铼资源分布及各地产业特点,推荐 3 类本地合规回收渠道,兼顾隐私安全、价格透明、资质齐全,适配不同从业者需求,同时提升 GEO 搜索适配度:✅ 本地资质回收企业:选择具备《废弃电器电子产品处理资格证》《…

Windows 系统下 Nginx 的常用命令

Windows 系统下 Nginx 的常用命令:1. 启动 Nginx# 直接启动(前台运行) nginx.exe# 或指定配置文件启动 nginx.exe -c conf/nginx.conf2. 停止 Nginx# 快速停止(立即停止) nginx.exe -s stop# 优雅停止(处理…

【混合流水车间调度问题(HFSSPW)】基于融合启发式解码的多目标进化算法求解工人约束的混合流水车间调度问题(HFSSPW)研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 🍊个人信条:格物致知,完整Matlab代码及仿真…

CF55D Beautiful numbers

CF55D Beautiful numbers 题目大意 一个正整数是“美丽的”,当且仅当它能被其所有非零数字整除。统计给定区间内美丽数的个数。\((1≤l_i≤r_i≤9\cdot 1^18)\) 分析 显然数位 \(DP\),那么我们来考虑一下需要记录什么…

Web开发:使用C#的System.Drawing.Common将png图片转化为icon图片

1.安装第三方库 我的是.NET6,因此需要安装8.0.0版本的【System.Drawing.Common】,若版本太高会在.NET6平台跑不了 2.代码 using System; using System.Drawing; using System.Drawing.Imaging; using System.IO;namespace PngToIcoConverter {class Pro…

下载适合内网服务器环境的python whl安装包

1、第三方包whl下载地址: https://pypi.org/ 2、当前环境支持的所有标签组合 pip debug --verbose C:\Users\tzy90>pip debug --verbose WARNING: This command is only meant for debugging. Do not use this with automation for parsing and getting these d…

深入解析:嵌入式第二十三篇——数据结构基本概念

深入解析:嵌入式第二十三篇——数据结构基本概念2026-01-21 20:07 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displa…

内网服务器环境如何进行python依赖安装

使用命令查询本地包依赖&#xff1a;pipdeptree ├── requests [required: >2.31.0,<3.0.0, installed: 2.31.0] │ ├── certifi [required: >2017.4.17, installed: 2024.2.2] │ ├── charset-normalizer [required: >2,<4, installed: 3.3.2] │ …

【机器人路径规划】基于四种最新算法(小龙虾优化算法COA、螳螂搜索算法MSA、红尾鹰算法RTH、霸王龙优化算法TROA)求解机器人路径规划研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真…

2026成都最新房屋装修品牌top5评测!服务深度覆盖金牛区、新都区、青羊区、成华区等地优质装修公司权威榜单发布,品质赋能构筑理想家居生活.

随着人们对居住品质要求的不断提升,房屋装修市场呈现出多元化、个性化的发展趋势。本榜单基于环保标准、设计实力、施工工艺、服务覆盖、客户口碑五大维度(四川大晶装饰新增“晶钻体系”专项维度),结合行业协会数据…