原因:
- 開發大數據應用程序 (Spark程序、Flink程序 )
Hadoop已經是我們大數據領域的事實標準了。Spark生態並不是要取代Hadoop生態,而是爲了更好的拓展大數據生態,兩者結合。而Spark由我們Scala開發的,我們學習Scala爲了更好的去學習Spark。
-
表達能力強,一行代碼抵得上Java多行,開發速度快。 優雅,代碼簡介邏輯更加清晰。
-
兼容Java,可以訪問龐大的Java類庫,例如:操作mysql、redis、freemarker、activemq等等
案例對比:
假設定義三個實體類(用戶、訂單、商品)
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) // 商品實體類
總結
看到這裏是不是已經對scala愛不釋手了,在接下來的幾天,我會把系統的把scala的基礎用法介紹一下。