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

2023-10-06 00:39
文章标签 jdk 线程 21 虚拟 solon 逆天

本文主要是介绍Solon for JDK 21,虚拟线程逆天!!!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本次发布的其中一个重点:完成 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 编译测试,功能单元测试
  • 添加 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

这篇关于Solon for JDK 21,虚拟线程逆天!!!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/152404

相关文章

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

线程的四种操作

所属专栏:Java学习        1. 线程的开启 start和run的区别: run:描述了线程要执行的任务,也可以称为线程的入口 start:调用系统函数,真正的在系统内核中创建线程(创建PCB,加入到链表中),此处的start会根据不同的系统,分别调用不同的api,创建好之后的线程,再单独去执行run(所以说,start的本质是调用系统api,系统的api

mac jdk 1.7 dmg 官方版

百度云下载 https://pan.baidu.com/s/1SQiidrPFF5aZr4xlx0ekoQ https://pan.baidu.com/s/1SQiidrPFF5aZr4xlx0ekoQ   补充说明: 实际上oracle对于历史版本的jdk都有归档可以在官方网站上下载,只是需要注册个号就可以了。 地址如下: https://www.oracle.com/cn/java

java线程深度解析(六)——线程池技术

http://blog.csdn.net/Daybreak1209/article/details/51382604 一种最为简单的线程创建和回收的方法: [html]  view plain copy new Thread(new Runnable(){                @Override               public voi

java线程深度解析(五)——并发模型(生产者-消费者)

http://blog.csdn.net/Daybreak1209/article/details/51378055 三、生产者-消费者模式     在经典的多线程模式中,生产者-消费者为多线程间协作提供了良好的解决方案。基本原理是两类线程,即若干个生产者和若干个消费者,生产者负责提交用户请求任务(到内存缓冲区),消费者线程负责处理任务(从内存缓冲区中取任务进行处理),两类线程之

java线程深度解析(四)——并发模型(Master-Worker)

http://blog.csdn.net/daybreak1209/article/details/51372929 二、Master-worker ——分而治之      Master-worker常用的并行模式之一,核心思想是由两个进程协作工作,master负责接收和分配任务,worker负责处理任务,并把处理结果返回给Master进程,由Master进行汇总,返回给客

java线程深度解析(二)——线程互斥技术与线程间通信

http://blog.csdn.net/daybreak1209/article/details/51307679      在java多线程——线程同步问题中,对于多线程下程序启动时出现的线程安全问题的背景和初步解决方案已经有了详细的介绍。本文将再度深入解析对线程代码块和方法的同步控制和多线程间通信的实例。 一、再现多线程下安全问题 先看开启两条线程,分别按序打印字符串的

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

【JavaScript】LeetCode:21-25

文章目录 21 最大子数组和22 合并区间23 轮转数组24 除自身以外数组的乘积25 缺失的第一个正数 21 最大子数组和 贪心 / 动态规划贪心:连续和(count)< 0时,放弃当前起点的连续和,将下一个数作为新起点,这里提供使用贪心算法解决本题的代码。动态规划:dp[i]:以nums[i]为结尾的最长连续子序列(子数组)和。 dp[i] = max(dp[i - 1]