Scala 学习之路(一)—— Scala简介及开发环境配置
一、Scala简介
1.1 概念
Scala全称为Scalable Language,即“可伸缩的语言”,之所以这样命名,是因为它的设计目标是希望伴随着用户的需求一起成长。Scala是一门综合了面向对象和函数式编程概念的静态类型的编程语言,它运行在标准的Java平台上,可以与所有的Java类库无缝协作。
1.2 特点
1. Scala是面向对象的
Scala是一种面向对象的语言,每个值都是对象,每个方法都是调用。举例来说,如果你执行1+2,则对于Scala而言,实际是在调用Int类里定义的名为+的方法。
2. Scala是函数式的
Scala不只是一门纯的面对对象的语言,它也是功能完整的函数式编程语言。函数式编程以两大核心理念为指导:
- 函数是一等公民;
- 程序中的操作应该将输入值映射成输出值,而不是当场修改数据。即方法不应该有副作用。
1.3 Scala的优点
1. 与Java的兼容
Scala可以与Java无缝对接,其在执行时会被编译成JVM字节码,这使得其性能与Java相当。Scala可以直接调用Java中的方法、访问Java中的字段、继承Java类、实现Java接口。Scala重度复用并包装了原生的Java类型,并支持隐式转换。
2. 精简的语法
Scala的程序通常比较简洁,相比Java而言,代码行数会大大减少,这使得程序员对代码的阅读和理解更快,缺陷也更少。
3. 高级语言的特性
Scala具有高级语言的特定,对代码进行了高级别的抽象,能够让你更好地控制程序的复杂度,保证开发的效率。
4. 静态类型
Scala拥有非常先进的静态类型系统,Scala不仅拥有与Java类似的允许嵌套类的类型系统,还支持使用泛型对类型进行参数化,用交集(intersection)来组合类型,以及使用抽象类型来进行隐藏类型的细节。通过这些特性,可以更快地设计出安全易用的程序和接口。
二、配置IDEA开发环境
2.1 前置条件
Scala的运行依赖于JDK,Scala 2.12.x需要JDK 1.8+。
2.2 安装Scala插件
IDEA默认不支持Scala语言的开发,需要通过插件进行扩展。打开 IDEA,依次点击 File => settings=> plugins 选项卡,搜索Scala插件(如下图)。找到插件后进行安装,并重启IDEA使得安装生效。

2.3 创建Scala项目
在IDEA中依次点击 File => New => Project 选项卡,然后选择创建Scala—IDEA工程:

2.4 下载Scala SDK
1. 方式一
此时看到Scala SDK为空,依次点击Create => Download ,选择所需的版本后,点击OK按钮进行下载,下载完成点击Finish进入工程。

2. 方式二
方式一是Scala官方安装指南里使用的方式,但下载速度通常比较慢,且这种安装下并没有直接提供Scala命令行工具。所以个人推荐到官网下载安装包进行安装,下载地址:https://www.scala-lang.org/download/
这里我的系统是Windows,下载msi版本的安装包后,一直点击下一步进行安装,安装完成后会自动配置好环境变量。

由于安装时已经自动配置好环境变量,所以IDEA会自动选择对应版本的SDK。

2.5 创建Hello World
在工程 src目录上右击 New => Scala class 创建Hello.scala。输入代码如下,完成后点击运行按钮,成功运行则代表搭建成功。

2.6 切换Scala版本
在日常的开发中,由于对应软件(如Spark)的版本切换,可能导致需要切换Scala的版本,则可以在Project Structures中的Global Libraries选项卡中进行切换。

2.7 使用scala命令行
采用msi方式安装,程序会自动配置好环境变量。此时可以直接使用命令行工具:

