关于Scala的一些感想(一)

简介:

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

在使用了一段时间下来以后,有一些不是很“清晰”的感受,说实话我自己还没有很好的整理清楚,所以就先记录下来,不保证一定正确,只是个人的在现有经验下的看法而已

框架的选择

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

而且由于Java毕竟已经在企业开发领域活了许久了,因此很多领域中,业界往往都已经选择出了“佼佼者”,比如我们使用Spring来管理Bean的生命周期,使用Spring MVC作web框架,Mybatis作持久层的框架使用,AOP使用Spring AOP或者更强大的Aspectj等。

而由于Scala也是近几年“流行”起来的,虽然使用Scala编写的开源框架很多,但是在很多领域中,往往都还没有选择出其中的“佼佼者”,因此对于我们这些初学者来说,往往都会存在:「不知道该用什么框架」的疑惑。

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

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

  • 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来完成开发。之所以这么选择主要还是因为没有学习成本,而且进度,可能出现的问题我都可控制。

编程语言的定位

此处建议大家看看紫杉的回答,说的非常的好

后记

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

目录
相关文章
|
Scala
176 Scala 项目案例(项目实现)
176 Scala 项目案例(项目实现)
120 0
|
Java Scala
Scala快速入门-8-特质
Scala和Java一样不允许类继承多个超类,特质解决这一局限性 类可以实现任意数量的特质 当将多个特质叠加在一起时,顺序很重要,其方法先被执行的特质排在更后面 Scala特质可以提供方法和字段的实现 特质要求实现它们的类具备特定的字段、方法或超类 特质可以同时拥有抽象方法和具体方法,而类可以实现多个特质
|
消息中间件 分布式计算 Java
Scala入门教程(上)
Scala入门教程(上)
517 0
Scala入门教程(上)
|
安全 JavaScript 前端开发
SCALA程序设计 第一章:scala简介
Scala是一门静态类型语音,是一门以Java虚拟机为目标运行环境并将面向对象和函数式编程语言的最佳特性结合在一起的编程语言。
212 0
|
分布式计算 JavaScript 前端开发
Scala学习系列(一)——Scala为什么是大数据第一高薪语言
Scala学习系列(一)——Scala为什么是大数据第一高薪语言
482 0
Scala学习系列(一)——Scala为什么是大数据第一高薪语言
|
Java 编译器 Scala
Scala学习系列(三)——入门与基础
Scala学习系列(三)——入门与基础
225 0
Scala学习系列(三)——入门与基础
|
Scala
Scala入门到精通——第十一节 Trait进阶
本节主要内容 trait构造顺序 trait与类的比较 提前定义与懒加载 trait扩展类 self type 1 trait构造顺序 在前一讲当中我们提到,对于不存在具体实现及字段的trait,它最终生成的字节码文件反编译后是等同于java中的接口,而对于存在具体实现及字段的trait,其字节码文件反编译后得到的java中的抽象类,它有着scala语言自己的实现方式
3555 0