中国这么多 Java 开发者,应该诞生出生态级应用开发框架
1、必须要有,不然就永远不会有
应用开发框架,虽然没有芯片、操作系统、数据库、编程语言这些重要。但是最终呈现在用户面前的,总是有软件部分。而软件系统开发,一般都需要应用开发框架,它是软件系统的基础性部件之一。
很多很多软件系统都会有 Java 开发的部分,尤其是政府部门的软件系统大量的使用了 Java。市场非常的大,我们有很多的 Java 程序员,更有很多技术大能,也为很多全球级的项目供献过力量。理所应该当也要有自己的“生态级”应用开发框架,不是说卡不卡脖子的问题,而是不好意思没有啊!外面可是隔三差五的出语言。
国内现在有很多好的“功能性能框架”,也有很多好的“快速开发框架”,还有很多好的“后台脚手架”。但是没有像 Spring 这样生态级的框架出现。个人觉得,这应该是有问题的、是可惜的、是遗憾的。
想要搞个 Java 生态级的应用开发框架。一般是以年为开发时间单位的(需要漫长的时间打磨),一般是不赚钱的。还有 Spring 生态这个巨人存在。但,真的有很多人是期待的:一个轻量的,更现代感的,最好还是国产的。
刚开始的确会很难;刚开始可能不如人家的完善;刚开始会有很多人质疑和漫骂。再难能有芯片难???不是说非要替换代别人,而是必须要有,不然就永远不会有。
2、一个美好的“生态级”应用开发框架
应该是所有“功能型”框架的好朋友,就像水、土、空气一样串起万物生长;应该是接地气些,方便所有技术员快速学习和使用。比如:
- 应该能自动装配扩展能力(方便做第三方扩展)
- 应该有很多的第三方合作与便利适配(生态嘛)
- 应该有IOC 和 AOP(确实更便利)
- 应该启动很快(必须要远超它的前辈)
- 应该内存更少,尤其是在启动时和静默时的内存(休息时,不该吃那么多内存)
- 应该很少量的代码(不然学习太幸苦了)
- 应该有自己的思考方式和性格特性(抄过来的不好)
其实要求也不高,只要道心稳,慢慢打怪升级。最近有位技术大牛说:国外有 spring 和 apache,国内有 solon 和 dromara。
3、论 Solon 框架的意义
是一个国产的生态级 Java 应用开发框架(已发具备全球第二级别的生态)。开玩笑,两三百个生态扩展呢。
- 国内第一个
从零开始构建,有自己的标准规范与开放生态。尤其没有使用 javaee 的接口规范(它改包名了,可麻烦)。会借鉴与善用前人的成果,但绝对是原创。
- 为什么说是生态呢
没有功能,没有集成。都是基于标准与规范的扩展与适配。同一个需求,可以有很多不同的方案选择。这是架构的美感。当然别人家的生态框架也会是这样。
- 提供不同的选择
以前只有包子,没得选,不管什么场景只有包子吃。而且很多人都习惯了这样。现在是还有饼干和花生米,你可以按需选择。
- 助力信创国产化
信创,讲国产可控。但是很多软件系统用了 spring 开发。之前是没得选。现在可以用 solon 了。
- 助力国产语言的成长
当有适合的国产语言出现时,可以快速实现副本迁移。因为 solon 是原创,有自己的标准规范与开放生态,迁移起来很方便。开发语言,有好的生态框架,能优化用户体验,加速成长。
- 助力部训机构使用国产框架进行 Java 教学
一个生态级的应用开发框架。无形之中,会有很多模式,有很多术语。应用于教学,对国产开发环境是好事。
- 助力高校使用国产框架进行 Java 教学
Solon 的愿景里,会有很多相关书出现。以 Solon 的视角去展现 Java。 以前是没得选,以后可以选 Solon 相关的书,进行教学。
- 助力 Java 开源项目成长
以前嘛,我们的 Java 开源项目很多是“面向 Spring 编程的”。现在可以回归本源,“面向 Java 编程”(同时也适配下 Solon)。Java 的世界很大,有很多的不同的生态框架。
- 助力 Java 程序员的成长
有些 Java 程序员,如果没有 Spring 是不能编程的。其实 Java 的世界很大,Java 之外的世界更大。见识不同的生态应用开发框架,见识不同的编程语言,可以看见更大的世界。
4、Solon 生态框架是应运而生的
这不是吹牛,之前真的是没有,这是第一个生态级的。打磨五六年了。暂时,它还真是中国人的 Java 生态框架(没别的啦)。
特性:
- 启动快 5 ~ 10 倍。 (更快)
- qps 高 2~ 3 倍。 (更高)
- 运行时内存节省 1/3 ~ 1/2。 (更少)
- 打包可以缩小到 1/2 ~ 1/10;比如,300Mb 的变成了 23Mb。 (更小)
- 同时支持 jdk8, jdk11, jdk17, jdk21, graalvm native image
简介:
- 克制、简洁、高效、开放、生态
- 支持 JDK8、JDK11、JDK17、JDK20(是同时支持)
- Http、WebSocket、Socket 三种信号统一的开发体验(俗称:三源合一)
- 支持“注解”与“手动”两种模式,按需自由操控
- Not Servlet,可以适配任何基础通讯框架(最小 0.3m 运行rpc架构)
- 独特的 IOC/AOP 容器设计。不会因为插件变多而启动变很慢
- 支持 Web、Data、Job、Remoting、Cloud 等任何开发场景
- 兼顾 Handler + Context 和 Listener + Message 两种架构模式
- 强调插件式扩展,可扩展可切换;适应不同的应用场景
- 支持 GraalVm Native Image 打包
- 允许业务插件“热插”、“热拔”、“热管理”
预览:
@Controller
public class App {public static void main(String[] args) {Solon.start(App.class, args, app -> {//手写模式app.get("/hello1", ctx -> ctx.output("Hello world!"));});}//注解模式@Get@Socket@Mapping("/hello2")public String hello2(String name) {return String.format("Hello %s!", name);}
}
5、什么样的 Java 项目用 Solon 好
就像华为讲的,不要因为爱国而特意买华为手机。Solon 也是,有需要就用不需要就跳过(按正常的需求选择):
- 信创需要国产化,应该用 Solon 或者 Solon Cloud(有案例)
- 军工项目要国产化,应该用 Solon 或者 Solon Cloud(有案例)
- 嵌入式设备,内存有限,算力差,可以用 Solon 或者 Solon Native(有案例)
- 客户的希望你内存更少,可以用 Solon (有案例)
- 别的框架用腻了,可以用 Solon (有案例)
- 有新系统开发想尝新的框架,可以用 Solon (有案例)
- 老系统要轻量化改造,可以用 Solon(有案例)
作为后来者,大家的疑或是会多一些。有问题,可以去交流群里多交流。
6、Solon 的代码仓库
喜欢 Solon 的,可以帮助宣传。喜欢但觉得不够好的,可以助其成长。不方便切换框架的,也可支持:
- https://gitee.com/noear/solon
- https://github.com/noear/solon
“众人拾柴火焰高”,支持它、使用它、传播它、一起贡献代码:)
相关文章:
中国这么多 Java 开发者,应该诞生出生态级应用开发框架
1、必须要有,不然就永远不会有 应用开发框架,虽然没有芯片、操作系统、数据库、编程语言这些重要。但是最终呈现在用户面前的,总是有软件部分。而软件系统开发,一般都需要应用开发框架,它是软件系统的基础性部件之一。…...
仿猫扑盒子引流神器试看神马视频-红包打卡签到领金
特点1:站内发红包,抢红包 特点2:会员可上传视频 特点3:设置每天免费试看次数…..具体看演示站点,为准 支付在后台上传收款二维码即可,支持微信和支付宝。前台提交订单后台管理员审核 环境:宝…...
WhatsApp自动营销软件是真实的吗?对做外贸有帮助吗?
出海营销少不了的就是依靠海外平台,WhatsApp作为许多海外国家和地区最受欢迎的聊天应用程序,活跃用户占到了全球人口的四分之一,有些地区比如欧洲、美洲,用户渗透率超过了80%,对海外营销的企业来说是不可缺少的销售工具…...
抖音短视频矩阵系统搭建
企业在进行短视频矩阵运营时,搭建一个矩阵号是非常必要的。矩阵号可以绑定多个不同平台的账号,批量制作和定时发布短视频,提高企业的曝光量和粉丝互动。但是,如何搭建一个有效的短视频矩阵号呢?以下是几个关键步骤。 一…...
Chinese-LLaMA-AIpaca
文章目录 关于 Chinese-LLaMA-Alpaca一、LLaMA模型 --> HF格式二、合并LoRA权重,生成全量模型权重方式1:单LoRA权重合并方式2:多LoRA权重合并(适用于Chinese-Alpaca-Plus )三、使用 Transformers 进行推理四、使用 webui 搭建界面1、克隆text-generation-webui并安装必…...
IP归属地应用的几个主要特点
作为一款优秀的IP地址定位工具,主题IP归属地的应用无疑是最好的选择之一。该应用可以将您需要查询的IP地址快速定位到所在的具体物理位置,并提供详细的地址和地图信息。接下来,让我们一起来看一看IP归属地应用的几个主要特点: 1. …...
通过解读yolov5_gpu_optimization学习如何使用onnx_surgon
onnx实战一: 解析yolov5 gpu的onnx优化案例: 这是一个英伟达的仓库, 这个仓库的做法就是通过用gs对onnx进行修改减少算子然后最后使用TensorRT插件实现算子, 左边是优化过的, 右边是原版的。 通过这个案例理解原版的onnx的导出流程然后我们看英伟达是怎么拿gs来优化…...
图像复原与重建,解决噪声的几种空间域复原方法(数字图像处理概念 P4)
文章目录 图像复原模型噪声模型只存在噪声的空间域复原 图像复原模型 噪声模型 只存在噪声的空间域复原...
Android 启动优化案例:WebView非预期初始化排查
去年年底做启动优化时,有个比较好玩的 case 给大家分享下,希望大家能从我的分享里 get 到我在做一些问题排查修复时是怎么看上去又low又土又高效的。 1. 现象 在我们使用 Perfetto 进行app 启动过程性能观测时,在 UI 线程发现了一段 几十毫…...
20230919后台面经整理
1.你认为什么是操作系统,操作系统有哪些功能 os是:管理资源、向用户提供服务、硬件机器的扩展 1.进程线程管理:状态、控制、通信等 2.存储管理:分配回收、地址转换 3.文件管理:目录、操作、磁盘、存取 4.设备管理&…...
画一个时钟(html+css+js)
这是一个很简约的时钟。。。。。。。 效果: 代码: <template><div class"demo-box"><div class"clock"><ul class"mark"><liv-for"(rotate, index) in rotatedAngles":key"i…...
红 黑 树
文章目录 一、红黑树的概念二、红黑树的实现1. 红黑树的存储结构2. 红黑树的插入 一、红黑树的概念 在 AVL 树中删除一个结点,旋转可能要持续到根结点,此时效率较低 红黑树也是一种二叉搜索树,通过在每个结点中增加一个位置来存储红色或黑色…...
掷骰子的多线程应用程序1(复现《Qt C++6.0》)
说明:复现的代码来自《Qt C6.0》P496-P500。在复现时完全按照代码,出现了两处报错: (1)ui指针(2)按钮的响应函数。下面程序对以上问题进行了修改。除了图片、清空、关闭功能外,其他…...
【vue2第十八章】VueRouter 路由嵌套 与 keep-alive缓存组件(activated,deactivated)
VueRouter 路由嵌套 在使用vue开发中,可能会碰到使用多层级别的路由。比如: 其中就包含了两个主要页面,首页,详情,但是首页的下面又包含了列表,喜欢,收藏,我的四个子路由。 此时就…...
如何确保亚马逊、速卖通等平台测评补单的环境稳定性和安全性?
做亚马逊、速卖通等平台测评补单时,确保环境的安全性和稳定性是非常重要的。稳定的环境是测评的基础,如果无法解决安全性问题,那么测评就不值得进行。为了确保稳定的环境系统,需要考虑物理环境和IP环境两个方面。 首先࿰…...
echarts图表 实现高度按照 内容撑起来或者超出部分滚动展示效果
背景:因为数据不固定 高度写死导致数据显示不全,所以图表高度要根据内容计算 实现代码如下: <divv-if"showCharts"id"business-bars"class"chart":style"{ height: chartHeight px }"></d…...
【论文阅读】检索增强发展历程及相关文章总结
文章目录 前言Knn-LMInsightMethodResultsDomain AdaptionTuning Nearest Neighbor Search Analysis REALMInsightsMethodKnowledge RetrieverKnowledge-Augmented Encoder ExpResultAblation StudyCase Study DPRInsightMethodExperimentsResults RAGInsightRAG-Sequence Mode…...
【漏洞复现系列】二、weblogic-cve_2020_2883(RCE/反序列化)
Key words:T3协议,weblogic Server,反序列化 2.1、漏洞原理 cve_2020_2883 远程代码执行漏洞存在于 WebLogic Server 核心组件中,允许未经身份验证的攻击者通过 T3 协议网络访问并破坏易受攻击的 WebLogic Server,成功的漏洞利…...
算法通关村-----LRU的设计与实现
LRU 缓存 问题描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存。int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值&…...
王江涛十天搞定考研词汇
学习目标: 考研词汇 学习内容: 2023-9-17 第一天考研词汇 学习时间: 开始:2023-9-17 结束:进行中 学习产出: 2023-9-17intellect智力;知识分子intellectual智力的;聪明的intellectualize使...理智化&a…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
