转载

使用 Scala 开发 Android

我們先來談談 React 吧?什麼?為什麼是 React ?

其實重點不是 React/Flux 本身,而是它背後所傳達的觀念:Reactive Programming。而 Reactive Programming 最廣為人知的實作其實是 Rx 系列。

Rx 為 Reactive Extension 的縮寫,一開始是出現在 C# 上,之後一些常見的語言也都有相對應的實作,例如 Java 有 RxJava, Objective C 有 ReactiveCocoa。

回到這次的標題:「使用 Scala 開發 Android」。為什麼要用 Scala 開發,不用 Java 呢?剛剛提到的 Reactive Programming 其實也有人稱作 Functional Reactive Programming,也就是說,其實 Rx 這種工具其實適合使用在 Functional Language 上,而 Java 7 之前的 Function 都是次等公民,什麼意思呢?舉例,如果我們要處理某個按鈕被按下要執行的動作,就必須要這樣寫:

因為 Java 本身只有匿名物件,但是沒有匿名函數,所以只好使用匿名物件來包裝函數,可以說是繞了一圈。在這個例子中,「匿名物件」就是「一等公民」,而「方法」就是「次等公民」。那麼使用 Functional Language 實作的話會長什麼樣子呢?

少了很多不必要的宣告對吧?這就是為什麼要使用 Scala 的原因之一。

那為何不用 Java 8 呢?也許可以吧。實際上很多 Rx 教學也是使用 Java ,並配合一些 preprocessor ,讓你可以在 Java 7 寫匿名函數。而我的理由是,既然要使用 Functional Language ,那就乾脆跳脫原本的框架,直接跳到另一個理論上跟 Java Runtime 相容的語言不是更好嗎?尤其 Scala 又是 Compile 成 bytecode ,幾乎不會有 Performance 上的疑慮。

正文到此结束
Loading...