1.学习Scala的原因

1.1 why is Scala语言?

  1. Spark—新一代内存级大数据计算框架,是大数据的重要内容。
  2. Spark就是使用Scala编写的。因此为了更好的学习Spark, 需要掌握 Scala这门语言。
  3. Scala 是 Scalable Language 的简写,是一门多范式(范式/编程方式[面向对象/函 数式编程])的编程语言
  4. 联邦理工学院洛桑(EPFL)的Martin Odersky于2001年开始设计Scala
  5. Spark的兴起,带动Scala语言的发展!

spark用途 spark用的什么语言_scala

1.2 Scala语言诞生小故事

创始人马丁·奥德斯基(Martin Odersky)是编译器及编程的狂热爱好者,长时间的编程之后,希望发明一种语言,能够让写程序这样的基础工作变得高效,简单。所以当接触到JAVA语言后,对JAVA这门便携式,运行在网络,且存在垃圾回收的语言产生了极大的兴趣,所以决定将函数式编程语言的特点融合到JAVA中,由此发明了两种语言(Pizza & Scala) 递归

Pizza和Scala极大地推动了Java编程语言的发展。

jdk5.0 的泛型,for循环增强, 自动类型转换等,都是从Pizza引入的新特性。 jdk8.0 的类型推断,Lambda表达式就是从scala引入的特性。

且现在主流JVM的javac编译器就是马丁·奥德斯基编写出来的。Jdk5.0 Jdk8.0的编译器就是马丁·奥德斯基写的,因此马丁·奥德斯基 一个人的战斗力抵得上一个Java开发团队。

spark用途 spark用的什么语言_后端_02

2.Scala 和 Java 以及 jvm 的关系

一般来说,学Scala的人,都会Java,而Scala 是基于Java的,因此我们需要将Scala和Java以及JVM 之间 的关系搞清楚,否则学习Scala你会蒙圈。

建议:如果没有任何Java基础的同学,先学Java,至少要 学习JavaSE,再学习Scala。

我们分析一下:Scala 和 Java 以及 jvm 的关系 (重要!)

spark用途 spark用的什么语言_Scala_03

3.Scala语言的特点

Scala是一门以java虚拟机(JVM)为运行环境并将面向对象函数式编程的最佳特性结合在一起的静态类型编程语言

  1. Scala 是一门多范式 (multi-paradigm) 的编程语言,Scala支持面向对象和函数式编程
  2. Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有 的Java类库,实现两种语言的无缝对接。
  3. scala 单作为一门语言来看, 非常的简洁高效 (三元运算, ++ , --)
  4. Scala 在设计时,马丁·奥德斯基 是参考了Java的设计思想,可以说Scala是源于java,同时马 丁·奥德斯基 也加入了自己的思想,将函数式编程语言的特点融合到JAVA中, 因此,对于学习过Java的同学,只要在学习Scala的过程中,搞清楚Scala 和 java相同点和不同点,就可以快 速的掌握Scala这门语言
  5. 快速有效掌握Scala的建议 [1. 学习scala 特有的语法 2. 搞清楚 scala 和java 区别 3. 如何规范 的使用scala]

4.Windows下搭建Scala开发环境

安装&配置

  1. Scala需要Java运行时库,安装Scala需要首先安装JVM虚拟机并配置好,推荐安 装JDK1.8
  2. 在http://www.scala-lang.org/ 下载Scala2.11.8程序安装包

提示: 根据不同的操作系统选择不同的安装包,下载完成后,将安装包解压到安装目录

  1. 配置Jdk的环境变量
  2. 配置SCALA_HOME:SCALA_HOME= D:programscala-2.11.8

spark用途 spark用的什么语言_后端_04

  1. 将Scala安装目录下的bin目录加入到PATH环境变量 在PATH变量中添加:%SCALA_HOME%in

spark用途 spark用的什么语言_spark用途_05

  1. 在终端中输入“scala”命令打开scala解释器

spark用途 spark用的什么语言_spark用途_06

Scala的REPL

  1. 介绍

上面打开的scala命令行窗口,我们称之为REPL,是指:Read->Evaluation- >Print->Loop,也称之为交互式解释器。

  1. 说明

