2023年1.1 搭建Scala开发环境

5 篇文章 0 订阅
订阅专栏

学习目标:

一、Scala简介
(一)Scala概述
(二)函数式编程
(三)Scala特性
1、一切都是对象
2、一切都是函数
3、一切都是表达式
(四)在线运行Scala
二、选择Scala版本
三、Windows上安装Scala
(一)到Scala官网下载Scala
(二)安装Scala
(三)配置Scala环境变量
(四)测试Scala是否安装成功
1、查看Scala版本
2、启动Scala,执行语句
四、Linux上安装Scala
(一)到Scala官网下载Scala
(二)安装Scala
1、登录ied虚拟机
2、上传scala安装包到ied虚拟机
3、解压scala安装包到指定目录
(三)配置Scala环境变量
(四)测试Scala是否安装成功
1、查看Scala版本
2、启动Scala,执行语句
五、​Scala的使用
(一)交互模式
1、命令行方式
2、文件方式
(二)编译模式
1、创建源程序
2、编译成字节码
3、解释执行对象

六、课后作业

    • 任务1、在笔记本上安装Windows版的Scala
    • 任务2、在你的私有云虚拟机上安装Linux版的Scala
    • 任务3、练习命令行模式与编译模式运行Scala

学习内容:

  1. 了解Scala语言的特点
  2. 学会搭建Scala开发环境
  3. 了解命令行模式与编译模式

一 Scala简介

(一)Scala概述
Scala是Scalable Language的简写,是一门多范式的编程语言,由联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计,设计初衷是要集成面向对象编程和函数式编程的各种特性。
Scala是一种将面向对象和函数式编程结合在一起的高级语言,旨在以简洁、优雅和类型安全的方式表达通用编程模式。Scala功能强大,不仅可以编写简单脚本,还可以构建大型系统。
Scala运行于Java平台,Scala程序会通过JVM被编译成class字节码文件,然后在操作系统上运行。其运行时候的性能通常与Java程序不分上下,并且Scala代码可以调用Java方法、继承Java类、实现Java接口等,几乎所有Scala代码都大量使用了Java类库。
Scala 是完全兼容Java的,其实Scala就是在Java语言的基础上增加了一层编码的 “壳”,让程序人员可以通过函数式编程的方式来开发程序。由于Scala最终被编译为.class,所以其实本质上还是Java,所以在Scala中可以任意的调用Java的API。好处显而易见:让Jva程序员可以更无障碍的转到Scala;让原先Java的API仍然可以在Scala中使用;公司中的Java平台不用替换就可以使用Scala。
(二)函数式编程
函数式编程:将所有复杂的问题的解决,拆分为若干函数的处理。每一个函数可以去实现一部分功能,利用很多次函数的处理,最终解决问题。

函数式编程相对于面向对象编程,更加抽象,好处是,代码可以非常简洁,更多采用常量而不是变量来解决问题,这样额外带来的好处:在线程并发时,可以减少甚至杜绝多线程并发安全问题,特别适合于应用在处理高并发场景、分布式场景下的问题。函数式编程可以使用高阶函数,函数是一等公民,可以更加灵活的进行程序的编写。

函数式编程并不是面向对象编程的发展,而是另外一种解决问题的思路,两者之间也并没有绝对的好坏之分,在不同的场景中各有各的优缺点。

(三)Scala特性
在很多地方Scala都很像Java,也是静态类型语言,但是比Java更为函数式编程,这句话主要从三句话就可以理解“一切都是对象”,“一切都是函数”以及“一切都是表达式”三方面理解。
1、一切都是对象
Scala里一切都是对象,这大概和Python很像,因为即便是数字1都有一系列的方法,所以我们可以调用1.toDouble将Int类型的1转换为Double类型的1。
2、一切都是函数
表现为可以重载操作符,跟Python很像,在一定程度上Scala是Java和Python生的孩子,只不过遗传基因比较大的卵子是Java提供的,而比较小的那颗精子则是Python提供的。
3、一切都是表达式
在Scala里,一切都是表达式,即使像if(){}else{}这样的语句块也是有返回值的。

(四)在线运行Scala 

  • 通过浏览器访问: Scala在线工具

  • 单击【点击运行】按钮,可以查看代码运行结果 

  • 可以对照一下JavaHelloWorld程序,两者完全一一对应,相似度极高 

二、选择Scala版本 

  • 本次学习我们准备采用Spark3.3.1,为了后续操作不出现任何匹配方面的问题,建议采用跟Spark版本匹配的Scala。 

  •  根据Spark官网建议,我们最好下载Scala 2.13版本

 三、Windows上安装Scala

