news 2026/7/2 4:45:29

超越 SpringBoot 4.0了吗?OpenSolon v3.8, v3.7.4, v3.6.7 发布

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
超越 SpringBoot 4.0了吗?OpenSolon v3.8, v3.7.4, v3.6.7 发布

导引

(听说隔壁的 Spring 7 和 SpringBoot 4 最近出了几个大 Bug了?!)历时 8 年磨砺,1.7 万次代码提交,9个分仓库,几百个模块,20多万代码量, 1200 万次半年下载量 —— OpenSolon(即 Solon)正在重新定义 Java 企业级应用开发的性价比。

今日,我们正式发布 OpenSolon v3.8 及其 LTS 维护版本。是一次架构级的跨越:从 AI 领域的 MCP 无状态集群支持,到 Flow 流程引擎的回归通用化,再到对 Java 新版本(v25)的超前布局,OpenSolon 持续践行“快速、小巧、简洁”的克制美学。

无论你是追求算力性价比的极致主义者,还是正在寻找安全可靠的国产基座,这次更新都值得你关注。

  • 【超前适配】 率先适配 Java 25,新增 ScopedValue 适配支持
  • 【AI 增强】 solon-ai 深度支持 MCP 无状态会话集群与异步工具
  • 【架构重构】 solon-flow 回归通用流程引擎,推出全新的 WorkflowService 封装;
  • 【性能优化】 全面优化表达式引擎(SnEL)与缓存性能,持续保持高并发、省内存的领先优势。

OpenSolon 开源框架!(也称:Solon)

OpenSolon 是新一代,Java 企业级应用开发框架。从零开始构建(No Java-EE),有灵活的接口规范与开放生态。采用商用友好的 Apache 2.0 开源协议,是“杭州无耳科技有限公司”开源的根级项目,是 Java 应用开发的生态基座(可替换美国博通公司的 Spring 生态)。

  • 追求: 快速、小巧、简洁
  • 提倡: 克制、高效、开放

7年开源时间,累计代码提交1.6万次 ,近半年下载量1200万次。

  • 有透明可预期的《版本发布与长期支持计划(LTS)》
  • 有“【社区交流】”和“【企业服务】”双重技术支持

同时支持运行时环境(不基于 java-ee 构建,所以可以同时兼容):

  • java8, java11, java17, java21, java25

目前有几个主要的项目仓库:

代码仓库描述
/opensolon/solonSolon ,主代码仓库
/opensolon/solon-examplesSolon ,官网配套示例代码仓库
/opensolon/solon-expressionSolon Expression ,代码仓库
/opensolon/solon-flowSolon Flow ,代码仓库
/opensolon/solon-aiSolon Ai ,代码仓库
/opensolon/solon-cloudSolon Cloud ,代码仓库
/opensolon/solon-adminSolon Admin ,代码仓库
/opensolon/solon-integrationSolon Integration ,代码仓库
/opensolon/solon-java17Solon Java17 适配仓库(base java17)
/opensolon/solon-java25Solon Java25 适配仓库(base java25)
/opensolon/solon-gradle-pluginSolon Gradle ,插件代码仓库
/opensolon/solon-idea-pluginSolon Idea ,插件代码仓库
/opensolon/solon-vscode-pluginSolon VsCode ,插件代码仓库

有什么特点(相对 Java Spring 方案)?

OpenSolon 对国产算力非常友好,对 cpu 和 memory 的需求远低于同类方案。

特点描述
更高的计算性价比并发高 700%;内存省 50%
更快的开发效率代码少;入门简单;启动(或调试重启)快 10倍
更好的生产与部署体验打包小 90%
更大的兼容范围非 java-ee 架构;同时支持 java8 ~ java25,graalvm native image

最新的 techempower (第三方知名测试平台)测试数据:

  • https://www.techempower.com/benchmarks/#hw=ph&test=json§ion=data-r23
  • https://www.techempower.com/benchmarks/#hw=ph&test=plaintext§ion=data-r23

项目架构示意图(全场景应用开发支持)

