Scala 产生于瑞士的洛桑联邦理工学院( EPFL),是“ 可扩展语言”
(Scalable Language)的缩写,Sala 是一门静态类型语言, 是一门以 Java 虚拟机为目标运行环境并将面向对象和函数式编程语言的最佳特性结合在一起的编程语言。你可以使用 Scala 编写出更加精简的程序, 也能用于构建大型复杂系统, 并且他可以访问任何 Java 类库并且与 Java 框架进行互操作。
Scala 不仅利用了 JVM 的高性能以及最优化性, Java 丰富的工具及类库生态系统也为其所用。不过 Scala 并不是只能运行在 JVM 之上! Scala.js
(http://www.scala-js.org)正在尝试将其迁移到 JavaScript 世界。
在 Scala 语言中,静态类型( static typing)是构建健壮应用系统的一个工具。Scala 修正了 Java 类型系统中的一些缺陷, 此外通过类型推演( type inference)也免除了大量的冗余代码。
Scala 完全支持面向对象编程( OOP)。Scala 引入特征( trait)改进了Java 的对象模型。trait 能通过使用混合结构( mixin composition)简洁地实现新的类型。在 Scala 中,一切都是对象,即使是数值类型。
Scala 完全支持函数式编程( FP),函数式编程已经被视为解决并发、大数据以及代码正确性问题的最佳工具。使用不可变值、被视为一等公民的函数、无副作用的函数、高阶函数以及函数集合, 有助于编写出简洁、强大而又正确的代码。
Scala 对 Java 类型系统进行了扩展, 提供了更灵活的泛型以及一些有助于提高代码正确性的改进。通过使用类型推演, Scala 编写的代码能够和动态类型语言编写的代码一样精简。
使用 Scala 之后,Java 中冗长的表达式不见了,取而代之的是简洁的
Scala 方言。Scala 提供了一些工具, 这些工具可用于构建领域特定语言
(DSL), 以及对用户友好的 API 接口。
使用 Scala,你能编写出简短的解释性脚本,并将其粘合成大型的分布式应用。以下四种语言机制有助于提升系统的扩展性: 1) 使用 trait 实现的混 合结构;2) 抽象类型成员和泛型; 3) 嵌套类;4) 显式自类型( self type)。
扩展:
动态语言和静态语言 动态类型语言:是指在运行期间才去做数据类型检查的语言。在用动态语言编程时, 不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python 和 Ruby 就是一种典型的动态类型语言; 静态类型语言:与动态类型语言刚好相反,它的数据类型检查发生在在编译阶段,也就是说在写程序时要声明变量的数据类型。C/C++、C#、JAVA 都是静态类型语言的典型代表。 强类型语言和弱类型语言 1.强类型语言: 使之强制数据类型定义的语言。没有强制类型转化前, 不允许两种不同类型的变量相互操作。强类型定义语言是类型安全的语言,如 Java、C# 和 Python,比如 Java 中“int i = 0.0;”是无法通过编译的; 2.弱类型语言: 数据类型可以被忽略的语言。与强类型语言相反, 一个变量可以赋不同数据类型的值,允许将一块内存看做多种类型,比如直接将整型变量与字符变量相加。JavaScript、PHP 都是弱类型语言。 注意,强类型语言在速度上略逊色于弱类型语言, 使用弱类型语言可节省很多代码量,有更高的开发效率。而对于构建大型项目, 使用强类型 语言可能会比使用弱类型更加规范可靠。
面向过程编程: 整个程序按照步骤编写, 程序更着重业务步骤的。
面向对象编程: 提出对象封装概念, 将业务修改成对象之间的关系处理。面向接口编程: 更高层次的抽象, 将业务抽象成一些接口规则框架。
面向切面编程: 另一个思考维度, 着重于业务逻辑的动态组织。命令式编程:关心解决问题的步骤
函数式编程:关心数据的映射,是数学函数,不是程序中的函数概念

命令式编程:
函数式编程:
Scala 需要 Java 运行时库,安装 Scala 需要首先安装 JVM 虚拟机,推荐安装 JDK1.8。
在 http://www.scala-lang.org/ 下载 Scala2.11.8 程序安装包
根据不同的操作系统选择不同的安装包,下载完成后,将安装包解压到安装目录。将 scala 安装目录下的 bin 目录加入到 PATH 环境变量。
安装完成后,在命令行输入 scala:
Scala 安装完成
SBT 是 Scala 的构建工具,类似于 Java 中的 Maven, 前往http://www.scala-sbt.org/地址下载 SBT 的安装包, 进行安装。
安装完成后,将环境变量加入到 Path 路径。
打开 CMD,执行 sbt,会进行 sbt 的初始化,下载相对应的支撑包。
工程化项目开发, 推荐使用以下 IDE 进行开发, 鉴于 IDEA 的应用普遍性,后期用 IDEA 作为开发工具。
配置 IDEA 支持 Scala 以及 SBT
REPL — 交互式解释器环境。
R(read)、E(evaluate)、P(print)、L(loop)
输入值,交互式解释器会读取输入内容并对它求值, 再返回结果, 并重复此过程。(所见即所得)
在命令行输入 scala 以启动 Scala REPL:
Hello World!
Scala 并不是一个解释器,你输入的内容被快速编译成字节码, 交由 Java
虚拟机进行执行。
访问
在新建 Scala 文件的时候,可以以 sc 结尾,也可以为 scala 结尾,sc 结尾一般认为是交互性脚本文件。
在 IDEA 中新建项
右键项目,选择添加 Scala 库:
将 src/main/java 改成 src/main/scala,也可以不改, 只是一个名字而已。
新建 com.atguigu 包,创建 HelloWorld 类。
类内容如下:
pom.xml 文件内容如下:
打包程序:
可以在 target 下面发现:
通过命令行运行如下:
运行生成的 jar 包有两种方式, scala **.jar 和 java –jar **.jar
如果需要 java –jar **.jar 运行成功,需要将 pom 文件中的 scala 依赖的
scope 去掉。
还可以看到 scala 文件转换成了 class 文件:
原文:https://www.cnblogs.com/LXL616/p/11105049.html