跳至正文
StackBug
返回

Java 生态全景图:从构建到上线,每一层都该选什么

写 Java 这些年,最常被新人问的两个问题是:“Java 生态到底有哪些东西?” 和 “这一层我该选什么?“。前一个问题在网上能搜到一堆 awesome-list,但读完仍然不知道该选哪个;后一个问题答案散落在各种”为什么我们从 X 迁到 Y”的博客里,难以系统化。

这篇文章把整个 Java 后端栈拆成十五层,从 JDK 一直到 AI 集成,每一层只回答三件事:有哪些主流选项 / 现在还活着吗 / 我该选哪个。每章节末尾给一张决策表,按场景对照即可。

目录

一、全景速览

先用一张图建立整体印象,下面每一节会展开。

下面进入每一层。

二、运行时:你的代码跑在什么上面

JDK 发行版的选择

2026 年最关键的一条信息:Oracle JDK 21 的 NFTC 免费授权将在 2026 年 9 月到期,意味着如果你还在用 Oracle 官方的 JDK 21,且没有付费订阅,到期后只能升级到 JDK 25 或者切到其它发行版。Azul 的报告显示 88% 的 Oracle Java 用户在考虑换发行版,这不是危言耸听。

主流发行版对比:

发行版适合场景备注
Eclipse Temurin (Adoptium)默认首选Adoptium 工作组维护,社区背书强
Amazon CorrettoAWS 环境、长期支持Corretto 25 支持到 2032 年 10 月
Azul Zulu通用场景,多平台商用版本 Zing 提供低延迟 GC
Oracle OpenJDK短期项目只有 6 个月免费窗口
GraalVMNative Image、Serverless启动毫秒级,但反射/动态代理需配置

JDK 版本选择上,2026 年的现实是:

GraalVM Native Image:值不值得

Native Image 启动时间能压到 50ms 以下(Spring Boot Native 大概 104ms),内存占用比传统 JVM 模式小 50% 以上。但代价不小:

适用场景很明确:Serverless、CLI 工具、Function 函数、需要 scale-to-zero 的微服务。普通的 Web 应用上 Native Image 收益不大,反而增加复杂度。

JVM 多语言

不是只能写 Java:

选型决策

场景推荐替代
新业务后端JDK 25 + TemurinCorretto / Zulu
存量升级JDK 21 LTS
Serverless / CLIGraalVM Native
与 AWS 深度绑定CorrettoTemurin
想用更现代语法KotlinJava + Lombok

三、构建工具:Maven 还是 Gradle

这个问题问了十几年,2026 年答案仍然没有标准。

Maven

约定优于配置带来的是几乎为零的学习曲线。mvn clean install 在任何 Maven 项目都能跑起来,团队成员换项目无需重新学习构建脚本。POM 是声明式 XML,可读性好,IDE 支持完美。

代价是灵活性低。想做一点点非标准的事情就要写插件,写插件意味着 Java 代码 + 一堆 Mojo 注解。但对绝大多数业务项目来说,根本不需要那种灵活性。

Gradle

构建脚本本身就是 Groovy 或 Kotlin 代码,能干 Maven 干不了的几乎所有事情。增量构建、构建缓存让大型项目的构建时间显著下降。

代价是构建脚本会变成代码债。我见过 Gradle 脚本里写正则、写文件读写、写 HTTP 调用的,最终演化成”只有写脚本的那个人能看懂的黑盒”。新人接手要先学半天 Gradle DSL。

Bazel 与其他

Bazel 是 Google 系大型 monorepo 的选择,单仓代码量过百万行、需要严格的可重现构建时才值得引入。普通团队用 Bazel 是杀鸡用牛刀。

私服与仓库

选型决策

场景推荐替代
单体后端 / 中小项目MavenGradle
多模块大仓 / AndroidGradle (Kotlin DSL)Maven
超大 monorepoBazelGradle
私服Nexus 社区版Artifactory

四、应用框架:Spring Boot 的统治与挑战者

Spring Boot 仍然是绝对主流

