🔥(史上最长更新)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 适配)
  • 添加 solon ScopeLocal 接口(用于 ThreadLocal 到 ScopedValue 兼容)
  • 添加 solon Solon.start(Class, MultiMap) 办法
  • 添加 solon ThreadsUtil:newVirtualThreadFactory 办法
  • 添加 solon ContextHolder:currentWith 办法,替代 currentSet(标为弃用)
  • 添加 solon Controller:remoting 属性(可替代 @Remoting 注解)
  • 添加 solon 非依附关系的 bean 异步初始化(@Init(async=true)
  • 添加 solon Stringable 接口
  • 添加 solon 'env.use' 设备支撑(相对 'env',它与 'env.on' 协作时不会冲突)
  • 添加 solon 'server.session.cookieHttpOnly' 设备支撑(默认为 true)
  • 添加 solon Context.cookieSet(...,httpOnly) 办法
  • 添加 solon-test HttpTester protocol 参数支撑(便利 https 或 http 切换测试)
  • 添加 solon-serialization JsonPropsUtil2.dateAsFormat 添加 java.sql.Timestamp 类型支撑
  • 添加 solon-config-yaml 依附 solon-config-snack4 避免单个引入时忘掉落
  • 添加 solon-net-httputils HttpSslSupplierAny(便利无穷制的 ssl 应用,但不建议)
  • 添加 solon-web-rx RxEntity 类(便利对接 mcp-sdk)
  • 添加 solon-server 会话状况的 cookie httpOnly 设备(默认为 false)
  • 添加 solon-server-tomcat ssl 适配支撑
  • 添加 solon-security-validation ValidatorFailureHandlerI18n 支撑验证注解的国际化处理 添加 solon-expression SnelParser 类,为 TemplateParser 和 EvaluateParser 供给进出口和占位符设备
  • 添加 solon-flow FlowContext:lastNode() 办法(最后一个运行的节点)
  • 添加 solon-flow FlowContext:lastNodeId() 办法(最后一个运行的节点Id)
  • 添加 solon-flow Node.getMetaAs, Link.getMetaAs 办法
  • 添加 solon-flow NodeSpec:linkRemove 办法(加强修改才能)
  • 添加 solon-flow Graph:create(id,title,consumer) 办法
  • 添加 solon-flow Graph:copy(graph,consumer) 办法(便利复制后修改)
  • 添加 solon-flow GraphSpec:getNode(id) 办法
  • 添加 solon-flow GraphSpec:addLoop(id) 办法替代 addLooping(后者标为弃用)
  • 添加 solon-flow FlowEngine:eval(Graph, ..) 系列办法
  • 添加 solon-ai FunctionPrompt:handleAsync(用于 mcp-server 异步支撑)
  • 添加 solon-ai FunctionResource:handleAsync(用于 mcp-server 异步支撑)
  • 添加 solon-ai FunctionTool:handleAsync(用于 mcp-server 异步支撑)
  • 添加 solon-ai-core ChatMessage:toNdjson,fromNdjson 办法(替代 ChatSession:toNdjson, loadNdjson),新办法机制上更自由
  • 添加 solon-ai-core ToolSchemaUtil.jsonSchema Publisher 泛型支撑
  • 添加 solon-ai-mcp mcp-java-sdk v0.17 适配(支撑 2025-06-18 版本协定)
  • 添加 solon-ai-mcp mcp-server 异步支撑
  • 添加 solon-ai-mcp mcp-server streamable_stateless 支撑
  • 添加 solon-ai-mcp Tool,Resource,Prompt 对 org.reactivestreams.Publisher 异步返回支撑
  • 添加 solon-ai-mcp McpServerHost 办事宿主接口,用于隔离有状况与无状况办事
  • 添加 solon-ai-mcp McpChannel.STREAMABLE_STATELESS (办事端)无状况会话
  • 添加 solon-ai-mcp McpClientProvider:customize 办法(用于扩大 roots, sampling 等)
  • 添加 solon-ai-mcp mcpServer McpAsyncServerExchange 注入支撑(用于扩大 roots, sampling 等)
  • 优化 solon api-version 版本匹配
  • 优化 solon SnelUtil snel 表达式缺参数时异常提示(避免配错名字)
  • 优化 solon ParamWrap:getName 改用 ParamSpec.getAlias。加 '@Param(name=xxx)' 注解可生效
  • 优化 solon-cache CacheService 适配没有 _cacheKeyHead 设备时,则不加前缀
  • 优化 solon-net-httputils SslContextBuilder
  • 优化 solon-expression EvaluateParser 支撑定义占位符(可支撑 {xxx} 表达式)
  • 优化 solon-expression TemplateParser 支撑定义占位符(可支撑 {xxx} 表达式)
  • 优化 solon-expression LRUCache 机能(进步缓存机能)
  • 优化 solon-ai-dialect-openai claude 兼容性
  • 优化 solon-ai-mcp mcp StreamableHttp 模式下 办事正派常返回时 客户端异常日记打印的情况* 优化 solon-flow eval(Node startNode) 处理,改为从 root 开端恢复到 start 再开端履行(恢复过程中,不会履行义务)
  • 优化 solon-flow FlowEngine:eval(Node startNode) 处理,改为从 root 开端恢复到 start 再开端履行(恢复过程中,不会履行义务)
  • 调剂 nami NamiAttachment 切换为 ScopeLocal 接话柄现
  • 调剂 solon ContextHolder 切换为 ScopeLocal 接话柄现
  • 调剂 solon RunHolder:parallelExecutor 改为 newFixedThreadPool
  • 调剂 solon-data TranExecutorDefault 切换为 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-flow Activity 节点流出改为自由模式(可以多线流出:无前提直接流出,有前提检测后流出)
  • 调剂 solon-flow Node.getMeta 办法返回改为 Object 类型(并新增 getMetaAs)
  • 调剂 solon-flow Evaluation:runTest 改为 runCondition
  • 调剂 solon-flow FlowContext:incrAdd,incrGet 标为弃用(高低文数据为型只能由输入侧决定)
  • 调剂 solon-flow Condition 改名为 ConditionDesc
  • 调剂 solon-flow Task 改名为 ConditionDesc
  • 调剂 solon-flow XxxDecl 定名风格改为 XxxSpec
  • 调剂 solon-flow GraphDecl.parseByXxx 定名风格改为 GraphSpec.fromXxx
  • 调剂 solon-flow Graph.parseByXxx 定名风格改为 Graph.fromXxx
  • 调剂 solon-ai-mcp getResourceTemplates、getResources 不再共享注册
  • 调剂 solon-ai-mcp McpServerManager 内部接口改名为 McpPrimitivesRegistry (MCP 原语注册器)
  • 调剂 solon-ai-mcp McpClientProvider 默认不启居心跳机制(跟着 mcp-sdk 的成熟,server 都有心跳机制了)
  • 修复 solon IndexFiles 路径表达式的兼容问题(添加转换 *->@:->!
  • 修复 solon ParamWrap:getName 加 '@Param(name=xxx)' 注解时没有生效的问题(v3.7.0 出现)。对 solon-cache 会有影响
  • 修复 solon-web-vertx VxWebContext._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);

 

点赞(0) 打赏

立即下载

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部