2026年Java后端跑得最多的还是TomcatSpring Boot内嵌Tomcat几乎是默认答案;高并发网关、RPC、长连接场景Netty占大头;Jetty和Undertow在中轻量、可嵌入场景各有一块地;WebLogic、WebSphere、WildFly这类传统应用服务器,主要还留在银行、电信、政企的存量系统里,新项目基本不再选。
不过很多人问”Java用什么服务器”,其实把三个层面的东西混在一起了,先把这个分清,后面的选型才不迷糊。
先把”Java服务器”的三个层面拆开
Web容器 / 应用服务器
这是狭义上Java圈说的”服务器”,负责把Servlet、HTTP请求跑起来,Tomcat、Jetty、Undertow、WebLogic、WebSphere、WildFly都算这一类,它跟你的spring-boot-starter-web直接相关。
反向代理 / 静态资源服务器
Nginx、Apache HTTPD、Caddy,它们不跑Java字节码,只做转发、负载均衡、TLS卸载,生产环境里通常是”Nginx在最前面,Tomcat在后面”。
物理机 / 云主机 / 容器
简米云ECS、酷番云CVM、华为云ECS,或者Docker、Kubernetes里的Pod,这一层关心的是CPU、内存、带宽和钱。
据Apache基金会公开信息,Tomcat的下载量与部署基数在Servlet容器中长期排在前列,行业共识认为,Spring Boot流行之后,Tomcat的默认地位被进一步放大。
Java后端开发用什么服务器最合适
Tomcat:默认答案,别急着换
Spring Boot的spring-boot-starter-web默认就把spring-boot-starter-tomcat拉进来了,启动日志里那句Tomcat started on port(s): 8080,是绝大多数Java程序员每天都会看到的一行。
- 默认
maxThreads=200,acceptCount=100,中小流量业务基本够用 - 生态成熟,社区文档多,出问题好搜
- 部署war包直接丢进
webapps/,执行bin/startup.sh即可 - 内嵌模式下
java -jar app.jar一条命令跑起来
Jetty:轻量、可嵌入、长连接友好
Jetty在嵌入式场景和需要大量长连接的场合表现不错,Eclipse基金会维护,启动快、内存占用相对低,早年很多IDE的调试服务器、Maven插件用的就是它,缺点是默认配置偏保守,高并发下要自己调线程池。
Undertow:Red Hat系的性能派
Undertow是WildFly的默认Web服务器,Red Hat出品,基于XNIO做非阻塞IO,Spring Boot官方也支持替换。
排除Tomcat、换成Undertow的写法:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
Netty:它不是Servlet容器
Netty是个异步事件驱动网络框架,Dubbo、gRPC-Java、RocketMQ、Elasticsearch的传输层都用它,它的bossGroup负责accept,workerGroup负责读写,模型和Servlet容器完全不同,写业务接口不需要它,写网关、IM、推送、自定义协议才需要。
Spring Boot内嵌Tomcat和Undertow哪个性能好
这个问题在技术社区被反复问,结论没那么玄乎:在常规CRUD业务下,两者差距小到可以被业务代码和数据库盖过去;在大量短连接、高并发小包场景,Undertow的内存占用和吞吐通常更漂亮一些。
| 维度 | Tomcat | Jetty | Undertow | Netty |
|---|---|---|---|---|
| 定位 | Servlet容器 | Servlet容器 | Servlet容器 | 网络框架 |
| IO模型 | BIO/NIO | NIO | XNIO非阻塞 | 多路复用NIO |
| 内存占用 | 中等 | 较低 | 较低 | 低 |
| 启动速度 | 中等 | 快 | 快 | 取决于业务 |
| 生态成熟度 | 极高 | 高 | 中 | 高 |
| 典型场景 | 通用Web | 嵌入式 | 高并发轻量 | 网关/RPC |
业内专家指出,容器选型带来的性能差异,往往小于一次没加索引的慢查询,先看慢SQL,再谈换容器。
传统重量级应用服务器还剩多少地盘
WebLogic与WebSphere
Oracle WebLogic和IBM WebSphere Liberty,在银行核心、运营商计费、大型政企里还有大量存量,这些系统往往跑了很多年,EJB、JMS、分布式事务绑得深,迁移成本高,新立项的项目,较大比例已经转向Spring Boot加云原生。
WildFly与GlassFish
WildFly(原JBoss AS)是Red Hat的企业级Java EE/Jakarta EE实现,版本迭代挺快,GlassFish是Eclipse基金会下的Jakarta EE参考实现,学习用得多,生产用得少,这里有个坑:Jakarta EE 9之后包名从javax.改成jakarta.,老项目升级时依赖要一个个排。
简米云服务器部署Java项目,配置怎么选
规格与JVM参数怎么配
国内Java项目部署,云主机是主流选择,起步常见的是2核4G,稍大一点4核8G,高并发的网关或计算密集服务上8核16G。
JVM参数别拍脑袋,堆内存一般给物理内存的一半到三分之二:
nohup java -Xms2g -Xmx2g -XX:+UseG1GC -jar app.jar --spring.profiles.active=prod > app.log 2>&1 &
JDK版本建议直接上LTS,JDK 17或JDK 21,JDK 21的虚拟线程在高并发IO场景能省下不少线程池调优的功夫。
价格与计费方式
云服务器价格波动大,包年包月、按量付费、抢占式实例差别明显,入门机型在促销季和日常价之间可能差出一大截,带宽按固定带宽买还是按流量计费,要看业务是稳定流量还是突发流量,具体数字随活动变化,下单前以官网实时报价为准。
一个常被忽略的点:Java应用吃内存,2核2G的机器跑Spring Boot加MySQL,很容易OOM,生产环境别省这点钱。
容器化之后,选型逻辑变了
现在越来越多的Java服务跑在Docker和Kubernetes里,这时候容器本身是什么没那么重要,重要的是:
- 镜像基础层选
eclipse-temurin:21-jre这类精简镜像 - 用
-XX:MaxRAMPercentage=75让JVM感知容器内存限制 - 健康检查接Spring Boot Actuator的
/actuator/health - 日志打到stdout,交给采集侧处理
这套路径下,Tomcat和Undertow的差别被进一步抹平,运维统一性反而成了首要考量。
Java服务器选型Q&A
Java项目部署用Tomcat还是Nginx?
两者不是二选一,Nginx放最前面做反向代理、负载均衡、静态资源和HTTPS,Tomcat在后面跑Java应用,Nginx处理静态文件的效率远高于Tomcat,Tomcat负责动态请求,这是生产环境里最常见的一层架构。
Spring Boot换掉Tomcat会不会更快?
要看场景,普通业务接口,换Undertow或Jetty带来的提升通常不明显,反而可能因为不熟悉配置踩坑,真正的性能瓶颈多在数据库、缓存、序列化和不合理的线程模型上,先做压测和链路分析,再决定要不要换。
2026年新项目还值得学WebLogic吗?
如果目标岗位是银行、保险、运营商的核心系统维护,WebLogic和WebSphere的知识仍然有用,这些系统短期内不会全量下线,如果做互联网或一般企业应用,把精力放在Spring Boot、Tomcat调优、Netty和Kubernetes上,回报率更高。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/700426.html