参考资料
- Martin Odersky(著),高宇翔(译) . Scala编程(第3版)[M] . 电子工业出版社 . 2018-1-1
- https://www.scala-lang.org/download/
更多大数据系列文章可以参见个人 GitHub 开源项目: 程序员大数据入门指南
Scala 学习之路(一)—— Scala简介及开发环境配置的更多相关文章
- Scala语言简介和开发环境配置
Scala语言的简介和开发环境搭建 Scala是一门结合了面向对象特征和函数式编程特征的语言,它是一个创新的编程语言产品.Scala可以做脚本(就像shell脚本一样),可以做服务端编程语言,可以写数 ...
- Spark学习之路(二)—— Spark开发环境搭建
一.安装Spark 1.1 下载并解压 官方下载地址:http://spark.apache.org/downloads.html ,选择Spark版本和对应的Hadoop版本后再下载: 解压安装包: ...
- Java简介及开发环境配置
Java简介 Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.(注:Sun公司已于2009年04月20日被Oracle公司收购) 目前, ...
- Scala 系列(一)—— Scala 简介及开发环境配置
一.Scala简介 1.1 概念 Scala 全称为 Scalable Language,即"可伸缩的语言",之所以这样命名,是因为它的设计目标是希望伴随着用户的需求一起成长.Sc ...
- Android开发学习之路--MAC下Android Studio开发环境搭建
自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...
- Android NDK学习(2)Windows下NDK开发环境配置
转:http://www.cnblogs.com/fww330666557/archive/2012/12/14/2817386.html 一.配置好Android开发环境 二.下载安装安卓NDK ...
- ZooKeeper学习之路 (四)ZooKeeper开发环境eclipse配置
一.eclipse中配置zookeeper开发环境 1)将zookeeper eclipse plugin中的6个jar包放到eclipse安装目录下的plugins文件中,重启eclipse (2) ...
- 【从零学习Python】Ubuntu14.10下Python开发环境配置
1. 前言 近期在研究计算机视觉的一些算法,也刚開始接触linux,试着在ubuntu下用qt+openCV进行开发,感觉还行.可是Python作为在学术领域广为应用的高级解释性语言.其在计算机视觉的 ...
- OpenCV 学习笔记(7)vs2015+ffmpeg开发环境配置
参考教程 https://blog.csdn.net/HUSTLX/article/details/51014307 1.在http://ffmpeg.zeranoe.com/builds/ 下载最 ...
随机推荐
- java中的switch结构
switchkeyword的中文意思是开关.转换的意思,switch语句在条件语句中特别适合做一组变量相等的推断,在结构上比if语句要清晰非常多.switch语句的语法格式为:switch(表达式) ...
- ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 Entity Fram ...
- matlab 各种文件的读取(及读写问题的解决)
0. 文本文件 load('**.mat') load('**.mat', '-ascii') load('-mat', filename) load('-ascii', filename) 1. 音 ...
- opengl实现直线扫描算法和区域填充算法
总体介绍 1. 使用线性扫描算法画一条线,线性离散点 2. 利用区域填充算法画多边形区域,区域离散的点 开发环境VS2012+OpenGL 开发平台 Intel core i5,Intel H ...
- ntp时间同步,各种配置方法
1 Windows xp NTP服务器的配置(2003配置方式一样) 1) 首先需要关闭作为NTP服务器的windows系统自带的防火墙,否则将同步不成功. 2) 单击“开始”,单击“运行”,键入 r ...
- C# Textbox的ImeMode取值对中文输入法的影响(进入才能看清)
原文:C# Textbox的ImeMode取值对中文输入法的影响(进入才能看清) C# Textbox的ImeMode取值对中文输入法的影响 取值 五笔加加 微软拼音3.0 搜 ...
- box-shadow 与 filter:drop-shadow 详解及技巧
box-shadow 在前端的 CSS 编写工作想必十分常见.但是 box-shadow 除去它的常规用法,其实还存在许多不为人知的奇技淫巧. 喜欢 markdown 版本的可以戳这里. box-sh ...
- Linux学习之“vfork函数”
为什么使用vfork()? 希望父子进程执行不同的代码.例如: 网络服务程序中,父进程等待客户端的服务请求,当请求达到时,父进程调用fork,使子进程处理该次请求,而父进程继续等待下一个服务请求到达. ...
- [shell]流程控制----case语句
Shell case语句为多选择语句.可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令.case语句格式如下: case 值 in 模式1) command1 command2 ...
- 2013 lost connection to mysql server during query
navicat 导入sql大脚本到mysql数据库报错 解决办法: 修改mysql.ini配置文件: max_allowed_packet=256M wait_timeout=5000