Solon for JDK 21,虚拟线程逆天!!!


数据技术都能四世同堂,凭什么开发 30 岁就要被干掉?

本次更新的一个重点:完成 JDK21 编译测试和功能单元测试。

JDK 21 虚拟线程?

在IO密集型项目中,效果很猛!有一种:天哪天哪天哪。。。的感觉

@SolonMain
public class App {
public static void main(String[] args) {
Solon.start(App.class, args, app->{
app.onEvent(HttpServerConfigure.class, e->{
e.setExecutor(Executors.newVirtualThreadPerTaskExecutor());
});
});
}
}

Solon 是什么框架?

Java 生态级应用开发框架。从零开始构建,有自己的标准规范与开放生态(历时五年,具备全球第二级别的生态规模)。与其他框架相比,解决了两个重要的痛点:启动慢,费内存

解决痛点?

由于Solon Bean容器的独特设计,不会因为扩展依赖变多而启动很慢(开发调试时,省时、爽快)!以知名开源项目“小诺”为例:

  • “snowy-spring 版” 启动 15-50秒
  • “snowy-solon 版” 启动3-5秒,启动内存节省1/3(有兴趣的,欢迎拉取代码体验)

有什么可爱的特点?

  • 启动快 5 ~ 10 倍。 (更快)
  • qps 高 2~ 3 倍。 (更高)
  • 运行时内存节省 1/3 ~ 1/2。 (更少)
  • 打包可以缩小到 1/2 ~ 1/10;比如,300Mb 的变成了 23Mb。 (更小)
  • 同时支持 jdk8, jdk11, jdk17, jdk21, graalvm native image

入门探索视频(用户录制):

最近更新了什么?

  • 完成 JDK21 编译测试,功能单元测试(for JDK21)
  • 添加 HttpServerConfigure::setExecutor 接口,用于支持虚拟线程池(for JDK21)
  • 添加 PropUtil 类。把原来的属性表达式与模板解析独立出来
  • 添加 ContextPathListener 类,用于控制 contentPath 对 ws,tpc 的影响
  • 添加 ContextPathFilter 一个简化的构造函数
  • 添加 MethodHolder::getDeclaringClz、getDeclaringClzAnnotation 接口
  • 添加 yaml 多片段支持(即一文件多环境支持)
  • 添加 多配置文件交差引用变量支持
  • 添加 DownloadedFile(file,name) 构造函数
  • 添加 Router 对 405 的支持
  • 调整 RunUtil 执行器分离为 parallelExecutor + asyncExecutor(for JDK21)
  • 调整 CacheService 接口(增加类型化 get)
  • 调整 SessionState 接口(增加类型化 get)
  • 调整 Context::session 接口(增加类型化 get)
  • 调整 BeanWrap 的 rawSet 改为公有
  • 调整 SolonApp::enableWebSocketMvc, enableSocketMvc, 默认为 false
  • 调整 SolonApp::enableWebSocket, enableWebSocketD 分离设置,各不相关
  • 调整 CloudConfig 复用主框架的属性表达式与模板解析
  • 调整 Listener 去掉 @FunctionalInterface,所有方法标为 default
  • 调整 ChainManager::postResult 的执行策略改为包围式(相当于倒序)
  • 调整 ValHolder 标为弃用
  • 调整 jdkhttp,jlhttp,smarthttp 的 contentLength 适配处理
  • 调整 使用更多的 slf4j 替换 bus
  • 调整 mybatis-solon-plugin 的会话提交方式,修复二级缓存控制可能失效的问题
  • 调整 "solon.config.load" 支持按顺序加载
  • 调整 几个特定启动参数的处理方式。改与成 Solon.cfg() 同步,再统一从 Solon.cfg() 取值
  • 调整 启动参数与系统属性的同步时机
  • wood 升为 1.2.1
  • redisx 升为 1.5.0
  • mybatis-flex 升为 1.6.5
  • sqltoy 升为 5.2.66
  • polaris 升为 1.14.1
  • lombok 升为 1.18.28
  • slf4j 升为 2.0.9
  • lombok 升为 1.18.30(for JKD21)
  • asm 升为 9.5 (for JDK21)

项目仓库地址?

  • gitee:https://gitee.com/noear/solon
  • github:https://github.com/noear/solon

相關推薦

2023-03-22

