关于Scala的一些感想(一)

最近在完成本身的开源项目Application-center的时候,使用了Scala编程语言。git

在使用了一段时间下来之后,有一些不是很“清晰”的感觉,说实话我本身尚未很好的整理清楚,因此就先记录下来,不保证必定正确,只是我的的在现有经验下的见解而已github

框架的选择

Java之因此这么繁荣很大的程度上是由于第三方开源社区的支持,当咱们使用Java完成一些项目的时候,我每每都是先求助于开源社区,看看是否存在现有的解决方案,绝大多数时候咱们都能找到合适的框架,而后直接用或者稍微修改一下就行了。web

并且因为Java毕竟已经在企业开发领域活了许久了,所以不少领域中,业界每每都已经选择出了“佼佼者”,好比咱们使用Spring来管理Bean的生命周期,使用Spring MVC做web框架,Mybatis做持久层的框架使用,AOP使用Spring AOP或者更强大的Aspectj等。数据库

而因为Scala也是近几年“流行”起来的,虽然使用Scala编写的开源框架不少,可是在不少领域中,每每都尚未选择出其中的“佼佼者”,所以对于咱们这些初学者来讲,每每都会存在:「不知道该用什么框架」的疑惑。编程

虽然有Awesome Scala 可是咱们也开源发现不多有一家独大的状况。不过好在Scala基于JVM,可使用Java的框架,这样咱们的选择面也更加的多了起来。后端

我最初在完成Application-center的时候,调研了下面的几组方案:app

  • Play framework + Slick 3.0.3
  • Spray-can + Slick
  • Spring MVC + Mybatis
  • scalatra

Play Framework从目前来看在Scala编写的web框架中处于稍微“领先”的地位,可是对于以前一直使用Spring Mvc的Java开发者来讲,在使用习惯上差异太大了。还有Slick,感受这个框架是像整合hibernate和Mybatis的优良属性,可是目前感受有点“四不像”,并且对事务的支持感受过低级了,完成无法和Spring的事务管理器相提并论。也由不少开发者,包括我也使用Scala基于JDBC的风格编写过一个Scala JDBC小工具来和关系型数据库打交道。可是说实话都不是太好用。Spray的那一套东西,基于Akka,性能很不错,可是那套东西不是为了web开发而弄的,更多的是为了后端数据接口弄的。并且对于不熟悉Akka的开发者来讲,学习成本简直不要过高过高。框架

项目初期我都使用新的工程尝试了前两种解决方案,多是由于我对Scala和Akka还不是很熟练,因此感受学习成本高了不少,尤为是Spray那玩意,让我一度怀疑个人智商。编程语言

所以为了「不折腾」为了加速开发进度,我最终仍是选择了Spring Boot + Mybatis来完成开发。之因此这么选择主要仍是由于没有学习成本,并且进度,可能出现的问题我均可控制。工具

编程语言的定位

此处建议你们看看紫杉的回答,说的很是的好

后记

暂时只想到了这么多,后续有更多的想法的时候,我再更新这个文章。

相关文章
相关标签/搜索