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

本次发布的其中一个重点:完成 JDK21 编译测试和功能单元测试。

JDK 21 虚拟线程?

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

java 复制代码
@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容器的独特设计,不会因为扩展依赖变多而启动很慢(开发调试时,省时、爽快)!以知名开源项目"小诺"为例:

有什么可爱的特点?

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

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

最近更新了什么?

  • 完成 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)

项目仓库地址?

相关推荐
invicinble4 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟4 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖4 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
qq_12498707536 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_6 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Mr_sun.6 小时前
Day06——权限认证-项目集成
java
瑶山6 小时前
Spring Cloud微服务搭建四、集成RocketMQ消息队列
java·spring cloud·微服务·rocketmq·dashboard
abluckyboy6 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
2301_818732066 小时前
前端调用控制层接口,进不去,报错415,类型不匹配
java·spring boot·spring·tomcat·intellij-idea
2501_941982056 小时前
深度对比:Java、Go、Python 实现企微外部群推送,哪个效率更高?
java·golang·企业微信