Scala语言的简介和开发环境搭建
Scala是一门结合了面向对象特征和函数式编程特征的语言,它是一个创新的编程语言产品。Scala可以做脚本(就像shell脚本一样),可以做服务端编程语言,可以写数据处理程序等,在很多方面都适用,但是目前主要应用的领域有:编写Web服务器端程序、编写基于Spark的数据处理程序。能做的事情很多,可是被采用的领域不多。
这里对Scala语言的基本情况做一个介绍,然后介绍一下如何搭建Scala的开发环境。
1、Scala的简介
Scala是一门现代的编程语言,它包含了多个编程范式,集合了面向对象编程和函数式编程的优点。它具有如下几个鲜明的特点:
首先,Scala支持面向对象编程。
在Scala中,任何一个值都是对象,比如一个变量是一个对象,一个对象(Obejct,通过class new出来的对象)自不必说是对象,可是Scala中的函数也是一个对象。同时,Scala支持继承、多态、封装等面向对象特征。从这个意义来看,Scala确实是一门面向对象的编程语言。
其次,Scala支持函数式编程。
在Scala中,函数也是一个值。Scala支持匿名函数、高阶函数、嵌套函数(就是在一个函数的内部还可以定义函数,定义在函数内部的函数被称为嵌套函数)等。
Scala还支持case class、pattern matching(模式匹配),以及单例对象(Singleton objects,类似于Java中的单例模式)。
第三,Scala是静态类型的语言。
第四、Scala是可以扩展的语言。
在Scala中,可以通过为Scala增加库的方式来增加Scala的语言特性,从而形成一个DSL(Domain Specific Language领域特定语言)。
最后,Scala可以和Java互操作。
互操作的含义是:一种语言的程序可以顺利地调用其他语言写的程序(包括API、库等),那么就可以说这两种语言之间有互操作性。
Scala是一门基于Java虚拟机的语言(类似的语言还有Groovy、Jruby等),所以在Scala中可以直接调用Java的标准库和第三方库,这样以来,用Scala写程序就可以直接复用Java中现有的很多优秀的程序库了,而不必再另外实现一套Scala的类似库。(我们在建设一个系统的时候,如果能复用,就尽量复用,把有限的精力放在少量的创新性的工作上。这也是为什么软件设计中特别在意直接复用的原因。当然如果是学习某一个程序库的设计原理,那么最好的办法就是自己先实现一下,然后去看看此程序库的代码)
2、Scala开发环境的配置
我们可以在两种环境下开发Scala程序。一个是命令行下开发,另一个是使用IDE进行开发。下面分别介绍一下这两种不同情况下的Scala环境搭建。
2.1 命令行下配置Scala开发环境
如果习惯于在命令行下做开发工作,比如Linux用户使用vim编写源程序,或者Windows的用户使用notepad++编写源程序,那么就可以使用Scala和Sbt(Scala build tool)来编译、测试、运行Scala程序。
第一、确保操作系统中已经安装好了JDK。具体方法不介绍了。
第二、安装Sbt。
Sbt的安装方法很简单,只要从Scala的官方网站上下载到sbt的zip或tgz文件,然后解压即可。一般下载到的sbt安装包类似于sbt-1.1.1.tgz。
把它解压到某一个目录下,比如Linux操作系统下可以解压到/usr/local下。
tar -xzf sbt-1.1.1.tgz -C /usr/local/
然后在/etc/profile中为sbt增加环境变量。
export SBT_HOME=/usr/local/sbt-1.1.1
export Path=SBT_HOME/bin:$PATH
这样基于命令行的Scala开发环境就配置好了。
第三,测试开发环境。
1、mkdir hello-scala; cd hello-scala #创建一个目录,并进入这个目录,这个目录是我们的工作目录
2、sbt new scala/hello-world.g8
这里使用了一个sbt的项目模板hello-world.g8(sbt的项目模板都是以.g8结尾的),这个命令会从github中拉取hello-world.g8,然后按照hello-world.g8去创建一个项目。
接下来hello-world.g8会提示用户输入项目名称,这里输入hello-scala,接下来sbt会自动完成项目创建。
创建完成后的项目目录结果如下:
|- hello-world
|- project (sbt uses this to install, manage plugins and dependencies)
|- build.properties
|- src
|-main
|-scala (all of your scala code goes here)
|-Main.scala (Entry point of program)
|-build.sbt (sbt's build definition file)
|- target
3、运行这个项目。
cd hello-world #进入hello-world项目的根目录。
输入sbt命令,进入sbt的控制台中,输入run命令就可以运行项目了。
sbt
run
这样就看到了项目的运行结果。项目运行之后,会在项目根目录下以及project目录下生成target目录,这是项目编译之后的输出结果文件夹,可以不用太在意。此刻项目的目录结构如下:
|- hello-world
|- project (sbt uses this to install, manage plugins and dependencies)
|- build.properties
|- target (sbt run之后生成的)
|- src
|-main
|-scala (all of your scala code goes here)
|-Main.scala (Entry point of program)
|- build.sbt (sbt's build definition file)
|- target (sbt run之后生成的)
|- target
至此,我们就用sbt创建了一个项目,并且用sbt对其进行了编译和运行。以后修改了代码,或者为项目增加了新的代码,都可以按照这个流程编译、运行。
4、为项目增加依赖包。
为什么要介绍为项目增加依赖包呢?因为通常做一个软件的过程,可以看成一个调用标准库、第三方库的过程,大部分的项目都会不可避免地用到第三方的库,第三方库一般是以jar文件的形式存在的,为了在项目中使用它,就必须把要调用的库设置成项目的依赖库。因此,如果学会了如何为项目增加依赖,就相当于知道调用第三方库的方法,那么任何项目都可以做。
打开项目目录下的build.sbt文件,在其中增加如下的代码:
libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.0"
这个依赖的添加和Maven中添加依赖的思路是一样的,描述依赖用了三个元素,groupId、artifactId、version,格式为:groupId %% artifactId % version。
这就为项目增加了scala-parser-combinators这个库,这样在项目的scala源代码中就可以import scala-parser-combinators库中的class和object了。
2.2 IDE下配置Scala开发环境
目前常用的IDE有两个:Idea和eclipse,下面分别就这两个IDE配置Scala开发环境。
2.2.1 Idea下配置Scala开发环境
Idea下配置Scala开发环境,只需要安装Idea的scala插件即可。不过,大多数时候,我们开发Scala程序都需要Sbt的帮助,所以Sbt如何和Idea配合也要搞清楚。
1、确认安装了JDK。
因为Scala是JVM之上的语言,所以配置Scala的开发环境首先要确保操作系统中安装了JDK。另外,Idea其实本身就集成了一个JDK,这个JDK用来运行Idea本身,用Idea配置Java开发环境和Scala开发环境的时候,还需要另外安装一个独立的JDK。
2、下载、安装Idea
3、下载安装idea的scala插件
File-》Setting-》Plugins,搜索框中输入scala,之后安装scala和scala import organizer两个插件。scala插件是开发scala必须的插件,scala import organizer插件是用来对scala代码中的import语句进行自动整理的。
还有,另外一个插件scalafmt,是用来对scala代码进行格式化的,可以选择安装,按照自己个人的意愿。
4、创建、运行普通Scala项目
打开Scala,在Welcome窗口中Create new project->右边选Scala,左边选IDEA->填写项目名称,选择JDK,选择ScalaSDK->finish,这样项目就建好了。
之后在project tool window的src目录上右击选择new scala class,在出来的对话框中填入类型,kind选择object,点击ok就新建一个scala的object。之后就可以往里输入代码,运行、测试了。
这就是一个普通的scala项目的创建步骤。
5、使用sbt(scala build tool)创建scala项目
Sbt是scala build tool的简称,它是一个构建管理工具,是scala默认的构建管理工具,类似于Java领域的Maven。
在idea中,只要安装了scala插件,那么sbt是自动也安装上了,所以创建sbt项目不需要额外安装其他东西,直接创建就好了。
打开Scala,在Welcome窗口中Create new project->右边选Scala,左边选sbt->填写项目名称,选择JDK,sbt的版本,选择ScalaSDK->finish,这样项目就建好了。
一个创建好的项目的目录结构如下所示:
- .idea (IntelliJ files)
- project (plugins and additional settings for sbt)
- src (source files)
- main (application code)
- scala (scala source files)
- test (unit tests)
- scala (scala source files)
- target
- build.sbt (build definition file for sbt)
之后在src/main/scala下添加项目的代码。剩下的工作就是编译、运行了。运行之前要在run->edit configurations出现的对话框中新增一个run configuration,点击+之后选择sbt task,在name中输入configuration的名字,在task中输入run(运行本项目的任务)。
最后,就可以运行了,运行的时候点击 run->run "run configuration name",就可以在底部出现的run tool window中看到运行的结果。
2.2.2 Eclipse下配置Scala开发环境
参考资料
1、http://docs.scala-lang.org/tour/tour-of-scala.html
2、https://docs.scala-lang.org/getting-started.html
3、https://docs.scala-lang.org/getting-started-intellij-track/building-a-scala-project-with-intellij-and-sbt.html