Skip to main content

myddd-spring-boot与myddd-vertx

1.总体对比

myddd-spring-bootmyddd-vertx
语言JavaKotlin
toolkitsSpring Boot 2Vert.x 4
模式同步编程异步编程
简洁性★★★★★★★
性能★★★★★★★
普及程度★★★★★★★
稳定&可靠★★★★★★★★★
难易度★★★
是否亲生野孩子亲生的

2.详细对比

2.1 编程语言

myddd-spring-boot使用的是最流行的java语言,在后端编程领域,java仍然最那个长盛不衰的语言。它的易学性及强大的生态都决定了在后端语言方面,它仍然是事实上的王者。

myddd-vertx使用的是kotlin,kotlin与java有着密切关联,某种程度上,它是更好的Java,它深度无障碍的兼容java,kotlin与java随时可以互调,kotlin有别于java的主要点是它更简洁,优雅,提供了更多现代语言的特性。

如果你是java的使用者,事实上,从java转向kotlin并不会太难。对于一个优秀的程度员来说,这是非常简单的事情。

2.2 简洁性

java的优势在于简单易懂,基本上大多数程度员都可以很轻易的掌握并使用它进行实际编码开发。

所以,这决定了java在简洁性上是非常差的一门语言,它中规中矩,语法也不够灵活,也没有太多现代化的语法特性。

而kotlin则不一样,它的出现本质上就是为了让java更简洁,所以在设计之初,它就是朝这个目的出发的。更令人惊叹的是,在追求简洁性的同时,它又避免了类似scala这种令人头疼,学习曲线极高的这样的情况,这是非常优秀的表现。

kotlin中的延迟加载特性
private val repository by lazy { InstanceFactory.getInstance(DocumentRepository::class.java) }
kotlin中的等式函数
fun isClosed() = true

kotlin中有大量的简洁性的语法特性,这使得用kotlin编码确实是令人愉悦的,这就决定了myddd-vertx在简洁性上几乎是完胜的。

2.3 toolkits基础

myddd-spring-boot的基础toolkits是Spring Boot 2,在后端领域,Spring Boot 2如同王者一般的存在。

而myddd-vertx则使用的是Vert.x,这是一个使用者非常少众的框架。但它的性能与质量,并不比Spring Boot 2差,甚至是远优于Spring Boot 2,但在流行度上,它远远弱于Vert.x.

使用myddd-vertx,你确实不得不考虑团队对于新技术的接受程度及学习能力,虽然我认为这对于一个优秀的团队算不上什么,但事实上是优秀的团队又有多少?

2.4 模式

myddd-spring-boot使用的是传统的同步及线程阻塞模式,这是所有程序员都熟悉的模式。

同步模式下的代码
class Coder{
public void work(){
this.getUp()
this.driveToOfficePlace()
this.joinMeeting()
this.code()
}
}

同步模式与人的思维是一致的,这决定了它大多数程序员使用它更容易编码出好的代码。

但它的一个显著的特点是:性能较差

异步模式下的代码

class Coder{
public void work(){
this.getUp().onSuccess(()->{
this.driveToOfficePlace(()->{
this.joinMeeting(()->{
this.code()
})
})
})
}
}

异步非阻塞下的代码,性能极佳,但问题在于它不符合人的思维,回调过多也使得代码难以阅读。写出好的代码非常具有挑战性。

但是不用担心,myddd-vertx通过kotlin的协程,改善了这一情况,上述异步模式代码在kotlin中是这样的

myddd-vertx下的异步模式代码

class Coder{
public void work(){
this.getUp().await()
this.driveToOfficePlace().await()
this.joinMeeting().await()
this.code().await()
}
}

通过await()关键字,现在,你可以同时享受异步模式带来的极佳性能,又避免了回调地狱的问题,一举两得。

2.5 性能

毫无疑问,基于vert.x的响应式框架的myddd-vertx在性能上具有完全的优势,这是基于Spring Boot的myddd-spring-boot完全不可相比的。

同一个数据库插入操作,在两者上和性能差别有6-8倍之多。也就是myddd-vertx一个服务相当于6-8个myddd-spring-boot,这种优势是难以置信的,但它就是事实。

myddd-spring-boot性能表现

myddd-vertx性能表现

详细数据请查阅:难以置信的性能优势,来自myddd-vert.x的性能测试报告

2.6 普及程度

很显然,无论是java语言还是Spring Boot框架,其流行度远优于Kotlin或Vertx,在这一点上,myddd-spring-boot完胜。

从团队人员能力考量上来说,使用myddd-spring-boot对团队能力要求将会更低,人员招聘也会更简单。

以上便是从几个主要的角度来对比myddd-spring-bootmyddd-vertx,在有所了解后,相信你会对它们有更直观的理解了。

关注度差

myddd-vertx将会是我主力维护的开源基础框架,因为后续我的项目都会使用此框架。

myddd-spring-boot仅为最低限度的维系它。