不可变数据。它们优于线程局部变量,尤其是在使用大量虚拟线程时。 记录模式 (Record Patterns) 进入第 2 预览阶段 Record Patterns 可对 record 的值进行解构,Record patterns 和 Type patterns 通过嵌套能够实现强大的、声明性的、可组合的

2023-08-18

Spring Framework 昨日更新的文档显示,Spring 6.1 已全面兼容虚拟线程 (Virtual Threads) 和 JDK 21。 虚拟线程配置选项:专用的 VirtualThreadTaskExecutor 和 SimpleAsyncTaskExecutor 上的虚拟线程模式,以及类似的具有 new-thread-per-task stra

2023-12-19

的官方推荐。 此版本更新内容如下: Improvement JDK21 虚拟线程兼容性 Fixed  即使调用了destroy()方法,EvictionTask 仍在继续运行 Sprint Data Redis 引发的 Subscription registration timeout exceeded Sprint Data Redis RedisMessageList

2024-04-25

依赖更新: 1. spring-boot升级到3.2 支持jdk21打包,及支持虚拟线程 2. hutool 升级到 5.8.24 3. poi 升级到 5.2.5 4.mybatis-plus 升级到  3.5.5 5. redisson 升级到 3.25.2 6. knife4j 升级到 4.3.0 7. spring-cloud-commons 升级到 4.1.0 8. satoken 升级到 1.37.0

2022-07-28

部函数和内存 API  425: Virtual Threads (Preview) 虚拟线程 426: Vector API (Fourth Incubator) 向量 API 427: Pattern Matching for switch (Third Preview) Switch 模式匹配 428: Structured Concurrency (Incubator) 结构化并发

2023-10-17

) 时机(安排到最外层) 调整 数据源事务管理相关改为线程状态可继承(支持通过 FactoryManager 设置 threadLocalFactory) https://gitee.com/noear/solon/issues/I88AZ3 调整 所有模块的单测都升级为 junit5(落实最新的 CONTRIBUTING 规范)

2022-09-21

性让 Java 调用普通 native 代码更加方便和高效。 425:虚拟线程 (Virtual Threads) 进入预览阶段 为 Java 引入虚拟线程,虚拟线程是 JDK 实现的轻量级线程,它在其他多线程语言中已经被证实是十分有用的,比如 Go 中的 Goroutine、Er

2024-02-09

不同。其中 exchange 支持直接配置线程池(以支持 jdk21 的虚拟线程池) for JavaScript 更新 添加 LoadBalancer 集群负载均衡工具 调整 Socketd 开头的异常类改为 SocketD 开头(与 python 统一) 调整 几个配置名 接配置名 新

2023-06-10

15 个 JEP ,是 JDK 20 的两倍有余。此版本带来了稳定版的虚拟线程功能、预览形式的字符串模板、Java 外部函数和内存 API 的第三预览版、Java Vector API 的最新迭代,以及预览形式的结构化并发等内容。 新功能则包括密钥封装机制

2023-10-08

Solon 是什么? Java 生态级应用开发框架。从零开始构建,有自己的标准规范与开放生态(历时五年,具备全球第二级别的生态规模)。更多内容详见:《中国这么多 Java 开发者,应该诞生出生态级应用开发框架》 有什么特点?

2023-12-13

Solon 是什么框架? Java 新的"生态级"应用开发框架。从零开始构建,有自己的标准规范与开放生态(历时六年,具备全球第二级别的生态规模)。Solon 生态的友商是 Spring 生态。Solon 的友商很强,所以很有意思。未来也将会在国

2024-01-19

Solon 是什么框架? Java "生态级"应用开发框架。从零开始构建,有自己的标准规范与开放生态(历时六年,具备全球第二级别的生态规模)。 相对于 Spring,有什么特点? 国产!国产!国产! 启动快 5 ~ 10 倍。 (更快

2024-01-06

Solon 是什么框架? Java 新的"生态级"应用开发框架。从零开始构建,有自己的标准规范与开放生态(历时六年,具备全球第二级别的生态规模)。 相对于 Spring,有什么特点? 国产!国产!国产! 启动快 5 ~ 10 倍。 (

2024-01-31

Solon 是什么框架? Java "生态级"应用开发框架。从零开始构建,有自己的标准规范与开放生态(历时七年,具备全球第二级别的生态规模)。 相对于 Spring,有什么特点? 国产!国产!国产! 启动快 5 ~ 10 倍。 (更快