Solon v3.4.6, v3.5.4, v3.6.0-M1 发布。正式开始 LTS 计划

news/2025/9/26 14:21:45/文章来源:https://www.cnblogs.com/noear/p/19113413

Solon 框架!

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

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

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

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

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

  • java8, java11, java17, java21, java25

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

Solon 对国产算力非常友好,对 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.6.0-M1 更新说明

  • 新增 solon-server-grizzly 插件
  • 新增 solon-server-grizzly-add-webscoket 插件
  • 新增 solon-server-jetty-jakarta 插件(基于 jetty12 适配)
  • 新增 solon-server-jetty-add-jsp-jakarta 插件(基于 jetty12 适配)
  • 新增 solon-server-jetty-add-websocket-jakarta 插件(基于 jetty12 适配)
  • 调整 solon-serialization-* 弱化 ActionExecuteHandler, Render 的定制,改为 XxxxSerializer 对外定制
  • 调整 solon LogIncubator 接口迁移到内核,由内核控制加载时机(权重提高)
  • 调整 solon EntityConverter 接口(替代 Render 和 ActionExecuteHandler 接口)
  • 引入 slf4j-api 替代 solon 内的 LogUtil(减少中转代码)
  • 引入 solon-expression 替代 solon 内的模板表达式工具(仍可使用)
  • 添加 solon Condition:onExpression(采用 SnEL 表达式)用于替代 onProperty(标为弃用)
  • 添加 solon SnelUtil(基于 SnEL 且兼容旧的 TmplUtil) 替代 TmplUtil(标为弃用)//如果有 # 则为新表达式
  • 添加 solon-mvc List<UploadedFile> 注入支持(用 UploadedFile[] 性能更好)
  • 添加 solon-server server.request.fileSizeThreshold 配置支持
  • 添加 solon converters,serializers,renders,factories,chains(简化名自:converterManager,serializerManager,renderManager,factoryManager,chainManager)
  • snakeyaml 升为 2.5
  • lombok 升为 1.18.42
  • jansi 升为 2.4.2
  • guava 升为 33.4.8-jre
  • log4j 升为 2.25.1
  • fury 升为 0.10.3
  • reactor-core 升为 3.7.4
  • graalvm.buildtools 升为 0.11.0

示例:

@Managed
public class SerializerDemo {//ps: 这前需要使用 Fastjson2RenderFactory, Fastjson2ActionExecutor 两个对象,且表意不清晰 //(仍可使用)@Managedpublic void config(Fastjson2StringSerializer serializer) {//序列化(输出用)serializer.addEncoder(Date.class, s -> s.getTime());serializer.addEncoder(Date.class, (out, obj, o1, type, i) -> {out.writeInt64(((Date) obj).getTime());});serializer.getSerializeConfig().addFeatures(JSONWriter.Feature.WriteMapNullValue); //添加特性serializer.getSerializeConfig().removeFeatures(JSONWriter.Feature.BrowserCompatible); //移除特性serializer.getSerializeConfig().setFeatures(JSONWriter.Feature.BrowserCompatible); //重设特性//反序列化(收接用)serializer.getDeserializeConfig().addFeatures(JSONReader.Feature.Base64StringAsByteArray);}
}@Managed
public class ConditionDemo(){//ps: 之前是用 onProperty(功能有限,不够体系化) //(仍可使用)@Condition(onExpression = "${demo.level:1} == '1'") //SnEL 求值表达式@Managedpublic void ifDemoLevel1ThenRun(){System.out.println("hi!");}
}@Managed
public class SnelDemo {//ps: 之前基于 TmplUtil 实现(功能有限,不够体系化) //(仍可使用)@Cache(key = "oath_#{code}", seconds = 10) //SnEL 模板表达式(通过 SnelUtil 实现新旧兼容)public Oauth queryInfoByCode(String code) {return new Oauth(code, LocalDateTime.now());}@CachePut(keys = "oath_#{result.code}") //(result 为返回结果)public Oauth updateInfo(Oauth oauth) {return oauth;}@CacheRemove(keys = "oath_#{oauth.code}")public void removeInfo(Oauth oauth) {}
}

