🔥(史上最长更新)OpenSolon v3.8, v3.7.4, v3.6.7 宣布
导引 历时 8 年磨砺,1.7 万次代码提交,9个分仓库,几百个模块,20多万代码量, 1200 万次半年下载量 —— OpenSolon(即 Solon)正在重新定义 Java 企业级应用开发的性价比。 今日,我们正式发布 OpenSolon v3...
应用介绍
历时 8 年磨砺,1.7 万次代码提交,9个分仓库,几百个模块,20多万代码量, 1200 万次半年下载量 —— OpenSolon(即 Solon)正在从新定义 Java 企业级应用开辟的性价比。
同时支撑运行时情况(不基于 java-ee 构建,所以可以同时兼容):
- java8, java11, java17, java21, java25
今日,我们正式宣布 OpenSolon v3.8 及其 LTS 保护版本。是一次架构级的跨越:从 AI 范畴的 MCP 无状况集群支撑,到 Flow 流程引擎的回归通用化,再到对 Java 新版本(v25)的超前构造,OpenSolon 持续践行“快速、小巧、简洁”的克制美学。
导引
无论你是寻求算力性价比的极致主义者,照样正在寻找安然靠得住的国产基座,此次更新都值得你存眷。
- 【超前适配】 率先适配 Java 25,新增 ScopedValue 适配支撑
- 【AI 加强】 solon-ai 深度支撑 MCP 无状况会话集群与异步对象
- 【架构重构】 solon-flow 回归通用流程引擎,推出全新的 WorkflowService 封装;
- 【机能优化】 周全优化表达式引擎(SnEL)与缓存机能,持续保持高并发、省内存的领先优势。
OpenSolon 开源框架!(也称:Solon)
兼容变更对比表:
旧名称 新名称 解释GraphDecl
GraphSpec
图定义
GraphDecl.parseByXxx
GraphSpec.fromXxx
图定义加载
Graph.parseByXxx
Graph.fromXxx
图加载
LinkDecl
LinkSpec
连接定义
NodeDecl
NodeSpec
节点定义
Condition
ConditionDesc
前提描述
Task
TaskDesc
义务描述(避免与 workflow 的概念冲突)
FlowStatefulService
WorkflowService
工作流办事
StatefulTask
Task
义务
Operation
TaskAction
任动工作
TaskType
TaskState
义务状况
OpenSolon 是新一代,Java 企业级应用开辟框架。从零开端构建(No Java-EE),有灵活的接口规范与开放生态。采取商用友爱的 Apache 2.0 开源协定,是“杭州无耳科技有限公司”开源的根级项目,是 Java 应用开辟的生态基座(可调换美国博通公司的 Spring 生态)。
- 寻求: 快速、小巧、简洁
- 倡导: 克制、高效、开放
7年开源时光,累计代码提交1.6万次 ,近半年下载量1200万次。
- 有透明可预期的《版本宣布与经久支撑筹划(LTS)》
- 有“【社区交换】”和“【企业办事】”双重技巧支撑
今朝有几个重要的项目仓库:
代码仓库 描述 /opensolon/solon Solon ,主代码仓库 /opensolon/solon-examples Solon ,官网配套示例代码仓库 /opensolon/solon-expression Solon Expression ,代码仓库 /opensolon/solon-flow Solon Flow ,代码仓库 /opensolon/solon-ai Solon Ai ,代码仓库 /opensolon/solon-cloud Solon Cloud ,代码仓库 /opensolon/solon-admin Solon Admin ,代码仓库 /opensolon/solon-integration Solon Integration ,代码仓库 /opensolon/solon-java17 Solon Java17 适配仓库(base java17) /opensolon/solon-java25 Solon Java25 适配仓库(base java25) /opensolon/solon-gradle-plugin Solon Gradle ,插件代码仓库 /opensolon/solon-idea-plugin Solon Idea ,插件代码仓库 /opensolon/solon-vscode-plugin Solon 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 仓库弥补解释
新特点:
public class Demo { static ScopeLocal LOCAL = ScopeLocal.newInstance(); public void test(){ LOCAL.with("test", ()->{ System.out.println(LOCAL.get()); }); }}
solon-ai 仓库弥补解释
新特点展示:1.MCP 无状况会话(STREAMABLE_STATELESS)和 2.CompletableFuture 异步MCP对象
@McpServerEndpoint(channel = McpChannel.STREAMABLE_STATELESS, mcpEndpoint = "/mcp1")public class McpServerTool { @ToolMapping(description = "查询气象预告", returnDirect = true) public CompletableFuture getWeather(@Param(description = "城市地位") String location) { return CompletableFuture.completedFuture("晴,14度"); }}
传输方法对应表:(办事端与客户端,须应用对应的传输方法才可通信)
办事端 客户端 备注 STDIO STDIO SSE SSE STREAMABLE STREAMABLE STREAMABLE_STATELESS STREAMABLE 对 server 集群很友爱- STREAMABLE_STATELESS 集群,不须要 ip_hash,但“原语”变更后无法通知 client
solon-flow 仓库弥补解释
重要变更:
- 撤消“有状况”、“无状况”概念。
- solon-flow 回归通用流程引擎(分别“有状况”的概念)。
- 新增 solon-flow-workflow 为工作流性质的封装(将来可能会有 dataflow 等)。
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);
©软件著作权归作者所有。本站所有软件均来源于网络,仅供学习使用,请支持正版!
转载请注明出处: FQPY » 🔥(史上最长更新)OpenSolon v3.8, v3.7.4, v3.6.7 宣布

发表评论 取消回复