1.1 概述
1.1.1 为什么学习Scala
1)Spark—新一代内存级大数据计算框架,是大数据的重要内容。
2)Spark就是使用Scala编写的。因此为了更好的学习Spark, 需要掌握Scala这门语言。
3)Spark的兴起,带动Scala语言的发展!
1.1.2 Scala发展历史
联邦理工学院的马丁·奥德斯基(Martin Odersky)于2001年开始设计Scala。马丁·奥德斯基是编译器及编程的狂热爱好者,长时间的编程之后,希望发明一种语言,能够让写程序这样的基础工作变得高效,简单。所以当接触到JAVA语言后,对JAVA这门便携式,运行在网络,且存在垃圾回收的语言产生了极大的兴趣,所以决定将函数式编程语言的特点融合到JAVA中,由此发明了两种语言(Pizza & Scala)。
Pizza和Scala极大地推动了Java编程语言的发展。
1)jdk5.0 的泛型,for循环增强,自动类型转换等,都是从Pizza 引入的新特性。
2)jdk8.0 的类型推断,Lambda表达式就是从Scala引入的特性。
Jdk5.0和Jdk8.0的编辑器就是马丁·奥德斯基写的,因此马丁·奥德斯基一个人的战斗力抵得上一个Java开发团队。
1.1.3 Scala和Java关系
一般来说,学Scala的人,都会Java,而Scala是基于Java的,因此我们需要将Scala和Java以及JVM 之间的关系搞清楚,否则学习Scala你会蒙圈。
1.1.4 Scala语言特点
Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言。
1)Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。
2)Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对接。
3)Scala单作为一门语言来看,非常的简洁高效。
4)Scala在设计时,马丁·奥德斯基是参考了Java的设计思想,可以说Scala是源于Java,同时马丁·奥德斯基也加入了自己的思想,将函数式编程语言的特点融合到JAVA中, 因此,对于学习过Java的同学,只要在学习Scala的过程中,搞清楚Scala和Java相同点和不同点,就可以快速的掌握Scala这门语言。
1.2 Scala环境搭建
1)安装步骤
(1)首先确保jdk1.8安装成功
(2)下载对应的Scala安装文件scala-2.11.8.zip,下载地址:https://pan.baidu.com/s/1D7KxZOLZReXK46LNo_jiGA 提取码:l4s1
(3)解压scala-2.11.8.zip,我这里解压到 C:\workspace\root\scala-2.12.10
(4)配置Scala的环境变量
2)测试,在cmd窗口输入scala,定义两个变量a1和a2,并计算两个变量的和
1.3 Scala插件安装
默认情况下IDEA不支持Scala的开发,需要安装Scala插件。
1)插件离线安装步骤
(1)建议将该插件scala-intellij-bin-2019.2.1.zip文件,放到Scala的安装目录C:\workspace\root\scala-2.12.10下,方便管理。而我这里放在C:\workspace\root\Plugin\Scala
(2)将插件安装到idea
(3)先找到安装插件位置file->setting...,找到 Plugins
(4)选择在磁盘中找到插件:Install Plugin from Disk 选项,并点击它
(5)选择插件所在的位置,点击OK即可(注意,在选择插件的时候一定要选择与Idea兼容的版本,不然会报错,版本选择地址:https://plugins.jetbrains.com/plugin/1347-scala/versions )
2)插件在线安装(可选),输入 scala 即可在线安装,我这里已经安装过了就不安装了
3)点击ok->apply ->重启idea即可(新建选项中出现Scala Class即为插件安装成功)
1.4 HelloWorld案例
1.4.1 IDEA环境创建
1)file->new project -> 选择Maven
2)添加包名和项目名称
3)指定项目工作目录空间
4)默认下,maven不支持Scala的开发,需要引入Scala框架
5)找到 Global Libraries 选项,点击上方的加号按钮,加入Scala的SDK
6)点击 Browse 按钮,选择你的Scala 的SDK路径,我的路径是 C:\workspace\root\scala-2.12.10,选择之后点击OK 即可
7)创建项目的源文件目录,右键main目录->创建一个diretory -> 写个名字(比如scala)->右键scala目录->mark directory ->选择source root即可。
8)在scala包下,创建包com.yuange.scala.day01包名,并创建Object。
9)编写输出Hello scala案例,在类中中输入main,然后回车可以快速生成main方法。
package com.yuange.scala.day01 object HelloWord { def main(args: Array[String]): Unit = { println("hellword"); var age:Int = 20 println(age) } }
运行后,就可以看到输出
10)Scala程序基本结构
class Hello { /* 定义变量: val/var 变量名:变量类型 = 变量值 */ val a: Int = 1 /* 定义方法: def 函数名(参数名:参数类型):返回值类型={方法体} */ def hello(arg: String): Unit = { println(arg) } }
object Hello { /* Scala程序的入口 */ def main(args: Array[String]): Unit = { println("hello,scala") } /* 完全面向对象:scala完全面向对象,故scala去掉了java中非面向对象的元素,如static关键字,void类型 1.static scala无static关键字,由object实现类似静态方法的功能(类名.方法名),object关键字和class的关键字定义方式相同,但作用不同。class关键字和java中的class关键字作用相同,用来定义一个类;object的作用是声明一个单例对象,object后的“类名”可以理解为该单例对象的变量名。 2.void 对于无返回值的函数,scala定义其返回值类型为Unit类 */ }
1.4.2 开发注意事项
1)Scala源文件以“.scala" 为扩展名。
2)Scala程序的执行入口是object 中的main()函数。
3)Scala语言严格区分大小写。
4)Scala方法由一条条语句构成,每个语句后不需要分号(Scala语言会在每行后自动加分号)。(至简原则)
5)如果在同一行有多条语句,除了最后一条语句不需要分号,其它语句需要分号。
1.5 关联Scala源码
在使用Scala过程中,为了搞清楚Scala底层的机制,需要查看源码,下面看看如何在Idea中关联和查看Scala的源码包。
1)查看源码,选择要查看的方法或者类,输入ctrl + b
2)关联源码
步骤1:将我们的源码压缩包scala-2.12.10.tar.gz解压到C:\workspace\root\scala-2.12.10\src,然后在idea中点击 Choose Sources 选项,找到scala-2.12.10,点击OK即可
步骤2:将scala-2.12.10拷贝到C:\workspace\root\scala-2.12.10\lib文件夹下,点击OK即可
1.6 官方编程指南
查看scala-docs-2.11.8文档,可以获得Scala的API操作。官网下载地址:https://www.scala-lang.org/download/2.11.8.html