本文是对Scala语言的一个基本介绍和快速入门,共包括如下章节:
- 概述
- 安装Scala
- 交互式命令行工具
- 文件方式
- 基本语法规范
- 开发工具
- 小结
参考资料:因为Scala源码是编译成Java字节码,然后在jvm中执行。并且scala和java可以相互无缝调用。因此scala语言和java语言有天然的关系,语法也比较类似,所以熟悉JAVA语言对理解Scala语言有很大帮助。
一、概述
Scala是当前热门的现代编程语言之一,尤其在大数据领域,如spark,kafka等大数据技术的而核心代码都是使用Scala语言编写的。scala由洛桑联邦理工学院的Martin Odersky设计,第一个版本发布于2003年,现在最新版本为2.12版本。
Scala语言有如下一些主要的特性:
- 基于JVM运行,可以和java相互无缝互操作
- 静态类型,编译型语言,编译成java字节码
- 支持函数式编程范式
- 纯面向对象编程语言,所有值都是对象
- 并发性,使用Actor作为其并发模型
- 自动类型推断功能
二、安装scala
从官方网站www.scala-lang.org/download下载二进制版本,如下图所示:
如果要在window下安装,下载windows下的安装包 scala-2.12.8.msi,下载到本地后,双击运行安装即可。安装完成后,安装程序会将scala安装目录下的bin目录加入到Path环境变量中,这样可在dos命令行下的任何当前目录下运行bin目录下的可执行脚本或程序。
如果要在Linux下安装,下载scala-2.12.8.tgz,下载到本地后解压即可,然后解压目录下的bin目录加入到PATH环境变量中,便于任何当前目录下都可运行bin目录下的可执行脚本或程序。
三、交互式命令行工具
scala提供了一个交互式命令行脚本(linux下文件名为scala,windows下文件名为scala.bat),可以快速的来简单学习scala的语法知识。
打开命令行,运行scala,出现交互式界面,就可以输入代码,输入:quit退出交互式程序(注意quit前要有冒号)。
C:\Windows\System32>scala
Welcome to Scala 2.12.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_40).
Type in expressions for evaluation. Or try :help.
scala> println("hello,world")
hello,world
scala> :quit
C:\Windows\System32>
四、文件方式
交互式命令行只是用来进行编程练习的。实际的应用开发中,源代码是保存在文件中的,然后进行源代码编译,再运行。scala提供了一个脚本文件scalac(windows下为scalac.bat)可以进行源代码的编译,将源文件编译成class文件,然后可以利用scala脚本来运行。下面通过一个简单的例子来举例。
建立一个源码文件,文件名如HelloWorld.scala保存到本地,scala的源文件的扩展名为scala。文件内容如下:
object HelloWorld {
def main(args: Array[String]) {
println("Hello, world!")
}
}
上面代码虽少,但是一个完整的可独立运行的scala应用程序。一个独立运行的scala应用程序的入口是一个单例对象(如上面用object关键字定义的HelloWorld对象)的main方法(如上面用def关键字定的方法),类似java中的main方法的入口。更详细的scala语法参见《Scala学习笔记(2)-基础语法》。
下面对源代码文件进行编译,并运行,整个过程如下:
D:\scaladev\demo>ls
HelloWorld.scala
D:\scaladev\demo>scalac HelloWorld.scala
D:\scaladev\demo>ls
'HelloWorld$.class' HelloWorld.class HelloWorld.scala
D:\scaladev\demo>scala HelloWorld
Hello, world!
编译用到scala的scalac程序,类似jdk中的javac,运行使用scala程序,类似jdk中的java程序。
需要特别说明的是,scala是一个纯面向对象的编程语言,在编写scala程序时,所有的语句(如函数定义、变量声明和赋值)都必须被包含在类或单例对象中。我们前面看到在scala提供的交互式命令行程序中可以直接输入语句(并没有定义类)进行执行,是因为命令行程序已经做了特殊的处理。
五、基本语法规范
区分大小写,如变量、函数名等都区分大小写
单行语句后面可以加分号结尾(如java),也可以不加分号结尾
六、开发工具
可以有多种方式来编写scala程序,在正式项目开发中我们一般使用可视化的IDE工具,如IntelliJ。如果是学习scala的语法和相关的api,也可以使用scala提供的命令行工具(如前面介绍的),或不需要任何工具直接使用一些在线的编程练习系统。
(一)使用带有Scala插件的IntelliJ IDE
安装
1、首先下载并安装IntelliJ Community Edition
2、安装scala插件。创建项目
1、打开IntelliJ并单击File => New => Project
2、 在左侧面板中,选择Scala。在右侧面板中,选择IDEA。
3、在出现的对话框中,将项目命名为HelloWorld
4、假设这是您第一次使用IntelliJ创建Scala项目,则需要安装Scala SDK。在Scala SDK字段的右侧,单击“ 创建”按钮。如果本地已经有scala运行环境,选择所在的目录即可;如果没有,选择下载。创建SDK并返回“新建项目”窗口。
5、 单击“ 完成”。编写代码
1、在左侧的“ 项目”窗格上,右键单击src并选择“ 新建” =>“ Scala类”。
2、命名该类Hello,并将Kind更改为object。
3、将类中的代码更改为以下内容:
object Hello {
def main(args: Array[String]) {
println("Hello, world!")
}
}
- 运行程序
在左侧的“ 项目”窗格上,右键单击Hello节点并选择Run'Hello'。
或在选中Hello节点,按快捷键 ctrl+shift+F10 可运行程序。
(二)使用SBT
sbt是类似ANT、MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具。其主要特性有:
- 原生支持编译Scala代码和与诸多Scala测试框架进行交互;
- 使用Scala编写的DSL(领域特定语言)构建描述
- 使用Ivy作为库管理工具
- 持续编译、测试和部署
- 整合scala解释器快速迭代和调试
- 支持Java与Scala混合的项目
当安装配置好后SBT后,我们可以在命令行下使用SBT,也可以在IntelliJ中使用SBT。关于SBT的详细信息我们不在本文中介绍。
七、小结
本文并没有对scala的语法进行详细介绍,主要是介绍scala运行环境和开发工具的搭建。下面的文章是对scala语言的更多介绍。
1、《Scala学习笔记(2)-基础语法》
2、《Scala学习笔记(3)-面向对象编程上篇》
3、《Scala学习笔记(4)-面向对象编程下篇》
4、《Scala学习笔记(5)-函数式编程》