【Scala语言编程_1】Scala基础与HelloWorld
一、Scala基础与简介
1、多范式:支持面向对象、支持函数式编程
2、底层依赖JVM(后面会看到,很多异常是基于java的异常)
(以下废话来源网络)
Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala 运行在Java虚拟机上,并兼容现有的Java程序。Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。
Scala 特性
- 面向对象特性
Scala是一种纯面向对象的语言,每个值都是对象。对象的数据类型以及行为由类和特质描述。
类抽象机制的扩展有两种途径:一种途径是子类继承,另一种途径是灵活的混入机制。这两种途径能避免多重继承的种种问题。
- 函数式编程
Scala也是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型。
更进一步,程序员可以利用Scala的模式匹配,编写类似正则表达式的代码处理XML数据。
- 静态类型
Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。类型系统具体支持以下特性:
泛型类
协变和逆变
标注
类型参数的上下限约束
把类别和抽象类型作为对象成员
复合类型
引用自己时显式指定类型
视图
多态方法
- 扩展性
Scala的设计秉承一项事实,即在实践中,某个领域特定的应用程序开发往往需要特定于该领域的语言扩展。Scala提供了许多独特的语言机制,可以以库的形式轻易无缝添加新的语言结构:
任何方法可用作前缀或后缀操作符
可以根据预期类型自动构造闭包。
- 并发性
Scala使用Actor作为其并发模型,Actor是类似线程的实体,通过邮箱发收消息。Actor可以复用线程,因此可以在程序中可以使用数百万个Actor,而线程只能创建数千个。在2.10之后的版本中,使用Akka作为其默认Actor实现。
- 谁使用了 Scala
2009年4月,Twitter宣布他们已经把大部分后端程序从Ruby迁移到Scala,其余部分也打算要迁移。
此外,Wattzon已经公开宣称,其整个平台都已经是基于Scala基础设施编写的。
瑞银集团把Scala用于一般产品中。
Coursera把Scala作为服务器语言使用。
二、安装配置Scala、常用的开发工具
1、安装配置
安装包下载地址: https://www.scala-lang.org/download/
我们这里使用的版本是:2.11.8版本跟后面介绍的Spark的版本一致(spark-2.1.0-bin-hadoop2.7.tgz)
scala-2.11.8.zip(Windows)
scala-2.11.8.tgz(Linux)
以windows为例:类似JDK的安装
(0)Windows安装并配置JDK1.8(省略)
(1)解压并安装Scala到: D:\Developer\Scala 并下一步默认安装即可)
(2)设置系统变量:SCALA_HOME=》D:\Developer\Scala
(3)系统变量PATH添加:%SCALA_HOME%/bin
(4)CMD执行: scala -version
【注意】也有的教程会让设置系统classpath变量,这里不设置也可以使用。如果出现问题,可以尝试编辑系统classpath变量,在最后添加如下信息:
1.设置 SCALA_HOME 变量,同上;
2.设置 Path 变量:只需要设置%SCALA_HOME%\bin;即可
3.设置 Classpath 变量:"变量值":.;%SCALA_HOME%\bin;即可
2、常用开发工具
(1)REPL:命令行
CMD输入scala,就进入了REPL命令行界面,类似python的IDLE
退出: :quit
(2)IDEA: 默认没有Scala环境,安装插件SBT(需要联网)
- 1.安装IDEA专业版或者社区版(略)
- 2.启动IDEA-configuration-plugins
搜索scala 在repositories里面找到Scala,并安装(速度略慢,耐心等待)后重启
- 3.重新启动IDEA-新建工程
新建Scala工程选择SBT
设置SBT,Scala的版本,建议值参考下面。工程路径和名称任意。
第一次创建Scala的过程过程很慢,需要等待IDEA右下角的任务执行完毕后再创建package和sc。
在src-main-scala目录下右键新建package。
新建package后,在package下面创建scala worksheet(类似于IDLE,REPL命令行)
(3)Scala IDE:就是Eclipse
Scala IDE也是常用的scala开发工具,基于eclipse。类似java开发的STS。下载地址如下:
下一篇文章介绍ScalaIDE编写代码