在我对myddd的规划中,并不包含myddd-java,因为我已经准备使用myddd-vertx替换掉它了。
今天考虑了下,决定继续维护myddd-java版本,所以今天我对它做了一个简单的升级与更新。
myddd-java简介
myddd-java是基于Java及Spring Boot的领域驱动基础框架。
myddd-java始终坚持以下两个原则:
- 最大化的倡导ddd编码风格与模式
- 把支持Spring Boot做为第一要务 Spring Boot全家桶技术,已成为中小企业,个人开发者开发的主流选择。选择支持Spring Boot,也是期望为更多的人与团队服务。在不影响他们的整体架构的选型下,更好的推广与传播DDD
myddd-java是我在2020年在做一个后端项目时,基于dddlib整理的一个基础框架。
1.2.0升级说明
升级说明
- 适配Spring Boot至最新的稳定版2.4.5
- 在myddd starter中添加了对myddd-java的支持
现在开始,你可以在myddd-starter中快速生成myddd-java项目
为何我要遗弃它?
- 它是『野孩子』,myddd-java来源于dddlib
myddd-java这个框架并不是我从零开始构建的。
我在2020年做一个后端项目时,准备选择Spring Boot这个技术来做,又想保持DDD编码理念,但我熟悉的dddlib这个并没有适配与支持Spring Boot。
所以我就把dddlib改了下,在它的基础之上,将其中几个最重要的几个支撑DDD理念的模块与Spring Boot做了整合,这就是myddd-java最初的来源。后面做项目时才添加了一些其它自有的代码与模块。
在dddlib上进行改造,也是因为dddlib很久没有更新,感觉有点可惜,就把它与Spring Boot整合了下,也是期望能让更多的人接触与使用DDD。
dddlib是杨宇老师的开源框架,你可以访问它的源码以了解更多。https://github.com/dayatang/dddlib
- myddd-vertx才是"亲生的",是我从零开始构建的基础框架
myddd-vertx是基于Kotlin与Vert.x的响应式领域驱动基础框架,与myddd-java不同,这个是我在自己对DDD理解之上,从零开始一行一行代码构建出来的基础框架
这才是 『亲生的』好吧。当然更喜欢亲生的啦。
- myddd-java的代码简洁性与性能,都远不及myddd-vert.x
由于myddd-java是传统的Java的线程模式的同步编码模式,相比之下,无论是代码的简洁性,还是整体框架的性能,其与myddd-vertx相比有较大的差距。
为何捡回来了
- java与Spring Boot仍然是后端开发的主流选择
虽然很多后端的编程人员,包括一些优秀的人员不太喜欢Java这个语言,更是对Spring这种全家桶没有太多好感,但不可否认的是,在后端编码中,仍然没有任何一种其它模式能与这两者的搭配相抗衡。
- Java语言的易学性,使得构建一个开发团队较为容易,成本也低。
- Spring Boot解决了项目技术主流各个方面的问题,不管你认可不认可,喜欢不喜欢,用它一定能解决问题。
所以,继续支持Java及Spring Boot仍然具有非常重要的价值
- myddd-vertx带来了双重挑战,不利于推广与使用
虽然我个人认为myddd-vertx无论是在代码简洁性上,还是性能上,都远优于myddd-java这种传统的模式,但myddd-vertx毕竟对个人或团队有着双重的挑战
- 你得熟悉与掌握一门新的语言--Kotlin
- 你得学习与理解异步编程的模式,并掌握Vert.x这个玩意
我估摸着就算myddd-vertx优势明显,但基于上述两个原因,真正会尝试并使用的人并不会太多。
- 维护它的成本并不高
维护它并不需要花费多少时间,因为我并没有想去造任何的轮子,只是尽量支撑能较好的实现DDD领域驱动理念而已。
至于在myddd-stater中支持myddd-java项目的生成,这个成本就更低了。
因为myddd-starter项目生成的底层逻辑是我设计了一套代码生成的规则 ,在这个规则之上,添加新的项目生成模块,并不需要修改代码,只需要按规则建立一些模板文件就行了
对比
简要对比下这两个框架
myddd-java | myddd-vertx | |
---|---|---|
语言 | Java | Kotlin |
toolkits | Spring Boot 2 | Ver.x 4 |
模式 | 同步编程 | 异步编程 |
简洁性 | ★★ | ★★★★★ |
性能 | ★★ | ★★★★★ |
普及程度 | ★★★★★ | ★★ |
稳定可靠 | ★★★★★ | ★★★★ |
难易度 | 容易 | 有门槛 |
是否亲生 | 野孩子 | 亲生的 |
你对哪个更感兴趣呢?
如果你想尝试,就从myddd starter开始,访问https://starter.myddd.org快速生成一个myddd项目。生成的项目是附带一个简要的示例程序,并包含单元测试。
附录
这里有两篇文章,与myddd-java及myddd-vertx稍有关联,如有兴趣,你可以查阅。
为什么我会选择Vert.x与Kotlin
难以置信的性能优势,来自myddd-vert.x的性能测试报告
myddd-java的源码已开放,myddd-vertx的源码也会在今年开放。它们都基于MIT开源协议