Scala簡介
Scala是一門多范式的編程語言,一種類似java的編程語言,設計初衷是實現可伸縮的語言、并集成面向對象編程和函數式編程的各種特性。
scala是純粹的面向對象的語言。java雖然是面向對象的語言,但是它不是純粹的,因為java的基本數據類型不是類,并且在java中還有靜態成員變量和靜態方法。相反,scala是純粹面向對象的,每個值都是對象,每個操作都是方法調用。
Scala的特性
1.面向對象特性
Scala是一種純面向對象的語言,每一個值都是對象。對象的數據類型以及行為由類和特征(Trait)描述。類抽象機制的擴展有兩種途徑。一種途徑是子類繼承,另一種途徑是靈活的混入(Mixin)機制。這兩種途徑能避免多重繼承的種種問題。
2.函數式編程
Scala也是一種函數式語言,其函數也能當成值來使用。Scala提供了輕量級的語法用以定義匿名函數,支持高階函數,允許嵌套多層函數,并支持柯里化。Scala的CaseClass及其內置的模式匹配相當于函數式編程語言中常用的代數類型(AlgebraicType)。
更進一步,程序員可以利用Scala的模式匹配,編寫類似正則表達式的代碼處理XML數據。在這些情形中,順序容器的推導式(comprehension)功能對編寫公式化查詢非常有用。
由于JVM不支持尾部遞歸,Scala也不能完全支持尾部遞歸優化。不過,在簡單的情況下,Scala編譯器可以把尾部遞歸優化成循環。
4.靜態類型
Scala是具備類型系統,通過編譯時的檢查,保證代碼的安全性和一致性。類型系統具體支持以下特性:
泛型類,型變注釋(VarianceAnnotation),類型繼承結構的上限和下限,把類別和抽象類型作為對象成員,復合類型,引用自己時顯式指定類型,視圖,多態方法。
5.擴展性
Scala的設計承認一個事實,即在實踐中,某個領域特定的應用程序開發往往需要特定于該領域的語言擴展。Scala提供了許多獨特的語言機制,可以以庫的形式輕易無縫添加新的語言結構:
任何方法可用作前綴或后綴操作符,可以根據預期類型自動構造閉包。聯合使用以上兩個特性,使你可以定義新的語句而無須擴展語法也無須使用宏之類的元編程特性。
5.使用Scala的框架
Lift是一個開源的Web應用框架,旨在提供類似RubyonRails的東西。因為Lift使用了Scala,所以Lift應用程序可以使用所有的Java庫和Web容器。
scala語言主要應用領域
cala運行于JVM之上,并且它可以訪問任何的java類庫并且與java框架進行互操作,scala也大量重用了java類型和類庫。
大數據的開發語言是Scala的原因:
1:大數據的本身是計算數據,而Scala即有面向對象組織項目工程的能力,又有計算數據的功能。
2:現在大數據事實上的計算標準框架Spark,它是用Scala開發的,因為計算數據,Scala它是函數式編程,它實現算法非常簡潔優雅。
例:kafka,它是一個消息中間件,如果外部數據要流進大數據中心,我們一般都要用kafka作適配器,那如果大數據中心的數據流到外部,也是用kafka(如Spark計算的數據要交給HBASE或MySql,期間我們都會用kafka),很多的大數據組件都是用的Scala編寫的,所以,如果你想成為一個較高級的大數據開發高手,你一定要掌握Scala。
-
scala
+關注
關注
0文章
42瀏覽量
6453
發布評論請先 登錄
相關推薦
評論