JFinal 4.8 发布,迭代 9 年依然极简、极速
从 2010 年 12 月 18 日第一个初始版本,到 2012 年 3 月 18 日在 oschina 开源,到今天 2019 年 12 月 18 日,JFinal 已迭代 9 年。
任何系统都有向复杂、混乱方向演化的倾向,本质是由于简洁、有序的结构只拥有极小的概率分布,而复杂、混乱则拥有极大的概率空间。
但是:jfinal 迭代 9 年依然极简、极速。
jfinal 不忘初心,对极简的追求,9 年从未改变。
一、极简这 9 年
1、 极简设计
jfinal 迭代 9 年时间,顶层架构从未变过,依然是 Handler、Interceptor、Controller、Render、Plugin,这里可以找见非常早期的 jfinal 源码:
https://github.com/jfinal/jfinal/tree/jfinal-1.2/src/com/jfinal
9 年时光,对比现在最新版本 jfinal 4.8,顶层架构没有增加任何复杂度,没有降低任何有序性。
2、 极简实现
jfinal 作为一个应用开发框架,拥有 MVC + AOP + ORM + Template Engine 核心模块,不依赖于任何第三方,体量仅有 732KB,代码量不到三万仅有 29003 行:
这里的可怕之处在于:这个代码量比市面上拥有同样功能的知名框架组合低两个数量级,更可怕的这是迭代 9 年以后的数据。简洁不足以表述这样可怕的数据,必须使用极简。
由于采用极简设计,jfinal 表达为极度轻量级,上一次新版本专门表述过 jfinal 的轻量级:
https://www.oschina.net/news/107259/jfinal-4-2-released
3、 极简思想
为什么 jfinal 9 年的进化,依然可以保持极简?原因在于 jfinal 拥有一套独特的极简设计思想。
jfinal 极简设计思想来源于数学、物理两个领域的极致简洁, 例如数学中极简的典范,欧拉恒等式:
欧拉恒等式将数学上 5 个最重要的常数以最简约的方式联系起来(常量意味着永恒不变,意味着某种深刻)。
其极简的特征体现在,欧拉恒等式中极少的要素与极少的关系(要素与关系无法再减少)。
极少要素为: 5 个常量,极少关系为:加法与等于(乘、幂运算本质也是加法运算)。
自然常数 e: 增长的极限,大量自然规律背后依赖的常数。
常数 PI :圆周与直径的永恒关系。
虚数单位常数 i:将实数轴扩展为复平面,将数从一维扩展至二维。
常数 1: 实数单位长度、最小正整数、比 0 大的排位第 1 的自然数等等。
常数 0: 最小自然数,最小概率、非质非合数、非正非负数、正与负的分界点等等。
欧拉恒等式只用了极少的要素与极少的关系,就将圆、增长极限、自然数、实数、复数、一维、二维等等大自然背后的重要规律深刻联系起来。
能否让 jfinal 开发框架也能像欧拉恒等式一样,在设计中仅使用极少要素、关系,就能满足千变万化的应用开发需求?
jfinal 受此启发,提炼出极简设计方法论,值此 jfinal 迭代 9 年之际,jfinal 俱乐部已将 jfinal 极简设计思想通过视频分享出来:
二、极速这 9 年
1、 极速之于性能
jfinal 总体性能一直数倍领先于传统开发框架,早在 3.3 版本发布时已介绍过 jfinal 天下武功唯快不破的强憾性能:
https://www.oschina.net/news/90815/jfinal-3-3
jfinal 的 enjoy 模板引擎的性能更是早已远超 freemarker、velocity、thymeleaf 这类知名模板引擎:
https://www.oschina.net/news/81225/jfinal-3-0-released
即便如此,但是 jfinal 4.8 仍然不罢手,引入运行时编译技术再次将性能提升 12.9%,将其它模板引擎甩得更远,以下是 Intel Core i7 2.2G 机器上的性能测试结果:
JFinal 模板引擎 Enjoy 的性能是 Thymeleaf 的 9.68 倍,是 Freemarker 的 3 倍,是 Velocity 的 2.86 倍,由于 Freemarker、Velocity、Thymeleafe 不支持 byte 模式,以上仅测试了 char 模式,在 byte 模式下性能将领先更多倍数。
以上测试使用 Java 基准测试框架 JMH,测试源码:https://gitee.com/jfinal/template-benchmark
注意:Enjoy 的运行时编译技术仍然支持动态类型,某些模板引擎在使用 asm/cglib 运行时修改字节码优化性能以后不再支持动态类型,是得不偿失的做法,因为动态类型是现代模板引擎必须的特性
2、 极速之于开发
早在 spring boot 出生三年之前,jfinal 就使用了嵌入式容器、热加载、零配置、无 XML、API 引导式配置、ActiveRecord 模式等等方法,用来尽可能提升开发效率。
spring boot 在此三年之后才使用了上述 jfinal 采用的部分方式:https://www.oschina.net/news/90815/jfinal-3-3
今天发布的 jfinal undertow 2.0 新版本,实现了开发、打包、部署一体化,不必去下载、安装、配置 tomcat、jetty 这类容器,进一步提升效率节省时间:https://www.oschina.net/p/jfinal-undertow
接下来 jfinal 官方社区将全力打造 app 生态,在应用层面进一步提升开发效率,为开发者带去更大价值,jfinal 俱乐部正在招募第一批入驻 app,有兴趣的同学可以共同参与:https://jfinal.com/my/club
3、 极速之于思想
jfinal 自身:
a:架构极简给予极速最基本保障
b:使用创新算法猛烈提升性能
c:代码实现尽可能简洁、清晰
d:尽可能少地去分配内存。jfinal 模板引擎大量使用该原则提升性能
e:尽可能不使用 Java 反射机制,不得不使用时优先考虑系统启动时一次性初始化
f:尽可能让代码的动作减少,没有多余动作
g:热点代码重点优化
针对用户开发体验的极速更像是一门艺术:
a:尽可能低的学习成本
b:开发过程中尽可能低的认知负担
c:开发体验尽可能连续
d:尽可能少的代码量
三、jfinal 4.8 新功能与改进
毫无疑问,本次 jfinal 4.8 版本,仍然是极简、极速的继续表达。
1: 使用运行时编译技术再次将性能提升 12.9%,开启方式为: Engine.setFastMode(true);
2:优化 FastStringWriter,使用 char[] 缓冲区,避免内存分配
3: ByteWriter、CharWriter 递归中的调用优化为 while 循环
4: 优化 #escape 指令,StringBuilder 字符串拼接改为直接向 Writer 输出
jfinal 4.8 拥有 41 项增强与改进,例如新增 slf4j 日志的官方扩展。 限于篇幅在此不再赘述,感兴趣的同学可以来 jfinal.com 官网下载 changelog 文件:jfinal-4.8-changelog.txt
ONE MORE THING:
JFinal 自由开发者联盟第一批项目正在招募中。为了保障所有上架项目都是极简设计,俱乐部将整套极简设计思想录制成视频供俱乐部小伙伴们下载学习。JFinal 2020 年的目标就是要帮助俱乐部会员成为自由开发者,为自己写代码并获取可观的收益:https://jfinal.com/my/club
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
zuihou-admin-cloud 1.1 发布 , 独立Schema的多租户微服务脚手架
# 更新日志: 1, 删除 原服务表以及相关代码,重新思考系统中 API 接口的实现方案。 2,新增 系统api接口表、应用-系统api 关联表 以及相关接口,用于外部应用的api授权 3,修改 应用表相关字段,并重新生成代码 4,新增 zuihou-scan-starter 起步依赖模块,实现自动扫描服务的所有api接口, 并提供2种远程调用权限服务持久化的方式(feign or rabbitmq) 5,升级 swagger-bootstrap-ui 1.9.6 为 knife4j 2.0.0 6,兄弟项目:zuihou-admin-boot 完成权限、消息、文件服务的代码合并,并改在原来的拦截器,实现网关过滤器的解析token功能,并成功对接现有的前端项目。 # 功能点介绍: 服务注册与调用: 基于Eureka来实现的服务注册与调用,在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。 服务鉴权: 通过JWT的方式来加强服务之间调度的权限验证,保证内部服务的...
- 下一篇
NextDNS 加入 Cloudflare,成为 Firefox 的第二个内置 DoH 提供程序
Mozilla 宣布,NextDNS 将加入 Cloudflare,成为 Firefox 内置的第二个 HTTP-over-HTTPS(DoH)提供程序。 NextDNS 已通过 Mozilla受信任的递归解析器(TRR)程序所施加的条件要求,这些条件包括:(1)限制 NextDNS 从 Firefox 用户使用的 DoH 服务器收集数据;(2)对其收集的数据保持透明;(3)承诺除非执法部门明确要求,否则不会审查、过滤或阻止 DNS 流量。 这意味着从明年某个时候开始,NextDNS 也将作为一个选项出现在Firefox->选项->常规->网络设置->设置->启用 HTTPS 上的 DNS部分。 DNS-over-HTTPS(DoH)是去年在 Firefox 中添加的一项新功能。启用后,它将对进出浏览器的 DNS 通信进行加密。 DNS 流量不仅被加密,还从端口 53(用于 DNS 流量)移动到端口 443(用于 HTTPS 流量),从而有效地将 DNS 查询和响应隐藏在浏览器的 HTTPS 内容的正常流中。加密的 DNS 流量到达所谓的 DoH 解析器。...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装