Java 原生编译的 Solon 回忆录

最近和@雨韵诗泽、@读钓两个小伙伴一起(主要是他们两在出力),适配了Solon Native的第一个开源项目:dromara/neutrino-proxy(里程碑案例啊!有点修行大成的味道了!)。总体来说:

1、缘起

2021 年的深秋,有个叫@馒头虫的男人。跑过来讲,他有个项目需求是(给一个美国大厂做的):存放空间只有 100M,内存只有 100M,在硬件里运行一个管理界面系统。他研究了 spring native,因为它的基础就太大没过;研究了 go,做复杂的界面系统不好预期没过。所以选择尝试 solon。

于是他种下了一颗 solon native 的种子。开始浇水、施肥。前后一两个月的时间,真的也开花了(最后好像只有 53m 大小)。这365万字省去,他怎么不哭呢?

这个男人总结出了三条经验:

说起来,Solon 框架真的是好啊(按那男人的讲法:小是真的小,快是真的快):

2、认识 APT

后面很长的时间,我没再碰它(主要是无知,无从下手。懵!)。偶然的一天,路过 mybatis-plus 4.x 项目仓库,看到 APT 这几个字眼。我对 java 确实是无知,百度后才知道神器 lombok 就是基于 APT 实现的。然后,我想起了那个男人总结的三条经验:

是不是可以借助 APT,去提前生成类的代理代码,去完成资源文件、反射的登记?我估计是行的。

2023年的初春,花了一周时间,把类的代理用 APT 在编译时生成了。开心是开心的。但是,怎样获取需要代理的类,成了一个不解的题。路很长。然后,暂时没有然后了!

3、认识 AOT

好多年前就听过 AOT,大概知道它是干嘛的。但是,还是一脸懵。

2023年的春后,有个叫@李总的男人。他说,我有个项目想要用 solon 的原生编译,而且可以叫个人帮忙搞。最后出现的男人叫@读钓,不知道是@李总忽悠过来的,还是我把他忽悠过来的(后来,据他说是自己跑来的)。他说,我们应该A,B,C…这么这么搞!

还有个加强版的 AOT。原来如此,原来如此:

这个男人从春天搞到了夏天。成了!(当中略过365万字…),一直搞,不知道有没有洗过澡, 有没有换过衣服。

4、我们发布第一个 Solon Native 版本

2023年的夏天,有个新男人来。说是要用 Solon Native。我心里其实没底,原生这东西太难用了。必须得忍住不哭才行。后来他招乎也没打,跑了。

真的是太难用了:

5、你信轮回?

2023年的深秋,又是一个深秋。男人@雨韵诗泽,说想把他的dromara/neutrino-proxy开源项目搞成原生编译的。我说,那得忍住不哭才行。他说,他不会哭(其实,他动得不多。哈哈)。@读钓又开始忙了。

说起来,@读钓是从春天干到了秋天。终于成了:《Solon v2.5.12 发布,Java 原生编译再起》。我们也是正经的支持 Java 原生编译的生态型框架了。且是,国产的。

开源,让很多人的愿望和努力汇聚一处,也记录了共同的回忆。

人生路,且短且长,只怪情深缘浅,你信轮回?