在命令行窗口中输入scala指令代码时,解释器会读取指令代码®并计算对应的 值(E),然后将结果打印出来§,接着循环等待用户输入指令(L)。 从技术上讲,这里其实并不是一个解释器,而是指令代码被快速的编译成Java字 节码并被JVM加载执行。最终将执行结果输出到命令行中

  1. 示意图

spark用途 spark用的什么语言_scala_07

5.Linux下搭建Scala开发环境

在实际开发中,我们的项目是部署到linux,因此,我们需要在Linux下搭建scala的环境。具体的步骤如下:

1)下载对应的scala的安装软件.scala-2.11.8.tgz

  1. 通过远程登录工具,将安装软件上传到对应的linux系统(xshell5 xftp5)

spark用途 spark用的什么语言_Scala_08

  1. mkdir/usr/local/scala创建目录
  2. tar -xvzf scala-2.11.8.tgz && mv scala-2.11.8 /usr/local/scala/ 将安装文件解压,并且移动到/usr/local/scala
  3. 配置环境变量 vim /etc/profile

在该文件中配置scala 的 bin目录/usr/local/scala/scala-2.11.8/bin

spark用途 spark用的什么语言_Scala_09

  1. 测试

spark用途 spark用的什么语言_java_10

6.Scala的开发工具

6.1 IDEA工具介绍

IDEA介绍:

IDEA 全称IntelliJ IDEA,是用于java语言开发的集成环境(也 可用于其他语言),IntelliJ在业界被公认为最好的java开发工 具之一。IDEA是JetBrains公司的产品,这家公司总部位于捷 克共和国的首都布拉格。

  1. java开发工具很多,比如netbean,eclipse等等,单开发Scala可选的工具不多, 主要使用IDEA
  2. Idea工具开发Scala的快捷键也不是很多,所以使用相对比较简单
  3. IDEA不是专门用于开发Scala的IDE,但是确是最适合开发Scala的工具,因为在 我们实际工作中,大部分是开发项目,而大数据项目不可避免的会使用到Java, 所以会进行Java 和 Scala 两种语言的混合编程。 而Idea 可以很好的支持Java和 Scala的开发。

spark用途 spark用的什么语言_Scala_11

6.2 Scala插件安装

  1. scala-intellij-bin-2017.2.6.zip
  2. 建议该插件文件放到scala的安装目录
  3. 将插件安装到idea
  4. 先找到安装插件位置file->setting…

spark用途 spark用的什么语言_scala_12

  1. 点击ok->apply ->重启idea即可
  2. ok
  3. 检测或卸载

spark用途 spark用的什么语言_scala_13

7.Scala快速开发入门

需求说明

要求开发一个Hello.scala 程序,可以输出 “hello,世界!"

spark用途 spark用的什么语言_java_14

7.1 windows下开发步骤

  1. 可以直接使用文本开发工具[editplus]
  2. 将 Scala 代码编写到扩展名为 Hello.scala 的文件中。 [ 说明: 比如将源码在目录 d:/scalademo下 ]
  3. 通过 scalac 命令对该 scala 文件进行编译,生成 .class 文件。[和javac类似]
  4. 命令行下 执行 scala Hello 就可以看到运行效果。
  5. 注意:scala Hello.scala 命令可以直接运行 Hello.scala 程序 [内部也会有编译和运行过程]

7.2 linux下开发步骤

  1. 直接使用vim开发 ,一个遍历数组的案例
  2. 将 Scala 代码编写到扩展名为 Hello.scala 的文件中。
  3. 通过 scala 命令对该 scala 文件进行编译,生成 .class 字节码文件。
  4. 在终端 执行 scala Hello 就可以看到运行效果。
  5. 注意:通过 scala 命令可以直接运行 Hello

spark用途 spark用的什么语言_java_15

7.3 IDE工具Idea 来开发

1):file->new project ->选择maven

spark用途 spark用的什么语言_后端_16

2):

spark用途 spark用的什么语言_spark用途_17

3):

spark用途 spark用的什么语言_spark用途_18

spark用途 spark用的什么语言_java_19

4):默认下,maven不支持scala的开发,需要引入scala框架.右键项目点击->add framework support…,在下图选择scala

spark用途 spark用的什么语言_scala_20

注意:如果是第一次引入框架,Use libary看不到,需要配置,配置就是选择你的scala安装目录,然后工具就会自动识别,就会显示user libary .

5):创建项目的源文件目录

spark用途 spark用的什么语言_java_21

