前言:
如今我们对“java桌面开发”可能比较关切,同学们都想要学习一些“java桌面开发”的相关文章。那么小编在网上收集了一些有关“java桌面开发””的相关资讯,希望你们能喜欢,看官们快快来学习一下吧!一、开源项目简介
Solon,是一个轻量级的应用开发框架。更快、更小、更自由!
二、功能概述
支持JDK8+;主框架0.1Mb;组合不同的插件应对不同需求;方便定制;快速开发。
克制、简洁、开放Http、WebSocket、Socket 三种信号统一的开发体验(俗称:三源合一)支持注解与手动两种模式,按需自由操控Not Servlet,可以适配任何基础通讯框架(所以:最小0.2Mb运行rpc架构)基于订阅模式的 IOC & AOP 容器设计集合 Handler + Context 和 Listener + Message 两种架构模式;强调插件式扩展;适应不同的应用场景插件可扩展可切换:启动插件,扩展插件,序列化插件,数据插件,会话状态插件,视图插件(可共存) 等...支持 Web、Job、Remoting、Cloud 等开发场景支持 GraalVM Native 打包体验与 Spring Boot 相近,迁移成本低
一系列分布式开发的接口标准和配置规范,相当于DDD模式里的防腐层概念。是 Solon 的微服务架构模式开发解决方案。 目前已适配了一系列的插件用于支持这一标准:《Solon Cloud 分布式服务开发套件清单,感觉受与 Spring Cloud 的不同》
其中,Water 项目 是一站式支持 Solon Cloud 系列标准的支撑平台。 功能相当于:consul + rabbitmq + elk + prometheus + openFaas + quartz + 等等,并有机结合在一起。一直与 Solon 项目伴生成长。
三、技术选型Hello world:
//Handler 模式:public class App{ public static void main(String[] args){ SolonApp app = Solon.start(App.class,args); app.get("/",(c)->c.output("Hello world!")); }}//Controller 模式:(mvc or rest-api)@Controllerpublic class App{ public static void main(String[] args){ Solon.start(App.class,args); } //限定 put 方法类型 @Put @Mapping("/") public String hello(String name){ return "Hello " + name; }}//Remoting 模式:(rpc)@Mapping("/")@Remotingpublic class App implements HelloService{ public static void main(String[] args){ Solon.start(App.class,args); } @Override public String hello(){ return "Hello world!"; }}主框架及快速集成开发包:主框架
组件
说明
org.noear:solon-parent
框架版本管理
org.noear:solon
主框架
org.noear:nami
伴生框架(做为solon remoting 的客户端)
org.noear:solonhat
文档框架
快速集成开发包及相互关系
组件
说明
org.noear:solon-lib
快速开发基础集成包
org.noear:solon-api
solon-lib + jlhttp boot;快速开发接口应用
org.noear:solon-web
solon-api + freemarker + sessionstate;快速开发WEB应用
org.noear:solon-beetl-web
solon-api + beetl + beetlsql + sessionstate;快速开发WEB应用
org.noear:solon-enjoy-web
solon-api + enjoy + arp + sessionstate;快速开发WEB应用
org.noear:solon-rpc
solon-api + nami;快速开发RPC应用
org.noear:solon-cloud
solon-rpc + consul;快速开发微服务应用
Solon 启动处理顺序1.实例化 Solon.global()2.初始化配置3.加载扩展文件夹4.扫描插件并排序5.运行 initialize 函数6.推送 AppInitEndEvent [事件]7.运行插件8.推送 PluginLoadEndEvent [事件]9.导入java bean(@Import)a.扫描并加载java beanb.推送 BeanLoadEndEvent [事件]c.加载渲染印映关系d.执行 Aop.beanLoaded 函数e.推送 AppLoadEndEvent [事件]f.结束更快、更小、更自由所谓更快:
本机 Helloworld 测试,Qps 可达10万之多。
solon 1.3.35
大小
QPS
solon.boot.jlhttp(bio)
0.2m
4.7万左右
solon.boot.jetty(nio, 支持servlet api)
1.9m
10.7万左右
solon.boot.undertow(nio, 支持servlet api)
4.3m
11.3万左右
solon.boot.smarthttp(aio)
0.4m
12.4万左右
spring boot 2.3.3
大小
QPS
spring-boot-starter-tomcat
16.1m
3.2万左右
spring-boot-starter-jetty
16m
3.7万左右
spring-boot-starter-undertow
16.8m
4.4万左右
所谓更小:
内核 0.1Mb,最小 Web 完整开发单位 1Mb(相比Springboot项目包,小到可以乎略不计了)
所谓更自由:
代码操控自由:除了注解模式之外,还可以按需手动。
//手动获取配置(Props 为 Properties 增强版)Props db = Solon.cfg().getProp("db");//手动获取容器里的BeanUserService userService = Aop.get(UserService.class);//手动监听http post请求Solon.global().post("/user/update", x-> userService.updateById(x.paramMap()));//手动添加个RPC服务Solon.global().add("/rpc/", HelloService.class, true);//手动获取一个RPC服务消费端HelloService helloService = Nami.builder().create(HelloService.class);//手动为容器添加组件Aop.wrapAndPut(DemoService.class);
框架选择自由:
可以用 solon-web 这样的快速开发集成包。也可以按项目需要选择不同的插件组装,比如:为非Solon项目添加solon.boot.jlhttp,0.2Mb 即可让项目实现 http+mvc 支持。
四、界面展示
项目启动以来,参考过大量前人的作品。尤其是 Spring boot 和 Javalin ,吸取了诸多优点,且避开很多繁重的设计。历时多年,内核始终保持 0.1Mb 的身材,超高的跑分,良好而自由的使用体验。
强调:克制 + 简洁 + 开放的原则。
力求:更小、更快、更自由的体验。
1、缘起统一的处理架构想法(俗称:三源合一)
Http、Socket、WebSocket。不同的通讯信号,进行统一架构处理......并且小巧。 对于 Socket 和 WebSocket,在原 消息+监听 的模式之外增加了 上下文+处理 模式。
关于 Http 信号提供者,Servlet 或 NoServlet 都可以。如 JlHttp(NoServlet)、Jetty(Servlet)、reactor-netty......
2、关于应用内在的启动过程(即:应用的生命周期)
串行的处理过程(含四个事件扩展点 + 两个函数扩展点),代码直接、没有什么模式。易明
3、请求的处理过程4、Ioc & Aop 内部结构5、现有家簇成员图谱五、开源协议
使用Apache2.0开源协议
六、源码地址
私信回复:应用开发框架
或访问一飞开源:
标签: #java桌面开发