2026 年 4 月发布的 Spring Boot 4.0.6 是当前稳定版,基于 Spring Framework 7,最低要求 JDK 17,对 JDK 25 一等支持,并把过去单一的 spring-boot-autoconfigure 巨型 jar 拆成了 70+ 个细粒度模块。这不仅是工程洁癖——更小的 classpath 直接带来更快的 AOT 编译、更小的 Native Image 体积、更快的启动。

值得注意的是 Spring Boot 不存在 LTS 概念,每个 minor 都是 12 个月支持周期,每 6 个月发一个新 minor。Spring Boot 3.5 是 3.x 最后一个版本,社区支持到 2026 年 6 月 30 日,之后不再有安全更新。还在 3.x 的项目应该开始规划升级到 4.x

Quarkus 与 Micronaut:云原生的两条路线

如果你的业务对启动时间和内存占用敏感(Serverless、scale-to-zero、边缘计算),Spring Boot 不是唯一选择。

Quarkus 3(Red Hat 支持):

Micronaut 4(Object Computing 支持):

何时选非 Spring

国产轻量框架

这两者主要价值在轻量,但生态深度跟 Spring 没法比。除非你非常清楚自己为什么不要 Spring,否则默认仍然选 Spring Boot。

选型决策

场景推荐替代
通用业务后端Spring Boot 4Spring Boot 3.5(过渡期)
FaaS / 边缘计算Quarkus 或 MicronautSpring Boot Native
高并发反应式Vert.xSpring WebFlux
极简单体SolonSpring Boot

五、Web 与 API 层

Servlet 容器

容器定位
TomcatSpring Boot 默认,最稳
Jetty轻量、嵌入式友好
Undertow性能略优、内存占用低
Netty不是 Servlet 容器,是网络底座,WebFlux/gRPC/Dubbo 都建立在它之上

Spring Boot 切换容器只要换一个 starter,但实测性能差距 5% 以内,多数项目用默认 Tomcat 就够。

HTTP 客户端

客户端何时用
OkHttpAndroid 出身,通用、稳定,连接池好
Apache HttpClient 5老牌,与遗留代码配合好
Spring 6 RestClientSpring 6 引入的同步客户端,替代 RestTemplate
WebClient响应式场景
Feign / OpenFeign微服务内部声明式调用
Retrofit注解风格、类型安全

RestTemplate 没有正式废弃,但 Spring 官方推荐新项目用 RestClient(同步)或 WebClient(响应式)。

内部服务通信:REST / gRPC / Dubbo

选型决策

场景推荐替代
对外 APIREST + Spring MVCGraphQL
内部服务(同语言)DubbogRPC
内部服务(跨语言)gRPCREST
移动端通信OkHttp / Retrofit

六、数据访问:ORM 江湖

MyBatis-Plus:国内项目的事实标准

国内 80% 以上的业务项目都用 MyBatis-Plus,原因很简单:

2026 年 MyBatis-Plus 已经提供 mybatis-plus-spring-boot4-starter,跟上 Spring Boot 4 节奏。配套的 Dynamic-Datasource(多数据源)、Lock4j(分布式锁)、Mybatis-Mate(企业版分表/加密/审计)形成完整的 Baomidou 生态。

JPA / Hibernate

抽象层次最高,对领域建模驱动的项目(DDD 风格)很合适。但对国内常见的”以 SQL 为中心”的业务习惯,JPA 反而显得别扭,复杂查询要写 Specification 或者 JPQL,调试起来不直观。

适合场景:

jOOQ:类型安全 SQL

把 SQL 当作一等公民,通过代码生成器生成强类型的 DSL。SQL 写错编译期就报错,重构数据库表能立刻看到所有受影响的查询。

代价:

适合场景:金融、报表、对 SQL 正确性要求极高的系统。

Spring Data

不是独立 ORM,而是抽象层,下面接 JPA、JDBC、R2DBC、MongoDB、Redis、Elasticsearch 等。最大的价值是方法名即查询findByUserNameAndStatus),快速搭原型很爽,但复杂查询还是要回到底层。

连接池

数据库迁移

选型决策

