Scala概述及环境配置
一、概述
1.1 为什么要学Scala?
Spark是新一代的内存级大数据的计算框架,是大数据学习的重要内容。随着Spark的兴起,同时也带动了Scala的学习,因为Spark就是Scala编写的。为了更好的学习Spark,首先学习Scala就是必不可少的。
1.2 Scala和Java的关系?
一般来说,学习Scala的人都了解Java。Scala是基于Java的,它包含了Java的部分类库并进行了包装,同时也有它特有的类库。
1.3 Scala的语言特点
Scala是一门以Java虚拟机(JVM)为运行环境并且将面向对象和面向函数式的特性最佳结合的静态类型编程语言(静态语言需要提前编译,如:java,c++等,动态语言如:js等)。
因此,Scala是一门多范式的编程语言,支持面向对象和函数式编程。(多范式指:多种编程方法的意思。有面向过程、面向对象、函数式编程、泛型四种编程方法)。
Scala的源码(.scala)会被编译为Java的字节码(.class),然后运行在JVM之上,并且可以调用现有的Java类库,实现两种语言的无缝连接。同时,Scala还将函数式编程完美的融合到了Java中,作为一门语言,它是非常简洁高效的。
二、Scala环境搭建
2.1 安装步骤
- 首先确保已经安装了JDK 1.8;
- 下载需要的Scala安装文件scala-*.zip
- 解压到需要的目录
- 配置环境变量
SCALA_HOME=D:\Program Files\scala-2.12.15 PATH=%SCALA_HOME%\bin
- 在命令窗口中输入scala测试
- 在IDEA中安装Scala插件,默认情况下IDEA不支持Scala的开发,需要安装Scala插件。
三、Hello Word案例
3.1 创建一个maven项目
默认下,Maven不支持Scala的开发,需要引入Scala框架。右键点击->Add Framework Support->选择scala并配置Use library(scala的安装路径)
new一个新的目录scala,并Mark Directory as -> 选择Sources root。
创建包路径,然后右键new一个scala class,
在类中生成main方法:(def main)
object Hello { def main(args: Array[String]): Unit = { println("hello world") System.out.println("hello world") } }
程序说明;
- 参数声明:Java中是(类型 参数名);Scala中是(参数名 类型);
- Scala中没有public关键字,如果没有声明访问权限,默认就是公共的;
- Scala中没有static关键字,因为scala中没有静态语法;
- Scala中没有Void,而有Unit类型表示没有返回值;
- Scala中声明方法必须使用def的关键字;
- Scala中方法实现赋值给了方法声明,所以中间必须有等号连接。
def main(args: Array[String]): Unit(方法声明)= (方法实现){}
- Scala中一切都是对象且没有静态语法,为了模仿静态语法,上面的代码是通过采用伴生对象单例的方式调用方法。(Scala中使用object声明的对象都是单例对象;伴生对象就是这个类本身,即Hello);
- class关键字和Java中的作用相同,用来定义一个类;
3.2 关联源码
在使用Scala的过程中,为了搞清楚Scala的底层原理,可以查看源码和关联源码。
- 查看源码:ctrl + 关键字
- 关联源码,从官网下载对应版本的scala-sources-2.12.15.tar.gz的源码文件,解压缩到scala的lib目录下;点击Attach Sources,选择这个源码文件就可以查看源码了。
- 也可以上官网查看:https://www.scala-lang.org/
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库