(一)到Scala官网下载Scala 

  • Scala2.13.10下载网址: Scala 2.13.10 | The Scala Programming Language 

  • 单击【scala-2.13.10.msi】超链接,将scala安装程序下载到本地 

 (二)安装Scala

  •  双击安装程序图标,进入安装向导,按提示进行操作,完成Scala的安装

 

  • 安装到自己想安装的位置(我的是D:\bigdata-time) 

 (三)配置Scala环境变量

  • 设置Windows系统的环境变量
变量名变量值
SCALA_HOMEC:\Program Files (x86)\scala
Path%SCALA_HOME%\bin
  •  通常Scala安装完成后会自动将Scala的bin目录的路径添加到系统Path变量中。若Path变量中无该路径,则需要手动添加。

 

 (四)测试Scala是否安装成功

 1、查看Scala版本

  • 启动命令行窗口,执行scala -version命令,若能正确输出当前Scala版本信息,则说明安装成功 

2、启动Scala,执行语句 

  • 在命令行提示后输入scala,则会进入Scala的命令行模式,在此可以编写Scala表达式和程序 

  • val - value:用于定义Scala常量

  • var - variable:用于定义Scala变量

  • 常量只能赋值一次,再次赋值是不允许的 

  •  Scala里val定义的变量相当于Java里用final定义的变量,其实都是常量,不能再给它赋值

四、Linux上安装Scala 

(一)到Scala官网下载Scala 

  • Scala2.13.10下载网址: Scala 2.13.10 | The Scala Programming Language 

  • 单击【scala-2.13.10.tgz】超链接,将scala安装包下载到本地 

(二)安装Scala 

1、登录ied虚拟机 

  • 利用FinalShell登录ied虚拟机 

2、上传scala安装包到ied虚拟机 

  • 进入/opt目录,将scala安装包上传到该目录 

 3、解压scala安装包到指定目录

  •  执行命令:tar -zxvf scala-2.13.10.tgz -C /usr/local

 

(三)配置Scala环境变量 

  • 执行命令:vim /etc/profile 

 export SCALA_HOME=/usr/local/scala-2.13.10
export PATH=$SCALA_HOME/bin:$PATH

  • 存盘退出(:wq)后,执行命令:source /etc/profile,让环境配置生效 

(四)测试Scala是否安装成功 

1、查看Scala版本 

  • 执行scala -version命令,若能正确输出当前Scala版本信息,则说明安装成功 

  • 有的会出现报错 
  • 原因在于没有安装JDK(运行Scala要用到Java虚拟机)
  • 上传、安装、配置JDK

 

  •  配置好JDK之后,查看Scala版本

 2、启动Scala,执行语句

  •  在命令行提示后输入scala,则会进入Scala的命令行模式,在此可以编写Scala表达式和程序

  • 演示语句块的返回值 

 

  • 演示if结构的返回值 

  •  采用Java那种传统方式来处理

  • 计算1 + 2 + 3 + …… + 100的值 

  • 计算1 + 3 + 5 + …… + 99的值 

  •  打印字符直角三角形

 

 

 五、​Scala的使用

  •  Scala可以在交互模式编译模式两种方式下运行

(一)交互模式 

  • 在命令行下直接敲命令或通过命令直接执行程序文件

1、命令行方式

  •  直接在scala>提示符后敲代码执行

  • scala>提示符之后输入:quit (或者按快捷键Ctrl + D),退出scala交互模式 

 

 

 2、文件方式

  • 将代码写在xxx.scala文件中,通过scala xxx.scala执行文件中的代码
  • 创建/scala_work目录,进入该目录,执行命令:vim sum.scala

 

 

  • 执行命令:scala sum.scala 

 

 (二)编译模式

  •  将代码写在.scala文件中,通过编译命令将.scala编译为.class,然后去解释执行。在.scala文件中编写好代码,创建对象,包含入口函数。通过scalac 或 fsc 命令进行编译,产生对应的.class文件。再通过scala命令来解释执行对象。scalac 和 fsc 都可以进行编译工作,区别是fsc会启动后台服务常驻系统后台,这样后续再进行编译的时候,速度就可以很快。

1、创建源程序 

 在\scala_work目录里创建文件HelloWorld.scala

 

2、编译成字节码 

  • 利用scalacHelloWorld.scala编译成字节码文件HelloWorld.class 

 

3、解释执行对象 

执行命令:scala HelloWorld,运行程序,查看结果 

 

六、课后总结

1.在自己的笔记本上安装Windows版的Scala 

2.在你私有云虚拟机上安装Linux版的Scala

3.练习命令行模式与编译模式运行Scala