v3.8.0 更新说明

  • 插件solon-flow第六次预览
  • 新增solon-flow-workflow插件(替代 FlowStatefulService)
  • 新增solon-java25仓库(提供 ScopedValue 适配)
  • 添加solonScopeLocal 接口(用于 ThreadLocal 到 ScopedValue 兼容)
  • 添加solonSolon.start(Class, MultiMap) 方法
  • 添加solonThreadsUtil:newVirtualThreadFactory 方法
  • 添加solonContextHolder:currentWith 方法,替代 currentSet(标为弃用)
  • 添加solonController:remoting 属性(可替代 @Remoting 注解)
  • 添加solon非依赖关系的 bean 异步初始化(@Init(async=true)
  • 添加solonStringable 接口
  • 添加solon'env.use' 配置支持(相对 'env',它与 'env.on' 协作时不会冲突)
  • 添加solon'server.session.cookieHttpOnly' 配置支持(默认为 true)
  • 添加solonContext.cookieSet(...,httpOnly) 方法
  • 添加solon-testHttpTester protocol 参数支持(方便 https 或 http 切换测试)
  • 添加solon-serializationJsonPropsUtil2.dateAsFormat 添加 java.sql.Timestamp 类型支持
  • 添加solon-config-yaml依赖 solon-config-snack4 避免单个引入时忘掉
  • 添加solon-net-httputilsHttpSslSupplierAny(方便无限制的 ssl 使用,但不建议)
  • 添加solon-web-rxRxEntity 类(方便对接 mcp-sdk)
  • 添加solon-server会话状态的 cookie httpOnly 配置(默认为 false)
  • 添加solon-server-tomcatssl 适配支持
  • 添加solon-security-validationValidatorFailureHandlerI18n 支持验证注解的国际化处理
    添加solon-expressionSnelParser 类,为 TemplateParser 和 EvaluateParser 提供出入口和占位符配置
  • 添加solon-flowFlowContext:lastNode() 方法(最后一个运行的节点)
  • 添加solon-flowFlowContext:lastNodeId() 方法(最后一个运行的节点Id)
  • 添加solon-flowNode.getMetaAs, Link.getMetaAs 方法
  • 添加solon-flowNodeSpec:linkRemove 方法(增强修改能力)
  • 添加solon-flowGraph:create(id,title,consumer) 方法
  • 添加solon-flowGraph:copy(graph,consumer) 方法(方便复制后修改)
  • 添加solon-flowGraphSpec:getNode(id) 方法
  • 添加solon-flowGraphSpec:addLoop(id) 方法替代 addLooping(后者标为弃用)
  • 添加solon-flowFlowEngine:eval(Graph, ..) 系列方法
  • 添加solon-aiFunctionPrompt:handleAsync(用于 mcp-server 异步支持)
  • 添加solon-aiFunctionResource:handleAsync(用于 mcp-server 异步支持)
  • 添加solon-aiFunctionTool:handleAsync(用于 mcp-server 异步支持)
  • 添加solon-ai-coreChatMessage:toNdjson,fromNdjson 方法(替代 ChatSession:toNdjson, loadNdjson),新方法机制上更自由
  • 添加solon-ai-coreToolSchemaUtil.jsonSchema Publisher 泛型支持
  • 添加solon-ai-mcpmcp-java-sdk v0.17 适配(支持 2025-06-18 版本协议)
  • 添加solon-ai-mcpmcp-server 异步支持
  • 添加solon-ai-mcpmcp-server streamable_stateless 支持
  • 添加solon-ai-mcpTool,Resource,Prompt 对 org.reactivestreams.Publisher 异步返回支持
  • 添加solon-ai-mcpMcpServerHost 服务宿主接口,用于隔离有状态与无状态服务
  • 添加solon-ai-mcpMcpChannel.STREAMABLE_STATELESS (服务端)无状态会话
  • 添加solon-ai-mcpMcpClientProvider:customize 方法(用于扩展 roots, sampling 等)
  • 添加solon-ai-mcpmcpServer McpAsyncServerExchange 注入支持(用于扩展 roots, sampling 等)
  • 优化solonapi-version 版本匹配
  • 优化solonSnelUtil snel 表达式缺参数时异常提示(避免配错名字)
  • 优化solonParamWrap:getName 改用 ParamSpec.getAlias。加 '@Param(name=xxx)' 注解可生效
  • 优化solon-cacheCacheService 适配没有 _cacheKeyHead 配置时,则不加前缀
  • 优化solon-net-httputilsSslContextBuilder
  • 优化solon-expressionEvaluateParser 支持定义占位符(可支持{xxx}表达式)
  • 优化solon-expressionTemplateParser 支持定义占位符(可支持{xxx}表达式)
  • 优化solon-expressionLRUCache 性能(提高缓存性能)
  • 优化solon-ai-dialect-openaiclaude 兼容性
  • 优化solon-ai-mcp mcpStreamableHttp 模式下 服务端正常返回时 客户端异常日志打印的情况* 优化solon-floweval(Node startNode) 处理,改为从 root 开始恢复到 start 再开始执行(恢复过程中,不会执行任务)
  • 优化solon-flowFlowEngine:eval(Node startNode) 处理,改为从 root 开始恢复到 start 再开始执行(恢复过程中,不会执行任务)
  • 调整namiNamiAttachment 切换为 ScopeLocal 接口实现
  • 调整solonContextHolder 切换为 ScopeLocal 接口实现
  • 调整solonRunHolder:parallelExecutor 改为 newFixedThreadPool
  • 调整solon-dataTranExecutorDefault 切换为 ScopeLocal 接口实现
  • 调整local-solon-cloud-plugin的 config 和 i18n 服务,如果没有 group 配置,则文件不带 group 前缀(之前默认给了 DEFAULT_GROUP 组名,显得复杂)
  • 调整rocketmq-solon-clouud-plugin的适配,事件属性不再加 '!' (并兼容旧格式)
  • 调整aliyun-ons-solon-clouud-plugin的适配,事件属性不再加 '!' (并兼容旧格式)
  • 调整rocketmq5-solon-clouud-plugin的适配,事件属性不再加 '!' (并兼容旧格式)。添加 sql92 过滤支持
  • 调整solon-flow移除 Activity 节点预览属性 "$imode" 和 "$omode"
  • 调整solon-flowActivity 节点流出改为自由模式(可以多线流出:无条件直接流出,有条件检测后流出)
  • 调整solon-flowNode.getMeta 方法返回改为 Object 类型(并新增 getMetaAs)
  • 调整solon-flowEvaluation:runTest 改为 runCondition
  • 调整solon-flowFlowContext:incrAdd,incrGet 标为弃用(上下文数据为型只能由输入侧决定)
  • 调整solon-flowCondition 更名为 ConditionDesc
  • 调整solon-flowTask 更名为 ConditionDesc
  • 调整solon-flowXxxDecl 命名风格改为 XxxSpec
  • 调整solon-flowGraphDecl.parseByXxx 命名风格改为 GraphSpec.fromXxx
  • 调整solon-flowGraph.parseByXxx 命名风格改为 Graph.fromXxx
  • 调整solon-ai-mcpgetResourceTemplates、getResources 不再共享注册
  • 调整solon-ai-mcpMcpServerManager 内部接口更名为 McpPrimitivesRegistry (MCP 原语注册器)
  • 调整solon-ai-mcpMcpClientProvider 默认不启用心跳机制(随着 mcp-sdk 的成熟,server 都有心跳机制了)
  • 修复solonIndexFiles 路径表达式的兼容问题(添加转换*->@:->!
  • 修复solonParamWrap:getName 加 '@Param(name=xxx)' 注解时没有生效的问题(v3.7.0 出现)。对 solon-cache 会有影响
  • 修复solon-web-vertxVxWebContext._requestBody 如果为 null 文件上传时会出错的问题
  • 修复solon-docs-openapi2返回类型中泛型失效的问题(v3.7.0 出现)
  • snack4 升为 4.0.20
  • jackson 升为 2.19.2
  • liquor 升为 1.6.6
  • asm 升为 9.9
solon 仓库补充说明

新特性:

/* by yours.tools - online tools website : yours.tools/zh/chameta.html */ public class Demo { static ScopeLocal<String> LOCAL = ScopeLocal.newInstance(); public void test(){ LOCAL.with("test", ()->{ System.out.println(LOCAL.get()); }); } }
solon-ai 仓库补充说明

新特性展示:1.MCP 无状态会话(STREAMABLE_STATELESS)和 2.CompletableFuture 异步MCP工具

/* by yours.tools - online tools website : yours.tools/zh/chameta.html */ @McpServerEndpoint(channel = McpChannel.STREAMABLE_STATELESS, mcpEndpoint = "/mcp1") public class McpServerTool { @ToolMapping(description = "查询天气预报", returnDirect = true) public CompletableFuture<String> getWeather(@Param(description = "城市位置") String location) { return CompletableFuture.completedFuture("晴,14度"); } }

传输方式对应表:(服务端与客户端,须使用对应的传输方式才可通讯)

服务端客户端备注
STDIOSTDIO
SSESSE
STREAMABLESTREAMABLE
STREAMABLE_STATELESSSTREAMABLE对 server 集群很友好
  • STREAMABLE_STATELESS 集群,不需要 ip_hash,但“原语”变化后无法通知 client
solon-flow 仓库补充说明

重要变化:

  • 取消“有状态”、“无状态”概念。
  • solon-flow 回归通用流程引擎(分离“有状态”的概念)。
  • 新增 solon-flow-workflow 为工作流性质的封装(未来可能会有 dataflow 等)。

兼容变化对照表:

旧名称新名称说明
GraphDeclGraphSpec图定义
GraphDecl.parseByXxxGraphSpec.fromXxx图定义加载
Graph.parseByXxxGraph.fromXxx图加载
LinkDeclLinkSpec连接定义
NodeDeclNodeSpec节点定义
ConditionConditionDesc条件描述
TaskTaskDesc任务描述(避免与 workflow 的概念冲突)
FlowStatefulServiceWorkflowService工作流服务
StatefulTaskTask任务
OperationTaskAction任动工作
TaskTypeTaskState任务状态

FlowStatefulService 到 WorkflowService 的接口变化对照表:

旧名称新名称说明
postOperation(..)postTask(..)提交任务
postOperationIfWaiting(..)postTaskIfWaiting(..)提交任务
evel(..)/执行
stepForward(..)/单步前进
stepBack(..)/单步后退
/getState(..)获取状态

新特性预览:Graph 硬编码方式(及修改能力增强)

//硬编码 Graph graph = Graph.create("demo1", "示例", spec -> { spec.addStart("start").title("开始").linkAdd("01"); spec.addActivity("n1").task("@AaMetaProcessCom").linkAdd("end"); spec.addEnd("end").title("结束"); }); //修改 Graph graphNew = Graph.copy(graph, spec -> { spec.getNode("n1").linkRemove("end").linkAdd("n2"); //移掉 n1 连接;改为 n2 连接 spec.addActivity("n2").linkAdd("end"); });

新特性预览:FlowContext:lastNodeId (计算的中断与恢复)。参考:https://solon.noear.org/article/1246

flowEngine.eval(graph, context.lastNodeId(), context); //...(从上一个节点开始执行) flowEngine.eval(graph, context.lastNodeId(), context);

新特性预览:WorkflowService(替代 FlowStatefulService)

WorkflowService workflow = WorkflowService.of(engine, WorkflowDriver.builder() .stateController(new ActorStateController()) .stateRepository(new InMemoryStateRepository()) .build()); //1. 取出任务 Task task = workflow.getTask(graph, context); //2. 提交任务 workflow.postTask(task.getNode(), TaskAction.FORWARD, context);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 23:43:08

终极指南:如何使用clawPDF这款免费开源PDF转换工具

终极指南&#xff1a;如何使用clawPDF这款免费开源PDF转换工具 【免费下载链接】clawPDF Open Source Virtual (Network) Printer for Windows that allows you to create PDFs, OCR text, and print images, with advanced features usually available only in enterprise sol…

作者头像 李华
网站建设 2026/7/1 23:44:55

6款免费AI论文生成器实测:一键出初稿,写论文效率飙升200%!

别再为写论文熬夜秃头了&#xff01;这6款免费AI工具&#xff0c;让你彻底告别写作焦虑。 在当今快节奏的学术环境中&#xff0c;效率就是生命线。无论是被Deadline追赶的大学生&#xff0c;还是追求高质量产出的科研人员&#xff0c;如何快速、高效地完成一篇结构严谨、内容专…

作者头像 李华
网站建设 2026/6/15 9:44:42

Dify平台如何优化RAG系统的检索与生成效率?

Dify平台如何优化RAG系统的检索与生成效率&#xff1f; 在企业级AI应用日益普及的今天&#xff0c;一个现实问题摆在面前&#xff1a;我们有了强大的大语言模型&#xff08;LLM&#xff09;&#xff0c;但它们“知道”的往往是训练数据截止前的公开信息。当用户问出“公司今年的…

作者头像 李华
网站建设 2026/7/1 19:18:31

实战精通Mermaid:2025最实用的文本图表解决方案

实战精通Mermaid&#xff1a;2025最实用的文本图表解决方案 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器&#xff0c;支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程图的开…

作者头像 李华
网站建设 2026/6/25 23:28:27

IINA视频播放器:5个简单步骤让你的Mac观影体验焕然一新

IINA视频播放器&#xff1a;5个简单步骤让你的Mac观影体验焕然一新 【免费下载链接】iina 项目地址: https://gitcode.com/gh_mirrors/iin/iina 还在为Mac上的视频播放器功能单一、界面老旧而烦恼吗&#xff1f;IINA作为macOS平台上最现代的免费视频播放器&#xff0c;…

作者头像 李华
网站建设 2026/7/1 18:30:11

终极ExoPlayer快速上手完整教程:从零开始构建专业媒体播放器

终极ExoPlayer快速上手完整教程&#xff1a;从零开始构建专业媒体播放器 【免费下载链接】ExoPlayer 项目地址: https://gitcode.com/gh_mirrors/ex/ExoPlayer Google ExoPlayer是一个专为Android平台设计的强大媒体播放库&#xff0c;提供了远超原生MediaPlayer的灵活…

作者头像 李华