为艺术而技术

Java Web Framework的再次兴盛

September 15, 2019

在一个行业待久了,有一个好处就是你可以把很多事情联系起来。就像中国历史的300年轮回周期律一样,Java从我入行的2005年到现在(2019)的这14年中就好像经历了好几个朝代一样,好多framework起起落落,最近又有一波兴起,让我不禁想起来14年前第一波的繁荣景象,当初MVC模式大兴其道,大部分框架都基于此,包括大名鼎鼎的Struts, Webwork,Spring MVC, 当然还有另外一个组件流派,代表项目有Sun自家的JSF,以及Apache旗下的Tapestry。这些项目都负责前段的模型,后端则是一水的 Spring + Hibernate,和流行的Struts合在一起就是传说中的”SSH”.现在回头看这些老家伙,好像只有Spring MVC在Spring的加持下,一路风雨走下来,过的还不错。当时有不少好事者把这些框架都收集起来加以点评和比较,在业内很受欢迎,其中我印象最深的就是Matt Rabile,他写了不少文章不说,后来干脆自己创建了一个快速启动框架Appfuse,让你自己来选择自己的前后台框架来快速搭建,有点类似现在的starter,比如Spring的,还有Vertx的。顺便说下这位老兄,最近好像又盯上了新的风口: Angular + Spring boot, 比如他写的这篇文章,以及他关注并贡献的jhipster,有兴趣的朋友也可以跟风一下,话说回来,这也许就是这个行业内的一个有意思的地方,有的人负责创造,自然就有人负责跟随。

历史的车轮到了今天,在Java Web这块肥沃的土壤里又长出了众多茁壮的欣欣向荣的框架了,注意这次后面的架构思想是Microservice,原因有好几个,一是硬件虚拟化技术的成熟导致比如Dokcer等部署方案的涌现,这样对于框架来说就大大简化了,加上Rest思想的深入人心,如何能够更快更简单的部署以及更灵活的扩展成了关注点;再一个原因就是Servlet大一统江湖的崩塌导致人心思变,各种Reactive Programming框架的兴起,我这里有提及;另一个但不是最后一个的原因就是Functional Programming模式的兴起以及其他由其他语言激发出来的一些框架特点的引领。

在讨论这些微服务框架之前,我们先来看看大的图景,也就是主流大佬,我认为是这三巨头:

这三巨头基本上占据了半壁江山,下面所列的这些框架都是很有希望但是目前还都是小喽罗的角色。他们包括并不限于此列表的:

关于这些框架的评论文章最好的三篇文章在这里这里以及这里

一些数据

Micronaut Javalin Sparkjava Ktor Jooby Dropwizard Akka-http
Kotlin支持 Y Y Y Y Y N N
活跃开发度 5 5 2 5 5 5
Github星数 2756 3288 8467 5641 1069 7350 965

google趋势

trend

trend2

从近两年的发展趋势来看,

  • 上升趋势: Micronaut, Ktor, vertx
  • 保持不变: Javalin, Jooby
  • 下降趋势: Dropwizard, akka

性能比较

根据Techempower的测试,大概性能排名如下

rank Framework Performance (higher is better) Performance (higher is better)
4 vertx-postgres 44979 95.8%
9 micronaut 33173 70.6%
30 jooby2-jetty 25774 54.9%
60 ktor 21046 44.8%
61 akka-http 21039 44.8%
113 spark 16014 34.1%
222 dropwizard-postgres 6607 14.1%

小结

综上,值得重点关注的是Vertx 和 Micronaut。本次讨论的主要是后端,下次讨论前段的webAseembly和cross platform programming的问题,先挖个坑。

感谢

感谢 tablesgenerator 提供markdown的table generator.


Qingfei Yuan

Written by Qingfei Yuan who builds useful things.

© 2019 - 2020 yuanqingfei
Creative Commons License