场景推荐替代
国内业务后端MyBatis-PlusMyBatis
出海 / DDD 重业务Spring Data JPAHibernate
SQL 强类型jOOQ
连接池HikariCPDruid(需监控时)
数据库迁移FlywayLiquibase

七、缓存与 NoSQL

Redis 客户端三兄弟

选型规则

本地缓存

多级缓存

实战中常见的组合是 Caffeine(本地)+ Redis(分布式)+ DB,Spring 提供 CompositeCacheManager 抽象,但更多项目直接自己写两级查询逻辑。注意一致性:本地缓存的失效需要通过 Redis Pub/Sub 或消息广播。

MongoDB / Elasticsearch / 图数据库

选型决策

场景推荐替代
Redis 简单读写LettuceJedis
分布式锁 / 限流Redisson自己用 Lua 脚本
本地缓存Caffeine
ES 客户端Elasticsearch Java Client 8.xEasy-ES

八、消息中间件

四种主流方案的真实差异:

中间件强项弱项典型场景
Kafka超高吞吐、日志/流处理事实标准顺序消费需单分区,事务弱日志收集、大数据流、事件溯源
RocketMQ顺序消息、事务消息、定时消息海外生态不如 Kafka电商交易、金融业务、国内业务
RabbitMQ路由灵活、协议丰富(AMQP/MQTT/STOMP)吞吐相对低业务消息、任务分发
Pulsar计算与存储分离、多租户运维复杂多租户 SaaS、超大规模

国内业务 RocketMQ 占比明显高于海外,原因是顺序/事务消息这两个特性在电商和金融场景刚需,Kafka 实现起来都比较绕。

Spring 集成

流处理

选型决策

场景推荐替代
电商 / 金融业务消息RocketMQRabbitMQ
日志 / 大数据流KafkaPulsar
复杂路由 / 任务分发RabbitMQRocketMQ
实时流处理FlinkKafka Streams

九、微服务全套:注册、配置、网关、限流、追踪

国内微服务架构事实上分两派:Spring Cloud Alibaba 全家桶Spring Cloud 原生。前者占比远超后者。

注册中心

方案特点
Nacos国内主流,注册+配置一体,2026 年支持 MCP/A2A AI 注册场景
Eureka2.x 闭源后基本退场,1.x 仍可用但建议迁移
ConsulHashiCorp 生态,海外多
Zookeeper强一致性,但运维重,Kafka/Dubbo 老版本依赖

默认选 Nacos。它最近的更新已经在向 AI 时代靠拢——支持 MCP Service Management Center,兼容官方 MCP 协议,可作为 AI 模型调用的服务注册。

配置中心

方案特点
Nacos与注册中心一体化,国内默认
Apollo携程开源,权限管理细致,灰度发布强
Spring Cloud Config基于 Git,简单但功能弱

Apollo 在大公司用得多,权限模型和发布审计做得比 Nacos 细。中小团队 Nacos 一把梭即可。

网关

方案特点
Spring Cloud GatewaySpring 全家桶默认,基于 WebFlux
APISIXOpenResty 内核,性能强、插件丰富
Higress阿里开源,AI 网关方向,支持 LLM 流量管理
Kong海外主流,企业版强
Zuul已退场

Spring Cloud Gateway 仍是 Java 团队默认。但如果对性能和插件生态有要求,APISIX 是更好的选择,特别是 AI 网关场景(限流、模型路由、Token 计费),Higress 值得关注。

熔断限流

Hystrix 已正式 EOL:Netflix 2018 年 11 月就停止开发,Spring Cloud 3.1 在 2019 年 10 月移除 Hystrix Dashboard。新项目用 Hystrix 没有任何理由,存量项目应规划迁移。

替代方案:

实战推荐:

服务通信

国内微服务内部通信主流是 Dubbo 3,HTTP 透明、Triple 协议(gRPC over HTTP/2)、原生集成 Spring Cloud Alibaba。海外则更多用 gRPC-Java。

链路追踪

关键提醒:SkyWalking Java Agent 和 OpenTelemetry Java Agent 不要同时启用——两者都通过 java.lang.instrument 修改字节码,会产生 ClassCastException、重复 Span、启动崩溃等不可预测问题。要迁移就服务一个个迁,并通过 W3C TraceContext 共享上下文。

