1.Scala 简述
-
Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。
-
Scala 是一门以Java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言。
-
Scala 运行在Java虚拟机上,并兼容现有的Java程序。
-
源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。
-
创始人马丁·奥德斯基非常厉害,将泛型引入JDK1.5编译器,2005年推出Scala。并且带来了JDK1.8,但是JDK1.8只实现了Scala一小部分。
2.Scala 特性
2.1 面向对象特性
-
Scala是一种纯面向对象的语言,每个值都是对象。对象的数据类型以及行为由类和特质描述。
-
类抽象机制的扩展有两种途径:一种途径是子类继承,另一种途径是灵活的混入机制。这两种途径能避免多重继承的种种问题。
2.2 函数式编程
-
Scala也是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。
-
Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型。
-
更进一步,程序员可以利用Scala的模式匹配,编写类似正则表达式的代码处理XML数据。
2.3 静态类型
-
Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。类型系统具体支持以下特性:
-
泛型类
-
协变和逆变
-
标注
-
类型参数的上下限约束
-
把类别和抽象类型作为对象成员
-
复合类型
-
引用自己时显式指定类型
-
视图
-
多态方法
2.4 扩展性
Scala的设计秉承一项事实,即在实践中,某个领域特定的应用程序开发往往需要特定于该领域的语言扩展。Scala提供了许多独特的语言机制,可以以库的形式轻易无缝添加新的语言结构:
-
任何方法可用作前缀或后缀操作符
-
可以根据预期类型自动构造闭包。
2.5 并发性
Scala使用Actor作为其并发模型,Actor是类似线程的实体,通过邮箱发收消息。Actor可以复用线程,因此可以在程序中可以使用数百万个Actor,而线程只能创建数千个。在2.10之后的版本中,使用Akka作为其默认Actor实现。
3.Scala的安装与配置(Mac上安装 Scala)
Scala 语言可以运行在Window、Linux、Unix、 Mac OS X等系统上。
Scala是基于java之上,大量使用java的类库和变量,使用 Scala 之前必须先安装 Java(>1.5版本)。
我们使用 Mac OS 安装 Scala
第一步:Java 设置
确保你本地以及安装了 JDK 1.5 以上版本,并且设置了 JAVA_HOME 环境变量及 JDK 的bin目录。
// ① 我们可以使用以下命令查看是否安装了 Java:
luomingkuideMacBook-Pro:~ luomingkui$ Java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
// ② 接着,我们可以查看是否安装了 Java 编译器。输入以下命令查看:
javac -version
javac 1.8.0_151
第二步:Scala的安装和配置
① Scala需要Java运行时库,安装Scala需要首先安装JVM虚拟机,推荐安装JDK1.8。 在http://www.scala-lang.org/ 下载Scala2.11.8程序安装包
② 解压缩文件包,可将其移动至你的安装目录
例如:/Users/luomingkui/source/scala-2.11.8
③ 修改环境变量,如果不是管理员可使用 sudo 进入管理员权限,修改配置文件profile:vim /etc/profile
④ 在文件的末尾加入:
export PATH="$PATH:/Users/luomingkui/source/scala-2.11.8/bin"
:wq!保存退出,重启终端,执行 scala 命令,输出以下信息,表示安装成功:
luomingkuideMacBook-Pro:~ luomingkui$ scala
Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_151).
Type in expressions for evaluation. Or try :help.
4.Scala的REPL(交互式解释器)
-
上面打开的scala命令行窗口,我们称之为REPL,也称为交互式解释器。类似于MySQL的默认客户端工具。
-
当在命令行窗口中,输入scala指令代码,解释器计算对应的值,然后再打印出来,接着循环等待用户输入指令。
-
但是从技术上讲,这里并不是一个解释器,而是指令代码被快速的编译成Java字节码并被JVM加载执行。
5.配置IDEA
由于不同版本、不同安装方式的多样性,可自行百度查询安装。