Scala语言的简介和开发环境搭建


Scala是一门结合了面向对象特征和函数式编程特征的语言,它是一个创新的编程语言产品。Scala可以做脚本(就像shell脚本一样),可以做服务端编程语言,可以写数据处理程序等,在很多方面都适用,但是目前主要应用的领域有:编写Web服务器端程序、编写基于Spark的数据处理程序。能做的事情很多,可是被采用的领域不多。

这里对Scala语言的基本情况做一个介绍,然后介绍一下如何搭建Scala的开发环境。

以下是本文的提纲:

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会自动完成项目创建。

创建完成后的项目目录结果如下:

|- 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官方推荐的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,这样项目就建好了。

一个创建好的项目的目录结构如下所示:

- .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

Scala语言简介和开发环境配置的更多相关文章

  1. Java简介及开发环境配置

    Java简介 Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.(注:Sun公司已于2009年04月20日被Oracle公司收购) 目前, ...

  2. Java入门 - 语言基础 - 02.开发环境配置

    原文地址:http://www.work100.net/training/java-environment-setup.html 更多教程:光束云 - 免费课程 开发环境配置 序号 文内章节 视频 1 ...

  3. Scala 学习之路(一)—— Scala简介及开发环境配置

    一.Scala简介 1.1 概念 Scala全称为Scalable Language,即“可伸缩的语言”,之所以这样命名,是因为它的设计目标是希望伴随着用户的需求一起成长.Scala是一门综合了面向对 ...

  4. Scala 系列(一)—— Scala 简介及开发环境配置

    一.Scala简介 1.1 概念 Scala 全称为 Scalable Language,即"可伸缩的语言",之所以这样命名,是因为它的设计目标是希望伴随着用户的需求一起成长.Sc ...

  5. GO语言介绍以及开发环境配置

    一.介绍 GO语言是静态强类型语言 静态也就是编译型语言 二.安装 1.下载地址 下载地址 https://golang.google.cn/dl/ 2.安装 Linux安装 1.下载二进制包:go1 ...

  6. scala语言简介及其环境安装

    scala语言简介及其环境安装 简介: 1.运行在JVM 上,兼容java语言 Scala的代码,都需要经过编译为字节码,然后交由Java虚拟机来运行.所以Scala和Java是可以无缝互操作的.Sc ...

  7. 《React Native 精解与实战》书籍连载「Node.js 简介与 React Native 开发环境配置」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  8. Golang(go语言)开发环境配置

    VSCode开发环境配置 目录 VSCode开发环境配置 先到VSCode官网去下载适合自己系统的VSCode安装软件 演示在WIndows下 安装使用 演示在Linux(Ubuntu/centos) ...

  9. windows下spark开发环境配置

    http://www.cnblogs.com/davidwang456/p/5032766.html windows下spark开发环境配置 --本篇随笔由同事葛同学提供. windows下spark ...

随机推荐

  1. Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示

    功能需求: 分省市统计并展示全国雨量站的数目与位置. 常规做法: 分省市雨量站的数目通过统计表的形式在页面端展示,位置根据XY坐标信息将雨量站标绘在图上. 优化做法: 去掉统计图的展示方式,直接将各省 ...

  2. 无法打开包括文件:“iostream.h”

    把#include<iostream.h>改为:#include<iostream>using namespace std; #include<iostream.h> ...

  3. I.MX6 ethtool 移植

    /************************************************************************* * I.MX6 ethtool 移植 * 说明: ...

  4. spring的笔记1 关云长

    1.1   实例化方式 l  3种bean实例化方式:默认构造.静态工厂.实例工厂 1.1.1  默认构造 <bean id="" class=""> ...

  5. 剑指offer-第二章数据结构(数组,字符串,链表,树,栈与队列)及例题

    一.数组(最简单的数据结构) 定义:占据一块连续内存并按照顺序存储数据.创建时先指定大小,分配内存. 优点:时间效率高.实现简单的hash(下标为key,对应的数据为value) 缺点:空间效率差.如 ...

  6. WCF日志跟踪SvcTraceViewer.exe

    参考: https://msdn.microsoft.com/zh-cn/library/ms732023.aspx https://msdn.microsoft.com/zh-cn/library/ ...

  7. matlab数据流仿真和时间流仿真

    simulink 使用的动态系统仿真,仿真需要求状态方程和输出方程,关键是求状态方程,而状态方程的求解有多种算法,可变步长和定步长,所以仿真时对求解器的选择和步长的设置就比较重要. 所谓基於数据流的仿 ...

  8. noip积木大赛

    先要覆盖一号位置的高度,(现在你的目的只是想要覆盖一号位置). 每次你可以选区间[l,r]高度+1,这个作为一个操作. 为什么不选的范围大一点,让更多的区间增加高度呢. 所以红色的地方是,在我的目的是 ...

  9. asp+jquery+ajax,asp后台程序执行不正常

    项目中前台页面通过jquery .ajax功能将关键数据传递到后台并写入数据库,调试中发现后台程序一直没有正常执行,后反复排查 发现asp程序中不能包含#include file语句

  10. Tomcat服务器下 catalina.out 日志开关

    很多异常在 debug 日志里不会打印,但在 catalina.out 里会打印,比如方法调用找不到,jdk 版本不匹配等.但是打开了该日志开关又会产生一个问题,就是它会哗啦啦的不断急剧膨胀,文件太大 ...