2023Spark大数据处理讲课笔记
howard2005的专栏
04-16 1230
scala、spark、spark rdd、spark sql、spark streaming
Kafka KSQL原理与代码实例讲解
AI天才研究院
09-30 898
Kafka KSQL原理与代码实例讲解 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 1. 背景介绍 1.1 问题的由来 随着大数据时代的到来,企业对实时数
Scala开发环境搭建
xiexiangyan的博客
08-20 8141
Scala开发环境搭建 Java版本:1.8.154+Scala版本是:2.11.8 sbt版本是:1.2.1 play的版本:2.2.6 1、安装Java 这个链接是Oracle官网下载JDK的地址http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html。 下载对应版本的JDK...
idea 2023版本创建maven管理的Scala项目教程
qq_43224174的博客
04-24 6609
idea 2023版本创建maven管理的Scala项目教程
Scala安装、环境变量配置及在idea中配置Scala
weixin_43618754的博客
02-21 1104
关于Scala的下载、安装及相关配置
Scala GUI使用笔记,scala swing库的使用
Code_LT的博客
02-18 1574
scala swing简单教程1:https://www.scala-lang.org/old/sites/default/files/sids/imaier/Mon,%202009-11-02,%2008:55/scala-swing-design.pdf 或教程2“Progrmming in Scala” Chapter 34 GUI Programming 详细教程3:https://d...
解决2023版IDEA创建Scala项目首次运行Scala代码报错HelloWorld is already defined as object HelloWorld object HelloWorl
qq_43224174的博客
04-26 1659
解决2023版IDEA创建Scala项目首次运行Scala代码报错HelloWorld is already defined as object HelloWorld object HelloWorl xxxx is already defined as object xxxx object HelloWorld {
Java基础篇 | Java开发环境搭建
分享思想,留下痕迹。
05-30 2346
Java以前自学过一写,现在工作了,时间太久有一些知识都遗忘了,今天开始就更新Java了,想着把之前的Java基础知识捡起来;从最基础的开始,打好Java基础,便于以后复习。也欢迎大家跟我一起复习。话不多说,先看一张图计算机是一种现代化的电子设备,它能够接受、存储、处理和输出数据。计算机由硬件和软件两部分组成,硬件包括中央处理器(CPU)、内存、硬盘、显示器、键盘、鼠标等部件,软件则包括系统软件和应用软件。
2017-2023是大数据云数据的时代经典学习路线(仅供参考
lvlei19911108的博客
09-24 291
1.Linux基础和分布式集群技术学完此阶段可掌握的核心能力:熟练使用Linux,熟练安装Linux上的软件,了解熟悉负载均衡、高可靠等集群相关概念,搭建互联网高并发、高可靠的服务架构;学完此阶段可解决的现实问题:搭建负载均衡、高可靠的服务器集群,可以增大网站的并发访问量,保证服务不间断地对外服务;学完此阶段可拥有的市场价值:具备初级程序员必要具备的Linux服务器运维能力。1.内容介绍:在大数据...
IDEA开发Spark应用实战(Scala)
2401_84408437的博客
04-18 1267
这份面试题几乎包含了他在一内遇到的所有面试题以及答案,甚至包括面试中的细节对话以及语录,可谓是细节到极致,甚至简历优化和怎么投简历更容易得到面试机会也包括在内!也包括教你怎么去获得一些大厂,比如阿里,腾讯的内推名额!某位名人说过成功是靠99%的汗水和1%的机遇得到的,而你想获得那1%的机遇你首先就得付出99%的汗水!你只有朝着你的目标一步一步坚持不懈的走下去你才能有机会获得成功!成功只会留给那些有准备的人!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》
ADAS技术市场总结展望(2021-2022
吴建明wujianming_110117
01-18 7992
ADAS技术市场总结展望(2021-2022) NV AGX 和TI的TDA4平台哪个好? 作为自动驾驶的平台,NV好像用的人比较多,但TI的TDA4看起来也是不错的东西,有高手能够做个对比分析么? 从CPU架构及主频来看,TDA4 介于 NV AGX的 Xavier 及 Orin 之间;但算力肯定比不上精于GPU的英伟达,毕竟 TI 是比较擅长的是 DSP 领域。 再从社区及厂商采用度来看,NV AGX明显要占优势。国内的三大新能源企业都用的是NV AGX:小鹏P7(Xavier),理想 One (
Scala深入浅出进阶经典 第72讲:Scala界面事件处理编程实战详解
逆水行舟的博客
09-27 442
Scala深入浅出进阶经典 第72讲:Scala界面事件处理编程实战详解
学习大数据的第一步-搭建Scala开发环境,以及使用Intellij IDEA开发Scala程序
热门推荐
不学习傻了吧
04-01 7万+
# 1、为什么要学习Scala语言? 1. 结合Spark处理大数据 这是Scala的一个主要应用,而且Spark也是那Scala写的。 2. Java的脚本语言版 可以直接写Scala的脚本,也可以在.sh直接使用Scala。 3. 代替Java Scala的编程风格更简洁,当然也很可能降低可读性,不过Java语言还是有其优势。
Scala中reduce函数
2401_87129116的博客
10-16 817
reduce()方法是一个高阶函数,它接受集合中的所有元素(数组,列表等),并使用二进制运算将它们组合以产生单个值。必须确保运算是可交换的和关联的。,返回一个单一的结果。它通过指定的 二元操作 (即取 两个元素 进行操作)对集合中的所有元素进行递归处理,并最终将其 合并为一个值。匿名函数作为参数传递给reduce函数。reduce作用:是一种集合操作,用于对集合中的元素进行。
Scala的reduceLeft
2401_87187379的博客
10-17 387
fold函数表达式:flod(初始值)(二元函数=>返回值)fold函数与reduce函数和reduce函数不同之处是自带一个初始值。reduceleft是指从左往右的顺序取值进行计算。reduceright是指从右往左顺序取值运算。
Scala内部类和Java内部类的不同
owolai的博客
10-18 483
Scala内部类和Java内部类在概念上是相似的,都允许一个类定义在另一个类的内部。不过,由于ScalaJava在语言设计哲学和语法上的差异,它们在实现细节和使用方式上存在一些不同之处。
Scala 内部类
最新发布
2301_80936715的博客
10-21 491
它是指定义在类或对象内部的类。
Scala大数据开发
谷哥的小弟
10-15 665
Scala combines object-oriented and functional programming in one concise, high-level language. Scala's static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes let you build high-performance systems with easy access to huge
Scala的内部类
owolai的博客
10-18 364
Scala中的内部类(Inner Class)是指定义在另一个类的内部的类。内部类可以访问外部类的成员(包括私有成员),并且可以与外部类的实例紧密地绑定在一起。内部类在Scala中非常有用,尤其是在需要封装特定功能或状态时。在Scala中定义内部类非常简单,只需要在外部类中定义一个类即可:内部类可以访问外部类的成员,包括私有成员:要创建内部类的实例,你需要先有一个外部类的实例:Scala中没有静态成员的概念,但可以通过关键字定义一个单例对象,这在某种程度上可以看作是静态内部类:Scala支持匿名类的概念,这
写文章

热门文章

  • Hadoop集群测试 2611
  • HDFS的shell操作 1461
  • 4.4 使用Java API操作HDFS 1019
  • Hadoop集群配置 858
  • 【进行用户与用户组操作】 803

分类专栏

  • Scala 5篇

最新评论

  • 大数据处理学习笔记1.6 Scala数据结构

    CSDN-Ada助手: 恭喜你这篇博客进入【CSDN月度精选】榜单,全部的排名请看 https://bbs.csdn.net/topics/614384948。

  • Hadoop部署与在OpenStack私有云上安装配置虚拟机

    CSDN-Ada助手: 有什么具体的例子说明运用云原生能够提高运营效率、更频繁地交付功能、自动化开发过程(CI/CD)?

  • 【进行用户与用户组操作】

    CSDN-Ada助手: 你的文章质量不错,值得学习!但还有一点小瑕疵,具体如下:(1)增加条理清晰的目录;(2)使用更多的站内链接;(3)使用标准目录。

大家在看

  • SpringBoot实现的智能个人理财平台
  • Openlayers高级交互(5/20):右键点击,获取该点下多个图层的feature信息 88
  • yml配置中使用liteflow,在切换数据库由mysql切换dm其中的坑
  • 论文学习(一):Evaluating the Adversarial Robustness of Retrieval-Based In-Context Learning for LLMs
  • Scala的内部类 308

最新文章

  • Spark大数据处理讲课笔记4.1 Spark SQL概述、数据帧与数据集
  • Spark大数据处理讲课笔记4.2 Spark SQL数据源 - 基本操作
  • Spark大数据处理讲课笔记3.5 RDD持久化机制
2023年19篇
2022年10篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家辽宁商场主题创意商业美陈理念玻璃钢雕塑直径广州商场美陈工厂博乐气球商场美陈哪里专业云南欧式玻璃钢雕塑大型玻璃钢雕塑生成厂家深圳超市商场美陈哪里有玻璃钢植物雕塑厂家上海景观玻璃钢雕塑加工淮安玻璃钢人物雕塑定制价格武威动物玻璃钢雕塑订做起跑玻璃钢雕塑河北开业商场美陈订购西安玻璃钢雕塑价位玻璃钢雕塑人物设计公司鄂州玻璃钢动物雕塑哪家好上海玻璃钢天鹅雕塑达州玻璃钢雕塑海南玻璃钢仿真水果雕塑价格万达商场美陈盖章合同金华玻璃钢雕塑报价北京城市景观雕塑玻璃钢平凉广场玻璃钢雕塑定制做玻璃钢雕塑哪家值得信赖玻璃钢雕塑上色视频天津园林玻璃钢雕塑小区玻璃钢雕塑生产厂家周口哪里有玻璃钢雕塑赣州景观玻璃钢雕塑订做价格广东主题商场美陈市场香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化