![]() |
VOOZH | about |
個人覺得比較運行速度其實沒啥意義, 因為兩種語言都是生成 JVM 的字節碼, 依賴 JVM 這個虛擬平台來跑代碼. 除非 Scalac (scala的編譯器) 有重大 bug, 生成的字節碼執行讓人無法接受, 否則基本上不會相差太多. 再說, scala 都到大版本2了, 這種概率實在是不大.
相比較與 Java, 在下覺得 Scala 最主要的有以下兩點優勢:
FP 泛型支持input -> output (scala 也是這麼表示一個函數的), 沒有任何副作用, 與狀態無關, 由於這種特性, 所以函數式的編程範式在分布式領域有很多好處類型系統支持
如果說 Java 是一種類型安全的語言, 那麼毫無疑問, Scala 的類型更加安全, 從某種程度上說, Scala 的類型是圖靈完備的, 而 Java 不是. 我的一位好朋友在這方面研究的比較深( ), 而我對與 Scala 的類型系統的理解, 也還是皮毛.
正是以上這兩點大優勢, 造成了 Scala 比 Java 更加安全, 同時又具備靈活性, 想像力.
其他語言層面上的優勢AbstractClass 呢? 對不起, Java 只支持單繼承object在 Java 中, 想要延遲加載一個單例? double check吧object 中將變量修飾為 lazy 即可在 Java 中, 想要對集合進行一些操作? 使用一層一層的 for 循環吧SQL般的享受.在 Java 中, 在並發中想對Future進行回調? 對不起, Future 不是 Listenable (無法支持回調), 除非你使用額外的工具(如 guava, spring)在 Java 中, 要透明擴展一個第三方庫的類怎麼辦? 包裝, 再加一層.
在 Scala 中, 有強大的 implicit 機制讓你更優雅的做到這一點, 同時還能保證類型安全(比起 Ruby 的 monkey patch, 要安全得多)
Scala 的表達力很強, 相同功能的代碼, 用 Java 和 Scala 的行數不可同日而語.
這些單單是語言層面上的優勢, 除此之外, Scala 還能無縫結合 Java
儘管羅列了如此多的好處, 但 Scala 有如下劣勢:
對於程式設計師來說: Scala 很難學, 但值得學
對於企業來說: Scala 是過濾優秀(好學)程式設計師(Geek)的好濾斗.