分布式事务

选型决策

场景推荐替代
注册 + 配置NacosApollo(仅配置)
网关Spring Cloud GatewayAPISIX / Higress
熔断限流(SCA 栈)SentinelResilience4j
熔断限流(原生栈)Resilience4jSentinel
内部 RPCDubbo 3gRPC
链路追踪SkyWalkingOpenTelemetry
分布式事务Seata事务消息

十、可观测性:日志、指标、追踪

可观测的三大支柱是 Logs / Metrics / Traces

日志

日志格式建议结构化 JSON,方便 ELK/Loki 采集解析。

日志采集

指标

事实标准Micrometer + Prometheus + Grafana

APM

方案特点
SkyWalking国内主流,免费开源,Java Agent 强
PinpointUI 漂亮,但生态偏弱
Elastic APM跟 ELK 一体
Datadog / New Relic海外商业,体验最好但贵

线上诊断神器:Arthas

国产之光,阿里开源的 Java 在线诊断工具。线上不重启进程,就能:

写 Java 的没用过 Arthas 是损失

选型决策

场景推荐替代
日志门面SLF4J
日志实现LogbackLog4j2(高吞吐时)
日志采集ELKLoki
指标Micrometer + Prometheus
APMSkyWalkingOpenTelemetry
线上诊断Arthas

十一、安全

Web 安全框架

实战:

JWT

常见误用:把 JWT 当 Session 用(不能主动失效)、敏感信息塞进 payload(只是 Base64,不是加密)、不验签直接信任。

OAuth2 / OIDC

如果只是接入第三方登录(GitHub、Google),Spring Security 的 oauth2-client 就够;如果要自建身份认证中心,Keycloak 是开源首选

加密

选型决策

场景推荐替代
大型企业认证Spring Security
中小项目快速接入Sa-TokenSpring Security
JWTjjwtjava-jwt
自建 IDPKeycloakSpring Authorization Server
国密算法Bouncy Castle

十二、工具类库

写 Java 几乎绕不开的轮子。

Lombok:真香与争议

实战建议:业务项目用 Lombok 提效,开源库慎用(增加用户依赖负担)。Java 16+ 的 record 关键字可以替代 @Value 不可变 DTO。

工具集三巨头

特点
Hutool国产工具集大全,BeanUtil/DateUtil/HttpUtil 一应俱全,中文文档详细
Google GuavaGoogle 出品,Collections/Caches/EventBus,质量极高
Apache Commonscommons-lang3commons-collections4commons-io,老牌经典

实战中三者共存很常见——Hutool 干快活、Guava/Commons 干稳活。

Bean 映射

新项目无脑选 MapStruct

JSON 序列化

推荐度
JacksonSpring Boot 默认,事实标准
Fastjson2性能强(中等 JSON 序列化吞吐显著优于 Fastjson1),是 Fastjson 历史漏洞之后的”重生”版本
GsonGoogle 出品,API 简单,但性能不如 Jackson
JSON-BJakarta 标准,使用少

默认 Jackson,性能敏感场景考虑 Fastjson2。Fastjson 1.x 因历史 CVE 太多不再推荐

Excel 处理

PDF / Word / 其他

选型决策

场景推荐替代
Bean 简化Lombokrecord(不可变)
Bean 映射MapStructModelMapper
JSONJacksonFastjson2
ExcelFastExcelEasyExcel / POI
工具集Hutool + Guava 共存Apache Commons

十三、测试

单元测试组合

现代默认JUnit 5 + Mockito + AssertJ

慎用

集成测试:Testcontainers

革命性工具,集成测试不再 mock,而是用真实的 Docker 容器跑数据库、Kafka、Redis、Elasticsearch:

@Container
static PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>("postgres:16");

启动一个真实 PG 容器跑测试。Spring Boot 3.1+ 提供 @ServiceConnection 自动注入连接信息,配置近乎为零。