v3.5.4 更新说明

  • 优化 solon-test @SolonTest 支持非 solon 的 main 程序单测启动
  • 优化 solon-rx 确保 SimpleSubscriber:doOnComplete 只被运行一次(之前可能会被外部触发多次)
  • 优化 solon-rx SimpleSubscriber 改为流控模式(只请求1,之前请求 max)//所有相关的都要测试
  • 优化 solon-net-httputils 确保 TextStreamUtil:onSseStreamRequestDo 只会有一次触发 onComplete
  • 优化 solon-web-rx RxSubscriberImpl 改为流控模式(只请求1,之前请求 max)//所有相关的都要测试
  • 优化 solon-net-httputils sse 与背压处理的兼容性
  • 修复 solon-net-httputils JdkHttpResponse:contentEncoding 不能获取 charset 的问题(并更名为 contentCharset,原名标为弃用)
  • 修复 solon-docs-openapi2 ApiModel 中使用 UploadedFile 类型是解析报错的问题

v3.4.6 更新说明

  • 优化 solon-test @SolonTest 支持非 solon 的 main 程序单测启动
  • 优化 solon-rx 确保 SimpleSubscriber:doOnComplete 只被运行一次(之前可能会被外部触发多次)
  • 优化 solon-rx SimpleSubscriber 改为流控模式(只请求1,之前请求 max)//所有相关的都要测试
  • 优化 solon-net-httputils 确保 TextStreamUtil:onSseStreamRequestDo 只会有一次触发 onComplete
  • 优化 solon-web-rx RxSubscriberImpl 改为流控模式(只请求1,之前请求 max)//所有相关的都要测试
  • 优化 solon-net-httputils sse 与背压处理的兼容性
  • 修复 solon-net-httputils JdkHttpResponse:contentEncoding 不能获取 charset 的问题(并更名为 contentCharset,原名标为弃用)
  • 修复 solon-docs-openapi2 ApiModel 中使用 UploadedFile 类型是解析报错的问题

项目仓库地址?

  • gitee:https://gitee.com/opensolon/solon
  • gitcode: https://gitcode.com/opensolon/solon
  • github:https://github.com/opensolon/solon

官网?

  • https://solon.noear.org

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/918378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

串口通信、阻塞与非阻塞、qt

【问题】当自己码完收发代码之后,确收、发不成功串口数据。 【解题思路】在确保代码无误的情况下,很可能是阻塞与非阻塞通信的区别。所以,需要分别尝试实现阻塞与非阻塞的方式进行测试。 【深层次原因理解】拿qt工程…

网站建设运营案例怎样做app网站建设

promise请求数据用法 Promise简介 Promise 是异步编程的一种解决方案&#xff0c;比传统的解决方案–回调函数和事件&#xff0d;&#xff0d;更合理和更强大。ES6将其写进了语言标准&#xff0c;统一了语法&#xff0c;里面保存着某个未来才回结束的事件(通常是一个异步操作&a…

织梦网站底端的怎么删除满足seo需求的网站

提示&#xff1a;今日是2024年的6月30日&#xff0c;未来的你看到这篇文章&#xff0c;希望你依旧快乐 文章目录 前言 首先在这里前缀部分我就不做要求了,比如说登录信息什么的 数据库表格 这里实现点赞功能&#xff0c;主要是围绕论坛项目完成的 user_info代表用户信息表 for…

破解 Java 系统 AI 化难题:JBoltAI 框架自带 RAG、Function Calling 核心功能

破解 Java 系统 AI 化难题:JBoltAI 框架自带 RAG、Function Calling 核心功能在 AI 技术进入企业服务的当下,Java 作为承载企业核心业务的 “基石语言”,却面临着一场尴尬的 “适配断层”:多数 Java 系统仍停留在传…

CF1706E Qpwoeirut and Vertices

一个较为简单的题目,做起来比较舒服。 题目 有 \(N\) 个点 \(M\) 条边。 有 \(Q\) 个询问,每个询问有 \(L,R\)。 询问 \(L\le a \le b \le R\) 最少需要前几条边才能联通。 都是 \(1e5\) 级别。 做法 我们把第 \(i\)…

聚焦 Java AI 开发:JBoltAI 框架支持多模型适配,打造智能应用

聚焦 Java AI 开发:JBoltAI 框架支持多模型适配,打造智能应用在 AI 技术加速融入企业业务的当下,Java 技术团队却面临着一道 “两难困境”:想接入大模型提升系统智能度,却要为不同厂商的接口重复封装代码;想改造…

企业级 AI 应用开发首选!JBoltAI 框架适配 Java 技术栈,稳定可靠

