Scala语言简介和开发环境配置
Scala语言的简介和开发环境搭建
Scala是一门结合了面向对象特征和函数式编程特征的语言,它是一个创新的编程语言产品。Scala可以做脚本(就像shell脚本一样),可以做服务端编程语言,可以写数据处理程序等,在很多方面都适用,但是目前主要应用的领域有:编写Web服务器端程序、编写基于Spark的数据处理程序。能做的事情很多,可是被采用的领域不多。
这里对Scala语言的基本情况做一个介绍,然后介绍一下如何搭建Scala的开发环境。
以下是本文的提纲:
1 2 3 4 5 6 7 8 9 10 11 | 1、Scala的简介 2、Scala开发环境的配置 2.1 命令行下配置Scala开发环境 2.2 IDE下配置Scala开发环境 2.2.1 Idea下配置Scala开发环境 2.2.2 Eclipse下配置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会自动完成项目创建。
创建完成后的项目目录结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |- 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目录,这是项目编译之后的输出结果文件夹,可以不用太在意。此刻项目的目录结构如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |- 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官方推荐的IDE。在idea中配置Scala的开发环境,只需要安装Idea的scala插件即可。大多数时候,我们开发Scala程序都需要sbt的帮助,所以也需要安装sbt,不过,当安装了idea的scala插件之后,sbt也就自动安装上了,因此,其实我们要做的就是安装scala的插件。
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的编译器、sbt等,scala import organizer插件是用来对scala代码中的import语句进行自动整理的。
还有,另外一个插件scalafmt,是用来对scala代码进行格式化的,可以选择安装,按照自己个人的意愿。
4、创建、运行普通Scala项目
打开Idea,在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项目不需要额外安装其他东西,直接创建就好了。
打开Idea,在Welcome窗口中Create new project->右边选Scala,左边选sbt->填写项目名称,选择JDK、sbt的版本、ScalaSDK->finish,这样项目就建好了。
一个创建好的项目的目录结构如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | - .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开发环境
Eclipse下配置Scala的开发环境只需要安装eclipse的一个插件,名为Scala IDE for Eclipse。使用Scala IDE for Eclipse可以开发纯Scala的项目和Scala-Java的混合项目,它包含了一个Scala的调试器,支持scala的语法高亮等功能。
Eclipse中安装Scala IDE的过程如下:help->Eclipse Marketplace,在出来的Eclipse Marketplace窗口中,在find字段中输入Scala,回车,在下方的框中选择ScalaIDE 4.7.x,点击Install,之后点击对话框底部的finish,关闭对话框。
此时,ScalaIDE的安装进度在Eclipse的底部状态栏中有显示,当进度到100%的时候,重启Eclipse。
参考资料
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通