有哪些優秀的 Scala 開源項目?


謝邀。

1. spark 顯然已經成為了scala里最引人關注的項目。

2. kafka 可能是僅次於spark的被廣泛了解的scala開源產品。

3. akkaspray,akka 太優秀了,以至於被 typesafe收購,並直接用akka替代scala自己的actor,原作者現在擔任typesafe的CTO

4. playlift, 在web框架里,比較突出的就是play和lift了,play也已經被typesafe收購(有八卦說當年typesafe找過lift的作者dpp,他不願意被收購),也有一些小眾一點的web框架也挺輕巧的,但沒法跟這兩個齊名。

5. ScalikeJDBC,處理數據訪問的一些框架我不太熟悉

6. twitter 公司開源的一些scala產品,比如rpc框架finagle,分散式鏈路跟蹤框架zipkin 等

7. linkedin公司開源的一些scala產品,除了 kafka 之外,還有Samza 等

8. 一些基於類型系統框架,scalaz 或 shapless

9. 測試框架Specs

不難看出scala很大程度上在大數據領域比較搶眼,其他領域並不算特別突出,如果除了大數據方面,我認為akka 是scala里最有價值的產品。


補充: Salat 一個 mongodb ODM框架


1. Scalaz 和 Cats有許多typeclass的東西,很多都挺實用,現在相對Cats還沒有Scalaz成熟。

2. shapless可以省下很多boilerplate

3. http4s的設計理念基於scalaz的typeclass,如果對typeclass了解的話,不用看文檔都能直接用http4s寫json api。

5. circe用來解json,性能很好而且type safe

6. Monix非常好用,實際用過akka很長時間的人知道,akka本身提供的api是比較底層的,要正確的(考慮到fault tolerance,back pressure等)運用實際上挺累的。akka-stream是在其基礎上實現的流api,但是我總覺得用graph來定義流的走向實在很彆扭。Monix是基於reactive extension,加入了back pressure及適用於scala的特性,我覺得api設計更合理。提到流,那必定還用說下scalaz-stream / fs2,基於pull-based的設計,api上要求使用者定義流的side-effect,不同的side effect需要使用者留意處理才能compose。好處是靠編譯器提醒side effect的處理,壞處的是比較啰嗦?三個庫都很優秀,個人推薦monix。

7. scalaz的Task或monix的Task代替scala future。Scala本身的future是eager evaluation,換句話說不可能做到referential transparency。而且還需要把execution context到處往有future的地方送(除非你用global execution cpntext implicit),不覺得很累嗎?咱們能好好利用lazy evaluation,在最後需要真正返回值的地方才把execution context送上嗎?心好累啊......


厚著臉皮推薦下我自己的項目Muse-CGH(GitHub - MrVPlussOne/Muse-CGH: A program to make Computer Generated Handwriting)

一個將英文文本轉換成花體手寫效果的程序。

程序運行截圖是醬紫的:

把輸出的圖片列印到紙張上,就是這個效果(內容是一份調研報告,老師要求必須用手寫)

好緊張,老師會看出來嗎~


1. Cats:用這個庫你就能把code寫得很fp了,會很漂亮,resource safe, referential transparent

2. fs2: 如果你有很多data需要streaming,這個庫很好的。

3. http4s:用來寫寫http server/client

4. circe:用來處理Json的

5. doobie:mysql的client

6. scodec:bytecode的serializer/deserializer

這些都是我用過的Typelevel下的projects,基本上typelevel的project都值得看


typesafe(已經改名為lightbend)公司開源出來的項目就用多說了。

activator部署工具,akka分散式actor,slick資料庫中間件。最近的lagom微服務框架,你可以關注一下。

我說一下我用的比較多的,breeze,科學計算項目,這相當於scala的numpy。閱讀源碼,你會學到很多表達式單子和lazy高效計算以及很多優化演算法,張量計算等。


楊博根本不需要回答這個問題,這問題的存在本身就已經把廣告打了。


sbt - The interactive build tool Scala項目構建工具

Slick 原ScalaQuery,被Typesafe收編,寫SQL非常好用,還有更高級的用法.


lauris/awesome-scala

:)


推薦閱讀:

目前為止,《中國好聲音》哪位選手唱得最好?理由是什麼?
你是如何開始學的木藝?可以介紹一下經驗嗎?
有哪些經典的值得一看的韓劇?
得知9/11恐怖襲擊的第一時間你在做什麼?第一反應是什麼?有什麼感受?
如何以王家衛的手法寫一篇適用於考試的作文?

TAG:調查類問題 | 開源項目 | Scala |