写于 2023年9月

---

### 1、必须要有，不然就永远不会有

应用开发框架，虽然没有芯片、操作系统、数据库、编程语言这些重要。但是最终呈现在用户面前的，总是有软件部分。而软件系统开发，一般都需要应用开发框架，它是软件系统的基础性部件之一。


很多很多软件系统都会有 Java 开发的部分，尤其是**政府部门的软件系统**大量的使用了 Java。市场非常的大，我们有很多的 Java 程序员，更有很多技术大能，也为很多全球级的项目贡献过力量。理所应当也要有自己的“生态级”应用开发框架，不是说卡不卡脖子的问题，而是不好意思没有啊！外面可是隔三差五的出语言。

国内现在有很多好的“功能性框架”，也有很多好的“快速开发框架”，还有很多好的“后台脚手架”。但是没有像 Spring 这样生态级的框架出现。个人觉得，这应该是有问题的、是可惜的、是遗憾的。


想要搞个 Java 生态级的应用开发框架。一般是以年为开发时间单位的（需要漫长的时间打磨），一般是不赚钱的。还有 Spring 生态这个巨人存在。但，真的有很多人是期待的：一个轻量的，更现代感的，最好还是国产的。

刚开始的确会很难；刚开始可能不如人家的完善；刚开始会有很多人质疑和漫骂。再难能有芯片难？？？不是说非要替换代别人，而是<mark>必须要有，不然就永远不会有</mark>。


### 2、一个美好的“生态级”应用开发框架


应该是所有“功能型”框架的好朋友，就像水、土、空气一样<mark>串起万物生长</mark>；应该是<mark>接地气</mark>些，方便所有技术员快速学习和使用。比如：

* 应该能自动装配扩展能力（方便做第三方扩展）
* 应该有很多的第三方合作与便利适配（生态嘛）
* 应该有IOC 和 AOP（确实更便利）
* 应该启动很快（必须要远超它的前辈）
* 应该内存更少，尤其是在启动时和静默时的内存（休息时，不该吃那么多内存）
* 应该很少量的代码（不然学习太幸苦了）
* 应该有自己的思考方式和性格特性（抄过来的不好）

其实要求也不高，只要道心稳，慢慢打怪升级。最近有位技术大牛说：国外有 spring 和 apache，**国内有 solon 和 dromara**。



### 3、论 Solon 框架的意义

是一个国产的生态级 Java 应用开发框架（具备全球第二级别的生态）。开玩笑，两三百个生态扩展呢。

* 国内第一个

从零开始构建，有自己的标准规范与开放生态。尤其没有使用 javaee 的接口规范（它改包名了，可麻烦）。会借鉴与善用前人的成果，但绝对是原创。

* 为什么说是生态呢

没有功能，没有集成。都是基于标准与规范的扩展与适配。同一个需求，可以有很多不同的方案选择。这是架构的美感。当然别人家的生态框架也会是这样。

* 提供不同的选择

以前只有包子，没得选，不管什么场景只有包子吃。而且很多人都习惯了这样。<mark>现在是还有饼干和花生米，你可以按需选择</mark>。


* 助力信创国产化

信创，讲国产可控。但是很多软件系统用了 spring 开发。之前是没得选。现在可以用 solon 了。

* 助力国产语言的成长

当有适合的国产语言出现时，可以快速实现副本迁移。因为 solon 是原创，有自己的标准规范与开放生态，迁移起来很方便。开发语言，有好的生态框架，能优化用户体验，加速成长。

* 助力培训机构使用国产框架进行 Java 教学

一个生态级的应用开发框架。无形之中，会有很多模式，有很多术语。应用于教学，对国产开发环境是好事。


* 助力高校使用国产框架进行 Java 教学

Solon 的愿景里，会有很多相关书出现。以 Solon 的视角去展现 Java。 以前是没得选，以后可以选 Solon 相关的书，进行教学。

* 助力 Java 开源项目成长

以前嘛，我们的 Java 开源项目很多是“面向 Spring 编程的”。现在可以回归本源，“面向 Java 编程”（同时也适配下 Solon）。Java 的世界很大，有很多的不同的生态框架。


* 助力 Java 程序员的成长

有些 Java 程序员，如果没有 Spring 是不能编程的。其实 Java 的世界很大，Java 之外的世界更大。见识不同的生态应用开发框架，见识不同的编程语言，可以看见更大的世界。


### 4、Solon 生态框架是应运而生的

这不是吹牛，之前真的是没有，<mark>这是第一个生态级的</mark>。打磨五六年了。暂时，它还真是中国人的 Java 生态框架（没别的啦）。

特性：

* 启动快 5 ～ 10 倍。 **（更快）**
* qps 高 3 ～ 9 倍。 **（更高）**
* 运行时内存节省 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 打包
* 允许业务插件“热插”、“热拔”、“热管理”

预览：

```java
@Controller
public class App {
    public static void main(String[] args) {
        Solon.start(App.class, args, app -> {
            //手写模式
            app.router().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 Cloud（有案例）
* 军工项目要国产化，应该用 Solon 或者 Solon Cloud（有案例）
* 嵌入式设备，内存有限，算力差，可以用 Solon 或者 Solon Native（有案例）
* 客户的希望你内存更少，可以用 Solon （有案例）
* 别的框架用腻了，可以用 Solon （有案例）
* 有新系统开发想尝新的框架，可以用 Solon （有案例） 
* 老系统要轻量化改造，可以用 Solon（有案例）

作为后来者，大家的疑或是会多一些。有问题，可以去交流群里多交流。

### 6、Solon 的代码仓库


喜欢 Solon 的，可以帮助宣传。喜欢但觉得不够好的，可以助其成长。不方便切换框架的，也可支持：


* https://gitee.com/opensolon/solon
* https://github.com/opensolon/solon

“<mark>众人拾柴火焰高</mark>”，支持它、使用它、传播它、一起贡献代码：）










