目录

一、概述1. 为什么学习 Scala2. Scala 发展历史3. Scala 和 Java 关系4. Scala 语言特点

二、Scala 环境搭建三、Scala 插件安装四、HelloWorld 案例五、class 和 object 说明六、Scala 程序反编译七、关联 Scala 源码八、官方编程指南

一、概述

1. 为什么学习 Scala

Spark—新一代内存级大数据计算框架,是大数据的重要内容。Spark就是使用Scala编写的。因此为了更好的学习Spark, 需要掌握Scala这门语言。Spark的兴起,带动Scala语言的发展。

2. Scala 发展历史

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

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

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

JDK 5.0和JDK 8.0 的编辑器就是马丁·奥德斯基写的,因此马丁·奥德斯基一个人的战斗力抵得上一个Java开发团队。

3. Scala 和 Java 关系

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

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这门语言。

二、Scala 环境搭建

安装步骤

首先确保 JDK1.8 安装成功下载对应的 Scala 安装文件 scala-2.12.11.zip解压 scala-2.12.11.zip,我这里解压到 D:\Scala配置 Scala 的环境变量

注意 1:解压路径不能有任何中文路径,最好不要有空格。 注意 2:环境变量要大写 SCALA_HOME

三、Scala 插件安装

默认情况下 IDEA 不支持 Scala 的开发,需要安装 Scala 插件。

四、HelloWorld 案例

打开 IDEA->点击左侧的 Flie->选择 New->选择 Project…

创建 Maven 项目,填好工程路径后,点击创建即可(对 maven archetype 没有要求)

默认下,Maven 不支持 Scala 的开发,需要引入 Scala 框架

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

创建 scala 文件夹,并置其为 Source Root 。

创建包 com.fancy.chapter01 并在此包下创建 Scala 类 hello,注意是新建一个 Object,否则运行不了

编写输出 Hello Scala 案例,在类中中输入 main,然后回车可以快速生成 main 方法; 在 main 方法中输入 println("hello scala")

说明:Java 中部分代码也是可以在 Scala 中运行

五、class 和 object 说明

package com.fancy.chapter01

// main 方法名

// 小括号表示参数列表

// 参数声明方式:java ---> 类型 参数名

// scala ---> 参数名 : 类型

// public 修饰符: scala 中没有 public 关键字, 如果不声明访问权限, 那么就是公共的

// static 修饰符: scala中没有静态语法,所以没有static关键字

// void关键字:表示返回值,但是不遵循面向对象语法,所以scala中没有,但是有 Unit 类型 表示没有返回值

// scala 中 : 方法名(参数列表) : 返回值类型

// scala 中声明方法必须采用关键字 def 声明

// scala 方法实现复制给方法声明, 所以中间需要等号连接

// scala 是一个完全面向对象的语言, 所以没有静态语法, 为了能调用静态语法 (模仿静态语法)

// 采用伴生对象单例的方式调用方法

object Hello {

def main(args: Array[String]): Unit = {

println("hello");

System.out.println("hello");

}

}

Scala完全面向对象,故Scala去掉了Java中非面向对象的元素,如static关键字,void类型

static Scala无static关键字,由object实现类似静态方法的功能 (类名.方法名)。 void 对于无返回值的函数,Scala定义其返回值类型为Unit类

六、Scala 程序反编译

A、在项目的 target 目录 Hello 文件上点击右键 —> Show in Explorer---->看到 object 底层生成 Hello$.class 和 Hello.class 两个文件

B、采用 Java 反编译工具 jd-gui.exe 反编译代码,将 Hello.class 拖到 jd-gui.exe 页面

七、关联 Scala 源码

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

A、查看源码

例如查看 Array 源码。按住 ctrl 键->点击 Array->右上角出现 Attach Soures…

B、关联源码

将我们的源码包 scala-sources-2.12.11.tar.gz 拷贝到 D:\Scala\scala-2.12.11\lib 文件夹下,并解压为 scala-sources-2.12.11 文件夹

点击 Attach Sources…—>选择 D:\Scala\scala-2.12.11\lib\scala-sources-2.12.11,这个文件夹,就可以看到源码了

八、官方编程指南

在线查看:https://www.scala-lang.org/

离线查看:解压 scala-docs-2.11.8.zip,可以获得 Scala 的 API 操作。

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: