目录
1、Scala概述
1.1 什么是Scala
Scala将面向对象和函数式编程结合在一个简洁的高级语言中。Scala的静态类型有助于避免复杂应用程序中的错误,其JVM和JavaScript运行时可让您构建高性能系统,轻松访问庞大的库生态系统。
-
Spark—新一代内存级大数据计算框架,是大数据的重要内容。
-
Spark就是使用Scala编写的。因此为了更好的学习Spark, 需要掌握Scala这门语言。
-
Scala 是 Scalable Language 的简写,是一门多范式(范式/编程方式[面向对象/函数式编程])的编程语言
-
联邦理工学院洛桑(EPFL)的Martin Odersky于2001年开始设计Scala
-
Spark的兴起,带动Scala语言的发展!
1.2 Scala 语言的由来
创始人: 马丁·奥德斯基(Martin Odersky)
背景:
-
马丁·奥德斯基是编译器及编程的狂热爱好者,他希望发明一种语言,能够使编程变得更加高效简洁。当他接触到 Java 语言后,对 Java 语言产生了极大的兴趣,所以他决定将函数式编程融入到 Java 中,由此发明了两种语言(Pizza & Scala)。Pizza 和 Scala 极大地推动了 Java 语言的发展。
-
jdk 5.0 的泛型,for 循环的增强,自动类型转换等,都是从 Pizza 引入的新特性。
-
jdk 8.0 的类型推断,Lambda 表达式就是从 Scala 引入的特性。
-
现在主流的 JVM 的 javac 编辑器就是马丁·奥德斯基编写的。jdk 5.0 和 jdk 8.0 的编译器就是他编写的。
-
马丁·奥德斯基与 2001 年开始设计 Scala 语言
1.3 为什么学习Scala
优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。
速度快:Scala语言表达能力强,一行代码抵得上Java多行,开发速度快;Scala是静态编译的,所以和JRuby,Groovy比起来速度会快很多。
能融合到Hadoop生态圈:Hadoop现在是大数据事实标准,Spark并不是要取代Hadoop,而是要完善Hadoop生态。JVM语言大部分可能会想到Java,但Java做出来的API太丑,或者想实现一个优雅的API太费劲。
1.4 Scala语言的特点
Scala 是一门以 Java 虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言。 (1)Scala 是一门多范式的编程语言,支持面向对象和函数式编程。 (2)Scala 源代码(.scala)会被编译成 Java 字节码(.class),然后运行在 JVM 上,并可以调用现有的 Java 类库,实现两种语言的无缝衔接。 (3)Scala 语言非常简洁高效。(Java 中的三元运算、++、--,不支持了)
总而言之,Scala融汇了许多前所未有的特性,而同时又运行于JVM之上,随着开发者对scala的兴趣日增,以及越来越多的工具支持,无疑Scala语言将成为你手上必不可少的工具。
基于JVM解释:Scala的运行环境和Java类似,也是依赖JVM的。
多范式解释:Scala支持多种编程风格
2、Scala程序和Java程序对比
2.1 程序的执行流程对比
Java程序编译执行流程
Scala程序编译执行流程
2.2 代码对比
需求:定义一个学生类,属性为:姓名和年龄,然后在测试类中创建对象并测试
Java代码
// 定义学生类
public class Student{
private String name; //姓名
private int age; //年龄
//空参构造
public Student(){}
//全参构造
public student(String name,int age){
this.name = name;
this.age = age;
}
//getXxx()方法和setXxx()方法
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(){
this.age = age;
}
}
//测试类
public class StudentDemo(){
public static void main(String[] args){
Student stu = new Student("IT老王",18); //创建Student类的对象stu,并赋值
System.out.println(stu); //打印对象,查看结果
}
}
Scala代码
case class Student(var name:String, var age:Int)
val stu = Student("IT老王",18)
println(stu)
3、Scala编译器安装
3.1安装JDK
因为Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK
3.2安装Scala
3.2.1 Windows安装Scala编译器
访问Scala官网Scala 2.11.0 | The Scala Programming Language下载Scala编译器安装包,目前最新版本是2.12.x,但是目前大多数的框架都是用2.11.x编写开发的,所以这里推荐2.11.x版本,下载scala-2.11.0.msi后。
a、安装scala
点击finish安装成功。
b、追加环境变量配置
新建scala环境变量--->SCALA_HOME
变量值--->C:\Program Files (x86)\scala
追加Path路径后--->:
c、测试scala安装成功
3.2.2Linux安装Scala编译器
下载Scala地址https://downloads.lightbend.com/scala/2.11.0/scala-2.11.0.tgz然后解压Scala到指定目录
a、解压
[root@master software]# tar -zxvf scala-2.11.0.tgz -C /opt/module/
b、配置环境变量
[root@master /]$ sudo vi /etc/profile
#配置scala环境变量
export SCALA_HOME=/opt/module/scala-2.11.0 exportPATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$PATH
[root@master /]$ source /etc/profile
3.2.3 Scala开发工具安装
目前Scala的开发工具主要有两种:Eclipse和IDEA,这两个开发工具都有相应的Scala插件,如果使用Eclipse,直接到Scala官网下载即可Download Scala IDE for Eclipse - Scala IDE for Eclipse。
由于IDEA的Scala插件更优秀,大多数Scala程序员都选择IDEA,可以到Download IntelliJ IDEA – The Leading Java and Kotlin IDE下载社区免费版,点击下一步安装即可,安装时如果有网络可以选择在线安装Scala插件。这里我们使用离线安装Scala插件:
a、安装IDEA,点击下一步即可。由于我们离线安装插件,所以点击Skip All and Set Defaul
b、选择如图
在线安装很简单直接可以安装scala插件。
c、离线安装需要先下载插件。由于安装IDEA为2020.1.43版本所以需要下载对应的版本的插件。Scala - IntelliJ IDEs Plugin | Marketplace,下载版本为2020.1.43版本。
d、重启idea
4、Scala第一个项目
4.1 使用idea创建一个scala项目
a、创建一个项目
b、配置scala项目
c、配置scala的sdk
d、选择不同的版本scala-sdk 可能需要好几分钟。(速度极其的慢,所以选择其默认版本)
如果找不到SDK可以到下面的官方位置手动下载:
Install | The Scala Programming Language
e、新建一个scala--class
f、选择object,因为object为静态的,以后在讲
g、然后进行代码编写执行
object FirstScala {
def main(args: Array[String]): Unit = {
println("hello scala!!!")
}
}
4.2 Scala小知识点讲解
Scala跟Java用法非常相像也具有一些开发小工具。
scalac----> 编译一个.scala文件
scala ----> 执行编译后的scala文件
[老王讲IT 性感有魅力]