文章目录
1. Scala简介
Scala是由于Spark的流行而兴起的。Scala是一个静态的的、函数式的、面向对象编程的语言。静态的指在编译时就知道变量的类型,而不是在运行时才知道。但是Scala并不期望你提供冗余的类型信息,而是可以自动推断,这就是的Scala使用起来感觉像是动态语言,但实际上是静态语言。
关于Scala有几个常识需要知道:
- Scala使用Java编写的,是比Java更高级的语言,可以看做是对Java的进一步封装,更加简洁,代码量约是Java的一半。
- Scala是编译性语言,编译后也得到
.class
文件(不会得到.java
文件),Scala是运行在JVM上的,因此 想运行scala代码,可以不装scala JDK 但是必须装 java JDK。Java使用
javac file_name.java
命令将java文件编译为class文件;Scala使用scalas file_name.scala
命令将scala文件编译为class文件。 - 继承了Java 的可跨平台特性。
- 可以直接在Scala中编写Java代码。
现在大数据生态的语言:
2. 函数式编程简介
- Scala是面向函数式编程。具体而言,表现为四个方面 ① 函数可以作为值传递;② 函数可以作为参数传递;③ 函数可以作为返回值传递;④ 可以被直接调用。
高阶函数:指允许函数嵌套。
- 函数式编程没有副作用,即变量一经赋值,就不变。
- 引用透明。指函数的运行不依赖于外部变量或状态,只依赖于输入参数,任何时候只要输入的参数相同,那么引用函数得到的返回值永远相同。Java中查看一个函数功能,往往要查引用的类,类中还有引用类…,需要一直点进去,引用不够透明。
3. Scala VS Java
- Scala支持面向函数式编程的,而Java不支持,这是两者最大的区别。
Scala的函数式编程是借鉴的Python优点,为什么不使用Python开发
- Java是面向对象的用于解决通用问题,Scala是专注于解决数据统一计算。抽象来说,无论解什么数学题,首先得学好加减乘除,而解决线性代数就得学好矩阵相关公式,学高等数学就得学好微积分相关公式,但矩阵与微积分本质上还是由加减乘除组合而来的,只不过是矩阵相关方式和微积分相关方式是已解决的封装好的公式,直接使用就行。具体而言,就是Scala比Java多一些数据统计的方法,比如 group by等等。
- Scala也拥有Java高并发、可移植、运行快的特点。一次编译成class文件,多次运行。
4. 安装与部署
Scala包里面没有java jdk,因此在安装Scala之前需要先安装Java JDK
4.1 Scala安装
(1) linux环境安装
// 1. 在Scala官网下载对应的包,这里我下载`scala-2.12.16.tgz`。上传到linux机器/public/software/bigdata/scala-2.12.16.tgz
// 2. 解压
tar -zxvf /public/software/bigdata/scala-2.12.16.tgz -C /usr/local
// 3. 创建软连接,因为scala-2.12.16的这个后缀太麻烦
cd /usr/local/
ln -s scala-2.12.16 scala
// 4. 修改环境变量
vim /etc/profile
// 在末尾加上
export SCALA_HOME=/usr/local/scala
export PATH=$PATH:$SCALA_HOME/bin // 全局都识别
// 5. 让环境变量生效
source /etc/profile
// 6. 查看版本
scala -version
(2) Window环境安装
和linux安装类型,后续补充具体步骤
4.2 IDEA创建并编写Scala项目
(1) 安装插件
-
安装scala插件
-
同理安装maven插件,但IDEA-2021之后都自带maven插件了。
- 介绍一下maven和idea关系:
- 如何maven使用插件还是本地maven (默认使用的是maven插件)
- 介绍一下maven和idea关系:
-
将IDEA与本地scala关联:
- 找到本地scala并关联
- 重启IDEA.
- 项目中创建文件时,能够创建
scala
文件,说明IDEA关联Scala成功!
- 找到本地scala并关联
(2) 创建项目
-
创建Java项目,不是scala项目
-
创建
scala
文件夹,并将文件夹标记为【源文件夹】,这样编写的代码能够被IDEA检测到,方便写代码。同时打包时会被打包。
比如:
解压jar包:
结果为:
-
将IDEA与本地Scala联系起来
-
创建
.scala
文件
5. 查看源码
-
查看源码,需要在pom.xml中导入对应版本的scala依赖jar包:
<dependencies> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.12.10</version> </dependency> </dependencies>
-
点击刷新可以看到jar包被导入进来了
-
访问任意一个函数的源码,并下载
-
下载完后,再重新按
ctrl + 鼠标左键
就可以看到具体的函数了