Scala 是一门类 Java 的编程语言,它结合了面向对象编程和函数式编程。
Scala 的设计目的是要和两种主流面向对象编程语言 Java 和 C#实现无缝互操作,这两种主流语言都非纯面向对象。Scala运行在Java虚拟机上,并兼容现有的Java程序。
Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。
1.为什么使用scala?
-
开发大数据应用程序(Spark程序、 Flink程序)
-
表达能力强, 一行代码抵得上Java多行, 开发速度快
-
兼容Java, 可以访问庞大的Java类库, 例如: 操作mysql、 redis、 freemarker、 activemq等等
3.scala对比Java
下面通过两个案例, 分别使用java和scala实现的代码数量
3.1案例一
定义三个实体类(用户、 订单、 商品),Java代码如下:
-
-
-
-
-
-
private List<Order> orders;
-
public String getName() {
-
-
-
ublic void setName(String name) {
-
-
-
ublic List<Order> getOrders() {
-
-
-
ublic void setOrders(List<Order> orders) {
-
-
-
-
-
-
-
-
-
private List<Product> products;
-
-
-
-
ublic void setId(int id) {
-
-
-
ublic List<Product> getProducts() {
-
-
-
ublic void setProducts(List<Product> products) {
-
4this.products = products;
-
-
-
-
-
-
-
-
-
-
-
-
ublic void setId(int id) {
-
-
-
ublic String getCategory() {
-
-
-
ublic 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)
3.2 案例2
有一个字符串(数字) 列表, 我们想将该列表中所有的字符串转换为整数。
-
-
-
List<Integer> ints = new ArrayList<Integer>();
-
-
ints.add(Integer.parseInt(s));
-
-
-
val ints = list.map(s => s.toInt)
3.3 Java 和Scala底层执行原理
尖叫提示:scala程序运行需要依赖于Java类库,必须要有Java运行环境,scala才能正确执行。根据上述流程图,要编译运行scala程序,需要
-
jdk(jvm)
-
scala编译器(scalaSDK)