第 1 章 Scala 入 门
1.1 概述
- Spark—新一代内存级大数据计算框架,是大数据的重要内容。
- Spark就是使用Scala编写的。因此为了更好的学习Spark, 需要掌握Scala这门语言。
- Spark的兴起,带动Scala语言的发展!
1.1.1 为什么学习 Scala
联邦理工学院的马丁·奥德斯基(Martin Odersky)于2001年开始设计Scala。
马丁·奥德斯基是编译器及编程的狂热爱好者,长时间的编程之后,希望发明一种语言,能够让写程序这样的基础工作变得高效,简单。所以当接触到JAVA语言后,对JAVA这门便携式,运行在网络,且存在垃圾回收的语言产生了极大的兴趣,所以决定将函数式编程语言的特点融合到JAVA中,由此发明了两种语言(Pizza & Scala)。
Pizza和Scala极大地推动了Java编程语言的发展。
⚫ JDK5.0 的泛型、增强for循环、自动类型转换等,都是从Pizza引入的新特性。
⚫ JDK8.0 的类型推断、Lambda表达式就是从Scala引入的特性。
JDK5.0和JDK8.0的编辑器就是马丁·奥德斯基写的,因此马丁·奥德斯基一个人的
战斗力抵得上一个Java开发团队。
1.1.2 Scala 发展历史
1.1.3 Scala 和 Java 关系
一般来说,学 Scala 的人,都会 Java,而 Scala 是基于 Java 的,因此我们需要将 Scala
和 Java 以及 JVM 之间的关系搞清楚,否则学习 Scala 你会蒙圈。
1.1.4 Scala 语言特点
Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的 静态类型编程语言(静态语言需要提前编译的如:Java、c、c++等,动态语言如:js)。
- Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。(多范式,就是多种编程方法的意思。有面向过程、面向对象、泛型、函数式四种程序设计方法。)
- Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对接。
- Scala单作为一门语言来看,非常的简洁高效
- Scala在设计时,马丁·奥德斯基是参考了Java的设计思想,可以说Scala是源于Java,同时马丁·奥 德斯基也加入了自己的思想,将函数式编程语言的特点融合到JAVA中, 因此,对于学习过Java的同学, 只要在学习Scala的过程中,搞清楚Scala和Java相同点和不同点,就可以快速的掌握Scala这门语言。
1.2 Scala 环境搭建
1) 安装步骤
(1) 首先确保 JDK1.8 安装成功
(2) 下载对应的Scala 安装文件 scala-2.12.11.zip
(3) 解压 scala-2.12.11.zip,我这里解压到D:Tools
(4) 配置 Scala 的环境变量
注意 1:解压路径不能有任何中文路径,最好不要有空格。注意 2:环境变量要大写SCALA_HOME
2) 测试
需求:计算两数 a 和b 的和。步骤
(1) 在键盘上同时按win+r 键,并在运行窗口输入cmd 命令
(2) 输入Scala 并按回车键,启动 Scala 环境。然后定义两个变量,并计算求和。
1.3 Scala 插件安装
默认情况下 IDEA 不支持Scala 的开发,需要安装Scala 插件。
1) 插件离线安装步骤
( 1 ) 建议将该插件 scala-intellij-bin-2017.2.6.zip 文件,放到 Scala 的安装目录D:Toolsscala-2.12.11 下,方便管理。
(2)打开 IDEA,在左上角找到 File->在下拉菜单中点击 Setting... ->点击 Plugins->点击右 下 角 Install plugin from disk… , 找 到 插 件 存 储 路 径D:Toolsscala-2.12.11scala-intellij-bin-2017.2.6.zip,最后点击 ok。
2) 插件在线安装(可选)
(1) 在搜索插件框里面输入 Scala->点击 Install->点击 ok->点击 apply。
重启 IDEA,再次来到 Scala 插件页面,已经变成 Installed。
1.4 HelloWorld 案例
1.4.1 创建IDEA 项目工程
1) 打开 IDEA->点击左侧的 Flie->选择 New->选择Project…
2)创建一个 Maven 工程,并点击 next
3) GroupId 输入com.neuedu->ArtifactId 输入 scala->点击 next->点击 Finish
注意:工程存储路径一定不要有中文和空格。
4) 指定项目工作目录空间
5) 默认下,Maven 不支持 Scala 的开发,需要引入 Scala 框架。
在 scala0513 项目上,点击右键-> Add Framework Support... ->选择 Scala->点击 OK
注意:如果是第一次引入框架,Use libary 看不到,需要选择你的 Scala 安装目录,然后工具就会自动识别,就会显示 user libary。
6) 创建项目的源文件目录
右键点击 main 目录->New->点击 Diretory -> 写个名字(比如 scala)。
右键点击 scala 目录->Mark Directory as->选择 Sources root,观察文件夹颜色发生变化。
7) 在 scala 包下,创建包 com.neuedu.chapter01 包名和 Hello 类名,
右键点击 scala 目录->New->Package->输入 com.neuedu.chapter01->点击 OK。
右键点击 com.neuedu.chapter01->New->Scala Class->Kind 项选择 Object->Name 项输入Hello。
8) 编写输出Hello Scala 案例
在类中中输入 main,然后回车可以快速生成 main 方法; 在 main 方法中输入println("hello scala")
ttttttttttttttttttScala1714.png)
package com.neuedu.chapter01
/**
* @auth 金山老师
* creatime: 2022-10-22 15:30
* 描述 : ${dc}
*/
object Hello {
def main(args: Array[String]): Unit = {
println("Hello Scala")
System.out.println("Hello Scala from Java code");
}
}
运行后,观察控制台打印输出:
说明:Java 中部分代码也是可以在 Scala 中运行。
1.4.2 class 和object 说明
对第一个程序进行说明
- main:方法名
- 小括号表示参数列表
- 参数声明方式: java -类型参数名
- scala -参数名:类型
- 参数声明方式: java -类型参数名
- public修饰符: scala中没有public关键字, 如果不声明访问权限,那么就是公共的。
- static修饰符: scala中没有静态语法,所以没有static关键字。
- void关键字:表示返回做,但是不遵循面向对象语法,所以scala中没有, 但是有Unit类型,表示没有返回做
Scala
- scala中:方法名 (参数列表) :返回值类型
- scala中声明方法必须采用关键字def声明
- scala中方法实现法值给方法声明,所以中间需要等号连接
- Scala是- 一个完全面向对象的语言,所以没有静态语法,为了能调用静态语法(模仿静态语法),
- 采用件生对象单例的方式调用方法
package com.neuedu.chapter01
/**
* @auth 金山老师
* creatime: 2022-10-22 15:30
* 描述 : ${dc}
*/
object Hello {
def main(args: Array[String]): Unit = {
println("Hello Scala")
System.out.println("Hello Scala from Java code");
}
}
Scala完全面向对象,故Scala去掉了Java中非面向对象的元素,如static关键字,void类型
static
- Scala无static关键字,由object实现类似静态方法的功能(类名.方法名)。
- class关键字和Java中的class关键字作用相同,用来定义一个类;
void
对于无返回值的函数,Scala定义其返回值类型为Unit类
1.4.3 Scala 程序反编译
1) 在项目的 target 目录 Hello 文件上点击右键->Show in Explorer->看到 object 底层生成
Hello$.class 和 Hello.class 两个文件
2) 采用 Java 反编译工具 jd-gui.exe 反编译代码,将 Hello.class 拖到 jd-gui.exe 页面
ttttttttttttttttttScala2015.png)
ttttttttttttttttttScala2016.png)
ttttttttttttttttttScala2045.png)
1.5 关联Scala 源码
在使用 Scala 过程中,为了搞清楚 Scala 底层的机制,需要查看源码,下面看看如何关联和查看 Scala 的源码包。
1) 查看源码
例如查看 Array 源码。按住 ctrl 键->点击Array->右上角出现 Attach Soures…
ttttttttttttttttttScala2184.png)
ttttttttttttttttttScala2185.png)
2) 关联源码
(1) 将我们的源码包 scala-sources-2.12.11.tar.gz 拷贝到 D:Toolsscala-2.12.11lib 文件夹下,并解压为 scala-sources-2.12.11 文件夹
(2) 点击 Attach Sources…->选择 D:Toolsscala-2.12.11libscala-sources-2.12.11,这个
文件夹,就可以看到源码了
ttttttttttttttttttScala2386.png)
1.6 官方编程指南
1) 在线查看:https://www.scala-lang.org/
2) 离线查看:解压 scala-docs-2.11.8.zip,可以获得Scala 的API 操作。
ttttttttttttttttttScala2525.png)
