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。