一文梳理多个概念:maven、spring boot、docker、tomcat、nginx、web应用等
一、引言
一直想把很多概念再梳理一下,不然总是模糊地使用。今天用一个建造并运营大型商场来做比喻帮助理解。
二、具体内容
(一)基础环境层(商场的地基和场地)
1.Linux / CentOS——商场的地基和建筑结构
是什么:操作系统,是整个软件系统的底层基础。
应用场景:你的代码想要运行,首先要有一个操作系统环境。CentOS 是 Linux 的一个发行版。
比喻:Linux 是土地,CentOS 是在这块土地上按照特定标准盖好的毛坯房。没有它,什么都放不下。
2.Docker——标准化的集装箱/预制间
是什么:容器化技术,可以把应用及其依赖打包成一个独立的“容器”。
应用场景:你在开发环境配好了 MySQL、Redis、JDK,但到了服务器又要重新配?用 Docker,一次性打包所有环境,一键部署。
比喻:集装箱或预制房间。不管里面是卖衣服还是卖餐饮,集装箱本身规格统一,用吊车就能快速从一辆卡车搬到另一辆,在任何场地都能立刻投入使用。
(二) 开发工具层(商场的设计图纸和施工队)
1. JDK (Java Development Kit) —— 建筑工人的工具箱(全套工具)
是什么:Java 开发工具包,包含 JVM(Java 虚拟机)+ 运行所需的库。
应用场景:Java 代码要编译运行,必须依赖 JDK。它提供了“语言翻译器”和“基础材料库”。只要你想用 Java 写 Web 应用,就必须先装 JDK。
比喻:瓦刀、水平尺、水泥搅拌机。没有它,工人没法干活。JVM 就像是“万能扳手”,能让同一个 Java 程序在不同操作系统上运行(一次编写,到处运行)。
2. Maven —— 物料采购和仓库管理员
是什么:项目构建和依赖管理工具。
应用场景:你的项目要依赖很多第三方库(比如 MySQL 驱动、JSON 处理库)。手动下载、管理版本、配置路径非常麻烦。Maven 帮你自动处理。你在配置文件里写
<dependency>,Maven 就会自动从中央仓库下载对应版本的 jar 包。比喻:采购员 + 仓库管理员。商场要装修,需要瓷砖、水泥、电线。Maven 会根据清单,自动去批发市场买来,并分类存放到仓库。你需要时直接领用,不用自己跑腿。
3. Spring Boot —— 装修公司的”拎包入住”套餐
是什么:基于 Java 的微服务框架,极大简化了 Web 应用的开发。
应用场景:以前用 Spring 开发需要配置一大堆 XML 文件。Spring Boot 采用“约定大于配置”,默认配置就能跑起来,还内嵌了 Tomcat。你想要一个 Web 接口(比如
/user/login),用 Spring Boot 只需写几行代码,启动后就能访问。比喻:全屋定制装修公司。不需要你自己买水泥、管子、电线(Maven 帮你买了),也不用关心墙壁怎么砌(JDK 提供基础)。你只要说“我想要一个现代极简风格的奶茶店”,Spring Boot 就给你装修好,甚至把桌椅(Tomcat)都摆好了,你直接就能营业。
(三)运行与部署层(商场开门营业)
1. Tomcat —— 店铺里的货架和收银台
是什么:Web 容器 / Servlet 容器,用来运行 Java Web 应用(.war 包)。
应用场景:Spring Boot 代码写完后,需要一个能接收 HTTP 请求、调用 Java 逻辑、返回 HTML/JSON 的“运行环境”。Tomcat 就是干这个的。你写了一个 Spring Boot 应用,打包成
.war,放到 Tomcat 的webapps目录,启动 Tomcat,它就会解压并运行你的代码。比喻:货架、收银台、店员。顾客(用户)来买东西,店员(Tomcat)接待,根据你定好的流程(Spring Boot 逻辑),从货架取货、收钱、开票。没有 Tomcat,代码只是一堆文档,没法对外服务。
2. Nginx —— 商场大门口的迎宾和导流员
是什么:高性能的 Web 服务器 / 反向代理 / 负载均衡器。
应用场景:Nginx 可以把用户请求分发给多个 Tomcat 实例(负载均衡),提高并发能力。你的网站火了,一天有 100 万人访问。一台 Tomcat 撑不住。你在前面放一台 Nginx,后面挂 5 个 Tomcat。Nginx 把用户请求均匀分发给这 5 个 Tomcat,大家分担压力。
比喻:商场门口的迎宾员 + 导流牌。顾客来了,迎宾员(Nginx)先打招呼。如果只是问“洗手间在哪”或“有没有停车位”(静态请求),迎宾员直接回答(Nginx 处理)。如果是要进去吃饭(动态请求),迎宾员引导到具体的店铺(Tomcat)。如果某家店铺排队太长(Tomcat 过载),迎宾员会把客人分流到另一家同品牌分店。
(四)web应用—— 商场里具体卖的东西和服务
是什么:通过浏览器访问的应用程序,比如淘宝、知乎、你的管理系统。
应用场景:你写的 Spring Boot 代码 + HTML + JS + CSS,运行在 Tomcat 里,用户通过浏览器访问,这就是一个完整的 Web 应用。
比喻:商场里的各个店铺:优衣库(商品查询)、海底捞(在线排队)、电影院(选座购票)。顾客通过商场(Nginx + Tomcat)进入这些店铺,享受服务。
三、总结
他们都各自发挥着各自的作用,能成为主流产品也是因为其不可替代性。
作者:吴银双
日期:2026年6月4日
平台:GitHub Pages / 技术博客