1 scala介绍
Scala是一门现代的多范式编程语言,平滑地集成了面向对象和函数式语言的特性,旨在以简练、优雅的方式来表达常用编程模式。
Scala的设计吸收借鉴了许多种编程语言的思想,只有很少量特点是Scala自己独有的。
Scala语言的名称来自于“可伸展的语言”,从写个小脚本到建立个大系统的编程任务均可胜任。
大教堂:几近完美的建筑物,花费很长时间建设,而一旦建成了就长时间保持不变;
集市:每天都会被集市中的人调整和扩展。
Scala就像集市一样,每天都在不断地被使用者扩展。
它没有提供“完美齐全”语言中可能需要的所有东西,而是把制作这些东西的工具交给使用者。
Scala运行于Java平台(JVM,Java 虚拟机)上,并兼容现有的Java程序,Scala代码可以调用Java方法,访问Java字段,继承Java类和实现Java接口。
在面向对象方面,Scala是一门非常纯粹的面向对象编程语言,也就是说,在Scala中,每个值都是对象,每个操作都是方法调用。
什么是函数式编程?
函数式编程中的函数,是指数学中的函数,即自变量的映射。也就是说一个函数的值仅决定于函数参数的值,不依赖其他状态。比如sqrt(x)函数计算x的平方根,只要x不变,不论什么时候调用,调用几次,值都是不变的。
函数式编程有如下特点:
1)函数是一等公民。可以把函数当做参数传给另一个函数。也可以把函数当做返回值返回出来,也可以在一个函数体里定义一个函数。
2)纯函数式编程,没有副作用。即变量一经赋值,就不可变。
3)引用透明性。指的是函数的运行不依赖于外部变量或"状态",只依赖于输入的参数,任何时候只要参数相同,引用函数所得到的返回值总是相同的。
如:sqrt(2) 永远等于 4。
Scala具有以下突出的优点:
◇ Scala具备强大的并发性,支持函数式编程,可以更好地支持分布式系统;
◇ Scala语法简洁,Scala程序保守估计是同样Java程序的一半左右;并且能提供优雅的API;
◇ Scala兼容Java,运行速度快,现有的很多大数据框架使用Scala开发,比如spark,kafka,flink;
现在大数据生态系统的语言支持:
hadoop(java)
hive(java)
hbase(java)
kafka(scala)
spark(scala)
Flink(java)
2 scala及idea安装与配置
2.1 安装 scala
安装 scala-2.11.8.msi,windows会自动将scala加到path中
查看版本
2.2 安装和配置idea
官方下载地址: https://www.jetbrains.com/zh-cn/idea/download/#section=windows
双击 “idea快捷方式”图标
进入主页面
破解idea参考 《idea破解教程.mht》,破解步骤笔记不体现,破解后可无限30重试使用。
2.3 安装scala插件
idea 2021版本,自带scala插件,无需安装。
进入设置界面查看
2.4 安装 maven插件
idea 2021版本,自带 maven 插件,无需安装。
2.5 创建maven工程
选择maven工程,配置jdk,点next
点击 finish 完成工程创建。
2.6 修改idea 主题样式和字体样式
修改idea 主题样式
修改字体样式
2.7 配置maven
2.8 创建scala代码目录
新建的目录,只是一个纯粹的目录,还需要修改成代码目录,修改方式如下
1)右键要修改的目录 → Mark directory as → Sources Root
2)File → Project Structure... → Modules
或 右键工程 → Open Module Settings
2.9 将maven工程加入 scala SDK
maven工程默认是java,需要加入 scala SDK。否则工程不能创建scala的类
首次时,需要点击 “Browse”选择离线scala sdk。
2.10 scala版的helloword
2.11 idea上maven的使用
打开 maven projects 视图
view → Tool Windows → Maven Projects
或 view → Tool Buttons
清理target
当前没有配置assembly 插件,如果配置了assembly插件,可以点击 “刷新”按钮后,看到assembly插件,后续打包就用这个插件。
2.12 怎么在idea查看源码
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.11.8</version>
</dependency>
</dependencies>
2.13 修改快捷键
可根据自己喜好更改。