Protogalaxy

Planet #0

PHSS-Core开发日志#1 后台技术选型

1.Maven还是Gradle?

Maven的优点:Maven配置文件的繁琐有时会反而成为它的优点,Gradle虽灵活,但在大型项目中,Maven的配置方式所带来的稳定性目前仍不是Gradle所可比拟的。

Maven的缺点:当项目体积开始膨胀时会导致XML形式的配置文件阅读体验较差,维护起来比较麻烦。Build一次耗时较Gradle慢很多。

Gradle的优点:Gradle的官网提供了非常详细的与Maven的对比,在灵活性上,Maven较为死板的配置方式有时会造成定制化困难。在Build性能比较中,Gradle表现的也相当优异。由于使用了特定领域强化的语言Groovy,在编写Build脚本时所带来的体验也是XML所无法比拟的。

Gradle的缺点:Gradle目前看来只是比较适合小型项目的开发,有时候Gradle所带来的过于的便捷性反而会成为绊脚石,在组织上会带来一些不便。

考虑到项目变大的时候,XML形式的配置文件虽然较为复杂,但易于维护的特性,并且相较于Gralde,我还是比较熟悉Maven,故选择Maven做依赖维护。

2.ORM框架

Hibernate:作为老牌超重型ORM框架,Hibernate带来了便捷的ORM映射方式,可以使开发者迅速建立起DataSource映射,远离复杂的数据映射过程。但是由于其过于臃肿,在超大量数据读写时可能会造成性能瓶颈。

Mybatis:新兴的ORM框架Mybatis与其说是一个完整的ORM框架,倒不如说是一个ORM半成品,高级查询还是要开发者手动编写SQL,不过这也是Mybatis有用的地方,在大量数据读写的场景下,手动编写SQL查询语句往往可以带来更好的性能表现。

考虑到本应用并不是在高吞吐环境下使用,并且配合新JPA规范的Hibernate用起来也相当顺手,故选择Hibernate当作项目的ORM框架。

 3.Spring Boot / Dropwizard

依赖对比:

 Spring BootDropwizard
HTTP servin'Tomcat / Jetty / UndertowJetty
REST modelin'Sping(default) / JAX-RSJersey
JSON parsin' and generatin' loggin'JacksonJackson
loggin'Logback / log4j2Logback
validatin'Spring Data REST /Hibernate ValidatorHibernate Validator
figurin' out what your application is doin' in productionSpringMetrics
databasin'Spring Data / HibernateJDBI / Hibernate
migratin'Liquibase

在依赖选择上,Spring Boot拥有更大的空间,并且Spring全家桶的发展状况也越来越好,不失为一个很好的选择。

从Github生态来看,截止目前(2018/3/8),Spring Boot在Github上拥有21.8K Star,16.9K Fork,而Dropwizard则有6.41K Star,477 Fork。

所以无论从社区生态,依赖选择空间还是发展前景来看,Spring Boot都是一个不错的选择。

发表评论