企业级 AI 应用开发首选!JBoltAI 框架适配 Java 技术栈,稳定可靠一、Java 企业 AI 转型的 “现实困境” 与 JBoltAI 的破局价值Java 技术团队却面临着一道 “转型鸿沟”:想接入大模型能力,却因工程师自主封装接口的…

电器网站建设流程网站建设公司好发信息网

摘要(From AI): 这篇笔记全面介绍了 FreeRTOS 软件定时器的核心概念和使用方法&#xff0c;包括定时器的创建、管理、常用 API 和辅助函数&#xff0c;并通过示例代码演示了如何启动、重置和更改定时器的周期。它强调了软件定时器的灵活性、平台无关性以及与硬件定时器的对比 …

AIGS架构革命:JBoltAI如何重塑Java企业的AI服务生态

AIGS架构革命:JBoltAI如何重塑Java企业的AI服务生态AI数智化转型的十字路口2025年,人工智能产业迎来三维共振的关键节点。根据中国信通院发布的2025人工智能十大关键词,“基础超级模型”、“自主性更强的智能体” 和…

RAG技术赋能企业数智化转型:JBoltAI如何破解AI落地“最后一公里”难题

RAG技术赋能企业数智化转型:JBoltAI如何破解AI落地“最后一公里”难题01. 人工智能时代的产业变革与挑战2025年,人工智能不再是遥远的概念,而是推动产业变革的核心动力。然而,对于大量传统企业而言,AI转型之路并不…

Java 团队转型 AI 开发难?JBoltAI 框架帮你节省 4-6 个月研发成本

Java 团队转型 AI 开发难?JBoltAI 框架帮你节省 4-6 个月研发成本当隔壁公司的 Java 团队已经用 AI 自动生成报表、优化客户咨询响应时,你的团队是不是还在为 “怎么把大模型接入现有 Java 系统” 头疼?AI 浪潮下,…

Stylus For Chrome下载地址

Stylus For Chrome下载地址Stylus For Chrome 下载地址:https://github.com/openstyles/stylus/releases Stylus是一款开源的浏览器样式管理器插件,是用户界面编辑器和管理器。 其目标是保持和改进原作者的版本,同时…

IntelliJ IDEA 查找和替换使用指南 - 详解

IntelliJ IDEA 查找和替换使用指南 - 详解2025-09-26 14:10 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bloc…

做个网站需要哪些东西国外做gif的网站

文章目录一、在线安装1、替换网易yum源2、清理缓存3、下载rpm文件4、安装MySQL数据库二、本地安装1、上传MySQL安装包2、安装依赖的程序包3、卸载mariadb程序包4、安装MySQL程序包5、修改MySQL目录权限6、初始化MySQL三、启动MySQL1.1、在线安装方式启动MySQL1.2、本地安装方式…

Prometheus-01-框架架构与核心概念详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

麒麟 Linux|深入解析 Linux 文件系统架构:理念、结构与工作机制 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

别等碳超支才慌!EMS 像 “碳导航”,提前预警能耗 “堵点”,双碳路上不绕路

在 “双碳” 目标推进的当下,不少企业都面临着一个棘手问题:往往要等到月度、季度碳排放核算结果出来,才发现碳排放量超标,此时再紧急整改,不仅要承担罚款风险,还可能打乱生产节奏,陷入 “亡羊补牢” 的被动局面…

哈尔滨网站seo公司农业信息网站建设

正文ASP.NET Core MVC 2.1 特意为构建 HTTP API 提供了一些小特性&#xff0c;今天主角就是 ApiControllerAttribute。0. ApiControllerAttribute 继承自 ControllerAttributeASP.NET Core MVC 已经有了ControllerAttribute&#xff0c;这个用来标注一个类型是否是Controller。…

绩效考核表 网站建设建设部网站城市规划资质标准

为什么有越来越多的用户选择使用小程序&#xff1f;跟“高大上”的APP相比&#xff0c;小程序不仅可以减少下载安装的复杂流程&#xff0c;还具备操作便捷、沉淀私域数据的优势。蚓链分销小程序具备裂变二维码、实时分佣、分销身份升级、层级分佣、商品个性化佣金设定等功能&am…

网站文件夹名中文网址和中文域名区别

参考&#xff1a;基于知识库和 LLM 的问答系统经验分享 - 知乎 (zhihu.com) 一、基于LLM的问答系统架构 比较常见的开源 LLM 的问答系统都会遵循下图这种结构去进行设计&#xff1a; 加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本…