说明:右键main目录>创建一个diretory ->写个名字(比如 scala)→>右键scala目录->markdirectory ->选择source root即可

6):开发一个Hello.scala的程序

spark用途 spark用的什么语言_spark用途_22

创建包com.atguigu.chapter01开发的程序

spark用途 spark用的什么语言_spark用途_23

运行后,就可以看到输出

7.4 Scala程序反编译-说明scala程序的执行流程

//下面我们说明一下scala程序的一执行流程 //分析 //1.object在底层会生成两个类Hello , Hello$ //2.Hello中有个main函数,调用Hello$类的一个静态对象MODULES$ /* public final class Hello { public static void main(String[ ] paramArrayOfString) { Hello$.MODULE$.main(paramArrayOfString);) } } */ //3.Hello$.MODULE$. 对象时静态的,通过该对象调用Hello$的 main函数 /* public void main(String[] args) { Predef.MODULES.println("hello,scala"); } */ //4.可以理解我们在main中写的代码在放在Hello$ 的main,在底层执行scala编译器做了一个包装 object Hello { def main(args: Array[String]): Unit ={ println("hello,scala") } }

7.5 使用java '写了一段模拟的代码

public class Hello2{ public static void main(String[] args){ Hello2$.MODULE$.main(args); } } final class Hello2$ { public static final Hello2$ MODULE$; static { MODULE$= new Hello2$(); } public void main(String[] args){ { System.out.printIn("hello,scala"); } //private Hello$() {MODULE$= this; } }

7.6 Scala执行流程分析


7.7 Scala程序开发注意事项(重点)

l) Scala源文件以“.scala”为扩展名。

  1. Scala程序的执行入口是main()函数。
  2. Scala语言严格区分大小写。
  3. Scala方法由一条条语句构成,每个语句后不需要分号(Scala语言会在每行后自动加分号),这也体现出 Scala 的简洁性。

5)如果在同一行有多条语句,除了最后一条语句不需要分号,其它语句需要分号。

spark用途 spark用的什么语言_scala_24

8.Scala语言转义字符

Scala常用的转义字符(escape char)

  1. :一个制表位,实现对齐的功能
  2. :换行符
  3. \ :一个
  4. " :一个"
  5. :一个回车 println(“hello k”);

9.Scala语言输出的三种方式

  1. 字符串通过+号连接(类似java)。
  2. printf用法 (类似C语言)字符串通过 % 传值。
  3. 字符串通过$引用(类似PHP)。
    val name = “ApacheCN” val age = 1
    val url = “www.study.com”
    println(“name=” + name + " age=" + age + " url=" + url)
    printf("name=%s, age=%d, url=%s
    ", name, age, url)
    println(s"name=spark用途 spark用的什么语言_spark用途_25{age}, url=${url}")

10.Scala源码的查看的关联

在使用scala过程中,为了搞清楚scala底层的机制,需要查 看源码,下面看看如果关联和查看Scala的源码包

  1. 查看源码, 选择要查看的方法或者类, 输入 ctrl + b

当我们没关联源码时,看到如下图像:

spark用途 spark用的什么语言_spark用途_26

2)关联源码

步骤1:将我们的源码包拷贝到scala/lib 文件夹下. scala-sources-2.12.4

步骤2:关联即可,选中这个文件夹,进行关联,最后,可以看到源码

spark用途 spark用的什么语言_java_27

11.注释(comment)

11.1介绍

用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性; 注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来 ,再用代码去体现。

11.2Scala中的注释类型

  1. 单行注释
  2. 多行注释
  3. 文档注释

单行注释:

格式: //注释文字

多行注释:

格式: /* 注释文字 */

文档注释: 注释内容可以被工具 scaladoc 所解析,生成一套以网页文件形式体现的该程序的 说明文档

格式:

object Hello { /** * @deprecated xxx * @example testing coding * @param args */ def main(args: Array[String]): Unit = { println("helllo") } } scaladoc -d d:/ Hello.scala

11.3规范的代码风格

正确的注释和注释风格: 查看Scala源码

正确的缩进和空白

  1. 使用一次tab操作,实现缩进,默认整体向右边移动,时候用shift+tab整体向 左移
  2. 或者使用 ctrl + alt + L 来进行格式化
  3. 运算符两边习惯性各加一个空格。比如:2 + 4 * 5。
  4. 一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅

11.4Scala官方编程指南