Scala(第一章Scala入门)

文章目录

    • [1.1 概述](#1.1 概述)
      • [1.1.1 为什么学习Scala](#1.1.1 为什么学习Scala)
      • [1.1.2 Scala发展历史](#1.1.2 Scala发展历史)
      • [1.1.3 Scala和Java关系](#1.1.3 Scala和Java关系)
      • [1.1.4 Scala语言特点](#1.1.4 Scala语言特点)
    • [1.2 Scala环境搭建](#1.2 Scala环境搭建)
    • [1.3 Scala插件安装](#1.3 Scala插件安装)
    • [1.4 HelloWorld案例](#1.4 HelloWorld案例)
      • [1.4.1 创建IDEA项目工程](#1.4.1 创建IDEA项目工程)
      • [1.4.2 class和object说明](#1.4.2 class和object说明)
      • [1.4.3 Scala程序反编译](#1.4.3 Scala程序反编译)
    • [1.5 关联Scala源码](#1.5 关联Scala源码)
    • 1.6官方编程指南

1.1 概述

1.1.1 为什么学习Scala

1、Spark------新一代内存级大数据计算框架,是大数据的重要内容。

2、Spark就是使用Scala编写的。因此为了更好的学习Spark,需要掌握Scala这门语言。

3、Spark的兴起,带动Scala语言的发展。

1.1.2 Scala发展历史

1、马丁.奥德斯基 基于java语言的特性,想编写一门更容易上手、语法更简单的语言,于是就发明了两种语言(Pizza&Scala)。

2、JDK5.0和JDK8.0的编译器就是马丁.奥德斯基写的。

3、Pizza和Scala极大地推动了Java编程语言的发展。比如JDK5.0 的泛型、增 强for循 环、自动类型转换等,都是从Pizza引入的新特性。JDK8.0 的类型推断、Lambda表达式就是从Scala引入的特性。

1.1.3 Scala和Java关系

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

2、Scala和Java及JVM的关系图

1.1.4 Scala语言特点

Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言(静态语言需要提前编译的如:Java、c、c++等,动态语言如:js)

1、Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。(多范式,就是多多种编程方法的意思。有面向过程、面向对象、泛型、函数式四种程序设计方法。)

2、Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对接。

3、Scala单作为一门语言来看,非常的简洁高效。

4、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:\soft

4、配置Scala的环境变量

ps: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:\Tools\scala-2.12.11 下,方便管理。

(2)打开 IDEA,在左上角找到 File->在下拉菜单中点击 Setting... ->点击 Plugins->点击

右 下 角 Install plugin from disk... , 找 到 插 件 存 储 路 径

D:\Tools\scala-2.12.11\scala-intellij-bin-2017.2.6.zip,最后点击 ok。

(2)插件在线安装(可选)

(1)在搜索插件框里面输入 Scala->点击 Install->点击 ok->点击 apply。

(2)重启IDEA,再次来到Scala插件页面,已经变成installed。

1.4 HelloWorld案例

1.4.1 创建IDEA项目工程

(1)打开IDEA -> 点击左侧的File -> 选择New -> 选择Project...

(2)创建一个Maven工程,并点击next

(3)GroupId输入com.itcast -> ArtifactId输入Scala -> 点击next -> 点击Finish
注意:工程存储路径一定不要有中文和空格。

(4)指定项目工作目录空间

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

在scala0513项目上,点击右键-> Add Framework Support... ->选择 Scala->点击 OK

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

(6)创建项目的源文件目录

1、右键点击 main 目录->New->点击 Diretory -> 写个名字(比如 scala)。

2、右键点击 scala 目录->Mark Directory as->选择 Sources root,观察文件夹颜色发生变化。

(7)在scala包下,创建包com.itcast.chapter01包名和Hello类名

1、右键点击 scala 目录->New->Package->输入 com.itcast.chapter01->点击 OK。

2、右键点击 com.itcast.chapter01->New->Scala Class->Kind 项选择 Object->Name 项输入Hello。

(8)编写输出Hello Scala案例

1、在类中中输入 main,然后回车可以快速生成 main 方法;

2、在 main 方法中输入 println("hello scala")

运行后,观察控制台打印输出:

hello scala

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

1.4.2 class和object说明


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页面


1.5 关联Scala源码

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

1、查看源码

例如查看Array源码,按住ctrl键 -> 点击Array -> 右上角Attach Sources...

2、关联源码

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

(2)点击 Attach Sources...->选择 D:\Tools\scala-2.12.11\lib\scala-sources-2.12.11,这个文件夹,就可以看到源码了

1.6官方编程指南

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

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

下一章(第二章) 变量和数据类型

相关推荐
啊松同学22 分钟前
【Java】设计模式——工厂模式
java·后端·设计模式
捕鲸叉22 分钟前
C++设计模式和编程框架两种设计元素的比较与相互关系
开发语言·c++·设计模式
枫叶_v1 小时前
【SpringBoot】20 同步调用、异步调用、异步回调
java·spring boot·后端
未知陨落1 小时前
数据结构——二叉搜索树
开发语言·数据结构·c++·二叉搜索树
大波V51 小时前
设计模式-参考的雷丰阳老师直播课
java·开发语言·设计模式
无敌最俊朗@1 小时前
unity3d————接口基础知识点
开发语言·c#
一丝晨光2 小时前
gcc 1.c和g++ 1.c编译阶段有什么区别?如何知道g++编译默认会定义_GNU_SOURCE?
c语言·开发语言·c++·gnu·clang·gcc·g++
南城花随雪。2 小时前
Spring框架之装饰者模式 (Decorator Pattern)
java·开发语言·装饰器模式
究极无敌暴龙战神X2 小时前
前端学习之ES6+
开发语言·javascript·ecmascript
虞书欣的62 小时前
Python小游戏24——小恐龙躲避游戏
开发语言·python·游戏·小程序·pygame