2015/8/10

Top scala libraries in github projects

在 javacodegeeks 有篇文章,作者針對 github projects 裡面去分析使用了哪些 scala libraries,藉此得知目前 scala 在社群中發展的狀況,哪些 scala library 最熱門,被使用最多的 project。

文章

這個 popular scala library 的 survey 在 2014 年也有做,是另一個同樣在 takipi 工作的工程師處理的。

2015: The Top 100 Scala Libraries in 2015 – Based on 64,562 GitHub Libraries

2014: Top 100 Most Popular Scala Libraries – Based on 10,000 GitHub Projects

分析結果

在作者分析過 Top 100 Libraries 之後得到幾個結論

  1. scala 社群正在快速的發展當中,有 33 個新進榜的專案
  2. spark #45 的排名超越了 hadoop #95
  3. 21.3% 的 top scala projects 使用了 Play framework
  4. 出現了很多 javascript 與 scala 整合的 library,包含了 scala.js(scala to js compiler)
  5. 最熱門的 Scala IDE 是 IntelliJ

另外還有一些次要的結論

  1. 21個專案來自 Typesage team
  2. Akka 很熱門,排名 #9
  3. scalatest 與 junit 是最多人引用的專案,scalatest 有 2521個(34.4%)專案使用
  4. logback 是最熱門的 logging library
  5. Google Guava在 Java 領域中排名 #4,但在 scala 領域中排名 #37
  6. Scalaz 類似 Guava 的角色,延伸了 scala 的核心,排名 #18
  7. H2 是最熱門的 database
  8. Jetty在 scala 領域中比 java 熱門

比較一下2014年的結果

  1. 2014年還是 slf4j 與 log4j 的年代,但在 2015年已經換成了 logback
  2. scalatest, Akka 維持了熱門程度

特別的發現 scala.js

scalajs 是我沒有聽過的一個專案,專案目標是可以將 scala code 轉換為 javascript,還將一堆 scala 專案都 porting 到了 javascript。

scala.js 把 scala 跟 javascript 連結在一起,讓 javascript library 取得了 scala 靜態資料型別的優勢,同時我們可以從 demo code 中發現,簡潔的 scala 語法,轉換出來的 javascript code 的成效,也就等於把 scala 帶入了 browser 的領域,不再專屬於 java JVM。

Tutorial/Training: Why Scala.js - Preview 是一個簡短的 scalajs tutorial,影片中簡短 demo 了 scalajs 的能力,首先是在網頁上繪圖,另外是從 scalajs 中呼叫另一個氣象網站的 API。

T2_Haoyi_Why_Scala.js.pdf 是 Li Haoyi,一位早期的 scala.js code contributor 的簡報,他提到 scala.js 誕生的原因,是因為現在的 web programmer 都需要學習 client 與 server 兩種語言,程式碼不能重用。另外 javascript 程式碼中 String 的濫用,如果使用 scala.js 可以讓 String-typing 變成 Strong-typing,更容易寫出堅固的 web application。

scala.js 並不是 javascript,有個最簡單的例子:

javascript>["10", "10", "10", "10"].map(parseInt)
[10, NaN, 2, 3] // WTF

scala.js> List("10", "10", "10", "10").map(parseInt)
List(10, 10, 10, 10) // Yay!