2021年大数据常用语言Scala(一):Scala简介
目錄
一、Scala簡介
為什么使用scala
Scala對比Java
案例
一、Scala簡介
scala是運行在JVM上的多范式編程語言,同時支持面向對象和面向函數編程
- 多范式:就是包含多種編程思想。目前主流的編程思想有4中,即面向對象、面向過程、面向函數、以及泛型
- 面向函數一句話形容:函數也是一個對象,可以作為參數進行傳遞。
也就是:
?面向對象 :傳遞的參數是具體的對象或者值
?函數式編程:傳遞的參數可以是一個函數(處理邏輯)
- 運行在JVM之上:
Scala程序編譯執行流程
就像學習MapReduce中, 各種序列化器. 類比一下, 比如: IntWritable 以及 Text , 都是把內容進行序列化, 也就是輸入不同, 輸出相同. 不同的輸入, 序列化為同樣格式的內容, 運行在hadoop上. 同理, 我們可以認為, scala 和 java 就類比有個 ScalaWritable 以及 JavaWritable. 負責對java 以及Scala進行序列化, 輸出是什么呢? 輸出就是我們的字節碼, 也就是 .class 文件. 用于運行在JVM之上.
早期,scala剛出現的時候,并沒有怎么引起重視,隨著Spark和Kafka這樣基于scala的大數據框架的興起,scala逐步進入大數據開發者的眼簾。scala的主要優勢是它的表達性。
為什么使用scala
開發大數據應用程序(Spark程序、Flink程序)
Spark生態并不是要取代Hadoop生態,而是為了更好的拓展大數據生態,兩者結合.
而Spark由我們Scala開發的,我們學習Scala為了更好的去學習Spark。
表達能力強,一行代碼抵得上Java多行,開發速度快。 優雅,代碼簡介邏輯更加清晰。
兼容Java,可以訪問龐大的Java類庫,例如:操作mysql、redis、freemarker、activemq等等
Scala對比Java
通過下面的案例,對比分別使用Java和Scala實現的代碼數量
案例
定義三個實體類(用戶、訂單、商品)
Java代碼
/***?用戶實體類*/
public?class?User {private?String?name;private?List<Order>?orders;public?String?getName()?{return?name;}public?void?setName(String?name)?{this.name?=?name;}public?List<Order>?getOrders()?{return?orders;}public?void?setOrders(List<Order>?orders)?{this.orders?=?orders;}
}/***?訂單實體類*/
public?class?Order {private?int?id;private?List<Product>?products;public?int?getId()?{return?id;}public?void?setId(int?id)?{this.id?=?id;}public?List<Product>?getProducts()?{return?products;}public?void?setProducts(List<Product>?products)?{this.products?=?products;}
}/***?商品實體類*/
public?class?Product {private?int?id;private?String?category;public?int?getId()?{return?id;}public?void?setId(int?id)?{this.id?=?id;}public?String?getCategory()?{return?category;}public?void?setCategory(String?category)?{this.category?=?category;}
}
Scala代碼
case?class?User(var?name:String,?var?orders:List[Order]) // 用戶實體類
case?class?Order(var?id:Int,?var?products:List[Product]) // 訂單實體類
case?class?Product(var?id:Int,?var?category:String)?? // 商品實體類
總結
以上是生活随笔為你收集整理的2021年大数据常用语言Scala(一):Scala简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据Flink(四十二):
- 下一篇: 2021年大数据常用语言Scala(二)