myddd-java归来 -- 那个被遗弃的"野孩子",我又把它捡回来了

2021-06-21 19:52:33 浏览数 (1)

在我对myddd的规划中,并不包含myddd-java,因为我已经准备使用myddd-vertx替换掉它了。

今天考虑了下,决定继续维护myddd-java版本,所以今天我对它做了一个简单的升级与更新。

myddd-java简介

myddd-java是基于Java及Spring Boot的领域驱动基础框架。

myddd-java始终坚持以下两个原则:

  1. 最大化的倡导ddd编码风格与模式
  2. 把支持Spring Boot做为第一要务 Spring Boot全家桶技术,已成为中小企业,个人开发者开发的主流选择。选择支持Spring Boot,也是期望为更多的人与团队服务。在不影响他们的整体架构的选型下,更好的推广与传播DDD

myddd-java是我在2020年在做一个后端项目时,基于dddlib整理的一个基础框架。

1.2.0升级说明

升级说明

  1. 适配Spring Boot至最新的稳定版2.4.5
  2. 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这种全家桶没有太多好感,但不可否认的是,在后端编码中,仍然没有任何一种其它模式能与这两者的搭配相抗衡。

  1. Java语言的易学性,使得构建一个开发团队较为容易,成本也低。
  2. Spring Boot解决了项目技术主流各个方面的问题,不管你认可不认可,喜欢不喜欢,用它一定能解决问题。

所以,继续支持Java及Spring Boot仍然具有非常重要的价值

  • myddd-vertx带来了双重挑战,不利于推广与使用

虽然我个人认为myddd-vertx无论是在代码简洁性上,还是性能上,都远优于myddd-java这种传统的模式,但myddd-vertx毕竟对个人或团队有着双重的挑战

  1. 你得熟悉与掌握一门新的语言--Kotlin
  2. 你得学习与理解异步编程的模式,并掌握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开源协议

0 人点赞