相关技术
INFO
好多相关技术,后续慢慢补充
JAR / WAR
核心概念与本质区别:
| 对比维度 | JAR (Java ARchive) | WAR (Web application ARchive) |
|---|---|---|
| 全称 | Java 归档文件 | Web 应用程序归档文件 |
| 文件内容 | 纯 Java 字节码 (.class)、配置文件 (properties/yml)。不包含页面。 | 包含完整的 Web 结构:.class、lib 依赖、HTML/CSS/JS前端页面、web.xml 等。 |
| 运行机制 | 自带大楼(独立运行): 如果是 Spring Boot 的 Fat JAR,内部自带了 Tomcat。直接运行。 | 寄生模式(依赖容器): 自身无法运行,必须丢到外部独立的 Tomcat/WebLogic 等 Web 容器中才能跑。 |
| 启动命令 | java -jar xxx.jar | 无(由外置 Tomcat 负责启动) |
目录结构差异:
WAR 包的内部结构(极其死板的 Web 规范):
text
my-webapp.war
├── index.html / index.jsp (前端页面)
├── css / js / images (静态资源)
└── WEB-INF (绝对安全的内部核心)
├── web.xml (Web 配置文件)
├── classes/ (你的 Java 代码编译后的位置)
└── lib/ (你引用的第三方 jar 包,如 Jackson)JAR 包的内部结构(更灵活,取决于构建工具和框架):
text
my-app.jar
├── com/example/xxx (你的 Java 代码目录)
├── application.yml (资源配置文件)
└── META-INF/
└── MANIFEST.MF (核心清单文件,指定了 Main 方法在哪,告诉机器怎么启动)Jetty / Tomcat
Jetty 和 Tomcat 是一对“相爱相杀”的亲兄弟。它们都是完全开源的 Java Web 服务器和 Servlet 容器。
相比之下,Jetty比Tomcat更加轻量级,且可扩展性更强,谷歌的 App Engine 就是基于 Jetty 的。Tomcat 则更为成熟和稳定,拥有更广泛的社区支持和使用案例。
Jetty 的三大核心技术优势:
- 天生契合“内嵌模式”: Jetty 的代码结构高度模块化。在 Spring Boot 等现代微服务框架中,嵌入 Jetty 的代码逻辑比嵌入 Tomcat 更自然、更轻量,开发者可以按需加载所需的组件,拒绝臃肿。
- 卓越的高并发与长连接处理能力: Jetty 底层对 NIO(非阻塞 I/O) 架构的支持极其优秀。在面对大量并发连接、且每个连接数据量不大的场景(如 WebSocket 实时通信、聊天室、实时推送系统)时,Jetty 能够以极低的内存和线程消耗,维持海量的连接存活。
- 极致的启动速度与低资源占用: 得益于其精简的架构,在云原生和 Docker 容器化时代,Jetty 实例的启动速度通常快于 Tomcat,且运行时占用的物理内存更少,极其适合大规模横向扩展的微服务集群。
| 对比维度 | Tomcat | Jetty |
|---|---|---|
| 设计哲学 | 功能全面、企业级标准 | 轻量级、模块化、易于嵌入 |
| 内存与资源占用 | 较高(相对而言) | 极低 |
| 启动速度 | 常规 | 极快 |
| 长连接处理 (WebSocket) | 良好 | 极其优秀(NIO 优化极佳) |
| Spring Boot 默认配置 | 默认内置 (Starter-Web 包含) | 需手动替换依赖 |
| 最佳适用场景 | 95% 的常规企业级 CRUD 后台、重型业务 | 高并发聊天室、实时推送系统、极轻量的微服务 API网关 |
MyBatisPlus
MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它提供了丰富的功能,如自动生成 CRUD 代码、内置分页插件、性能分析等,极大地减少了开发者的重复劳动。