实战警告:集成测试启动慢、CI 需要 Docker 环境,但真实数据库 vs Mock 数据库的覆盖差距巨大,绝对值得。

性能测试

E2E

选型决策

场景推荐替代
单元测试JUnit 5 + Mockito + AssertJ
集成测试TestcontainersH2 内存数据库
微基准JMH
HTTP 压测GatlingJMeter / k6
E2EPlaywright JavaSelenium

十四、调度与工作流

定时任务

方案适用
Spring @Scheduled单机简单任务,零配置
Quartz单机或集群,老牌但配置繁琐
XXL-Job分布式调度首选,2.3 万 Star,可视化控制台,中小项目默认
PowerJob第三代调度,MapReduce 执行模式、工作流编排、K8s 原生
ElasticJobApache ShardingSphere 出品,分片任务强项

实战选择:

批处理

工作流引擎

引擎特点
FlowableActiviti 团队分支,BPMN 2.0,国内主流
Camunda 8商业云原生版,Camunda 7 开源版仍在维护
Activiti老牌,社区活跃度下降
LiteFlow国产,规则引擎+流程编排,轻量

工作流引擎不要随便引入——它解决的是”业务流程经常变、需要可视化建模”的场景。如果你的业务流程稳定,直接用 Java 代码写状态机往往更清晰。

选型决策

场景推荐替代
单机定时@ScheduledQuartz
分布式调度XXL-JobPowerJob(复杂场景)
大数据 ETLSpring Batch
业务流程引擎FlowableCamunda 7
轻量编排LiteFlow

十五、AI 时代的新生态

2025 年是 Java AI 应用层补课 的关键一年。

Spring AI

核心抽象:

LangChain4j

设计哲学:Java 习惯优先——强类型、注解驱动、依赖注入、编译期检查。

Spring AI vs LangChain4j 怎么选

维度Spring AILangChain4j
框架定位Spring 生态深度集成框架无关,Spring/Quarkus 都支持
Agent 能力1.1 GA 后追齐1.3 起 Agent 一等公民
文档与社区跟着 Spring 节奏独立社区,国际活跃
适合已用 Spring Boot 的团队想用 Quarkus 或独立架构

实战建议:

MCP 与 Java AI Agent

MCP (Model Context Protocol) 是 Anthropic 提出、Spring AI 与 LangChain4j 都拥抱的协议,让 Agent 工具调用标准化。Nacos 2026 版本已经把 MCP Service Management Center 作为核心特性,预示着 AI Agent 注册发现 正在成为基础设施层的新维度。

十六、选型方法论

回到开头的问题:这一层我该选什么

三个判断维度

  1. 社区活跃度:GitHub Issue 响应时间、最近发版频率、Stack Overflow 答案数量。不是 Star 数。
  2. 公司背书:阿里 / Spring / Apache / 红帽 / 谷歌背书的项目,至少未来 3-5 年不会突然消失。
  3. 现有栈契合度:用 Spring Boot 就别硬塞 Quarkus 组件,迁移成本永远比想象大。

国产组件该不该用

该用。2026 年的事实是:

不要因为是国产就排斥,也不要因为是国产就盲信——按上面三个维度判断。

警惕”新即正义”

每隔一段时间会有新框架号称要”颠覆 Spring”——Solon、Helidon、各种 Native-first 框架……

判断方法是问自己三个问题:

90% 的情况答案是 No、No、不知道,那就继续用 Spring Boot。

关注 EOL

定期检查依赖的 EOL 状态,2026 年值得警惕的几个:

写在最后

Java 生态太庞大,没有一篇文章能讲完。这篇文章的目的不是当百科全书读,而是当地图用——遇到选型问题,翻到对应章节,看推荐和决策表,再决定要不要深入研究。

技术栈本身没有银弹,对你的团队、你的业务、你的约束最合适的选择才是好选择。

如果这篇文章让你在某次选型会议上少争论了半小时,那它就算完成了使命。


参考资料


分享到:

上一篇
Spring AI + Google ADK:打造多 Agent 并行的 AI 应用脚手架
下一篇
四色建模(事件风暴)—— 拼团项目实战笔记