最近在完成自己的開源項目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來完成開發。之所以這么選擇主要還是因為沒有學習成本,而且進度,可能出現的問題我都可控制。
編程語言的定位
此處建議大家看看紫杉的回答,說的非常的好
后記
暫時只想到了這么多,后續有更多的想法的時候,我再更新這個文章。