Scala简介和安装
简介
Scala是一种多范式的编程语言(多范式:多种编程方法的意思。有面向过程、面向对象、泛型、函数式四种程序设计方法),其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序
Scala以一种简洁的高级语言结合了面向对象和函数式编程。 Scala的静态类型有助于避免复杂应用程序中的bug,它的JVM和JavaScript运行时让您能够轻松地构建高性能系统,并轻松访问巨大的库生态系统。
为什么要学习scala
- 优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。
- 速度快:Scala语言表达能力强,一行代码抵得上Java多行,开发速度快;Scala是静态编译的,所以和JRuby,Groovy比起来速度会快很多。
- 能融合到Hadoop生态圈:Hadoop现在是大数据事实标准,Spark并不是要取代Hadoop,而是要完善Hadoop生态。JVM语言大部分可能会想到Java,但Java做出来的API太丑,或者想实现一个优雅的API太费劲。
- spark分布式运算框架是scala语言编写的
发展史
scala和java的关系
正常情况下,会scala的程序员都是会Java的,scala是基于java的,所以我们先搞清楚java,scala和jvm的关系
特点
Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言(静态语言需要提前编译的如:Java、c、c++等,动态语言如:js)。
- Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。
- Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对接。
- Scala单作为一门语言来看,非常的简洁高效,可以为我们的代码避免一些bug。
salca环境搭建
由于scala是基于java来开发的, 编写的java类可以使用javac命令编译成.class文件被JVM加载到内存中执行 ! 那么scala可以通过scalac命令将编写的scala文件编译成.class文件一样被JVM加载到内存中,因此Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK!
Windows
方式一
访问Scala 官网 下载Scala编译器安装包,目前最新版本是3.1.3,但是目前大多数的框架都是用2.12.x编写开发的,Spark3.x使用的就是2.12.x,所以这里推荐2.12.x版本,下载scala-2.12.11.msi后点击下一步就可以了!
方式二
解压配置系统环境变量
在windows的控制台输入scala ,显示如下消息说明windows环境搞定!
注意 1:解压路径不能有任何中文路径,最好不要有空格。
注意 2:环境变量要大写 SCALA_HOME
Linux
- 下载后上传Scala文件到linux上的定目录
- 解压
- 配置环境变量,将scala加入到PATH中
vi /etc/profile
export SCALA_HOME=/opt/app/scala/scala-2.12.11
export PATH=$PATH:$JAVA_HOME/bin:/usr/java/scala-2.12.11/bin
测试验证scala安装完成,任意位置输入scala后显示scala的命令行,然后在里面测试两数相加
配置Idea
方法一:离线安装
打开jetbrains得官网:http://www.jetbrains.com后点击Develop Tools后选择scala
然后选择idea对应得版本下载插件(DownLoad即可)
打开idea后找到左上角得File --》settings --》plugins
点击设置选择Install Plugin from Disk ...后选择刚才下载得插件,点击ok后重启idea即可
方法二:在线安装
打开idea后找到左上角得File --》settings --》plugins--》搜索scala后install后重启idea即可
创建scala项目
- 创建一个maven项目
- 在src--》main--》创建一个scala包
- 右击scala包下选择Mark Directory as --》 Sources Root
4. 右击项目名--》Add Framework Support...
5. 进去选择scala,然后将scala得sdk添加进去,点击ok即可创建scala类了
编写scala的类
- scala文件都是以.scala结尾的
- scala中的命名规范和java中的一致
- scala中的main方法要写在objec修饰的类中
- scala的执行流程和java的类似 , 先编译再执行,因此有编译期的错误推导
- scala 代码中的行末尾的分号最好不书写 ,体现其简洁
object HelloWorld {
def main(args: Array[String]): Unit = {
println("HelloWorld")
System.out.println("java中的一部分代码在scala中也是可以运行的")
}
}