Scala简介与安装

article/2025/8/16 3:39:36

目录

一、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、解释执行对象


一、Scala简介

(一)Scala概述

Scala编程语言抓住了很多开发者的眼球。如果你粗略浏览Scala的网站,你会觉得Scala是一种纯粹的面向对象编程语言,而又无缝地结合了命令式编程和函数式编程风格。Christopher Diggins认为:

不太久之前编程语言还可以毫无疑意地归类成“命令式”或者“函数式”或者“面向对象”。Scala代表了一个新的语言品种,它抹平了这些人为划分的界限。

根据David Rupp在博客中的说法,Scala可能是下一代Java。这么高的评价让人不禁想看看它到底是什么东西。

Scala有几项关键特性表明了它的面向对象的本质。例如,Scala中的每个值都是一个对象,包括基本数据类型(即布尔值、数字等)在内,连函数也是对象。另外,类可以被子类化,而且Scala还提供了基于mixin的组合(mixin-based composition)。

与只支持单继承的语言相比,Scala具有更广泛意义上的类重用。Scala允许定义新类的时候重用“一个类中新增的成员定义(即相较于其父类的差异之处)”。Scala称之为mixin类组合。

Scala还包含了若干函数式语言的关键概念,包括高阶函数(Higher-Order Function)、柯里化(Currying)、嵌套函数(Nested Function)、序列解读(Sequence Comprehensions)等等。

Scala是静态类型的,这就允许它提供泛型类、内部类、甚至多态方法(Polymorphic Method)。另外值得一提的是,Scala被特意设计成能够与Java和.NET互操作。Scala当前版本还不能在.NET上运行(虽然上一版可以-_-b),但按照计划将来可以在.NET上运行。

Scala可以与Java互操作。它用scalac这个编译器把源文件编译成Java的class文件(即在JVM上运行的字节码)。你可以从Scala中调用所有的Java类库,也同样可以从Java应用程序中调用Scala的代码。用David Rupp的话来说,

它也可以访问现存的数之不尽的Java类库,这让(潜在地)迁移到Scala更加容易。

这让Scala得以使用为Java1.4、5.0或者6.0编写的巨量的Java类库和框架,Scala会经常性地针对这几个版本的Java进行测试。Scala可能也可以在更早版本的Java上运行,但没有经过正式的测试。Scala以BSD许可发布,并且数年前就已经被认为相当稳定了。

(二)函数式编程

函数式编程:将所有复杂的问题的解决,拆分为若干函数的处理。每一个函数可以去实现一部分功能,利用很多次函数的处理,最终解决问题。

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

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

(三)Scala特性

“scala语言的基本特性:简洁、兼容、可扩展和静态类型 Scala是Scalable Language的简称,是一种函数式面向对象语言。其中所有的基本数据类型都是面向对象的。Scala的函数式编程思路可以让代码编写更加简洁,并且Scala的静态类型可以在编译时检查代码的安全性和一致性,有助于避免复杂应用程序中的错误。 scala是面向对象的,函数式编程语言,具有较强的交互性”

1、一切都是对象

Scala里一切都是对象,这大概和Python很像,因为即便是数字1都有一系列的方法,所以我们可以调用1.toDoubleInt类型的1转换为Double类型的1

2、一切都是函数

表现为可以重载操作符,跟Python很像,在一定程度上ScalaJavaPython生的孩子,只不过遗传基因比较大的卵子是Java提供的,而比较小的那颗精子则是Python提供的。

3、一切都是表达式

Scala里,一切都是表达式,即使像if(){}else{}这样的语句块也是有返回值的。

(四)在线运行Scala

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

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

大家可以对照一下JavaHelloWorld

二、选择Scala版本

我们在ied虚拟机上安装的是Spark2.4.4,为了后续操作不出现任何匹配方面的问题,建议采用跟Spark版本匹配的Scala。

​​​​​​​

程序,两者完全一一对应,相似度极高

三、Windows上安装Scala

(一)到Scala官网下载Scala

Scala2.11.12下载网址:

 

​​​​​​​单击iscala-2.11.12.ms】超链接,将scala安装程序下载到本地

​​​​​​​​​​​​​​

(二)安装Scala

​​​​​​​

 

 

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

(三)配置Scala环境变量

设置Windows系统的环境变量

​​​​​​​​​​​​​​

 

通常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定义的变量,其实都是常量,不能再给它赋值

​​​​​​​​​​​​​​

 定义一个Scala变量x,初值为666,重新赋值为999

​​​​​​​​​​​​​​

四、Linux上安装Scala

(一)到Scala官网下载Scala

Scala2.11.12下载网址:

 

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

(二)安装Scala

1、登录ied虚拟机

在win7虚拟机上利用FinalShell登录ied虚拟机

​​​​​​​​​​​​​​

 

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

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

​​​​​​​​​​​​​​

 

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

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

​​​​​​​

(三)配置Scala环境变量

执行命令:vim /etc/profile

​​​​​​​​​​​​​​

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

 

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

​​​​​​​​​​​​​​

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

1、查看Scala版本

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

​​​​​​​​​​​​​​

 

2、启动Scala,执行语句

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

​​​​​​​​​​​​​​

 

演示语句块的返回值

​​​​​​​​​​​​​​

 演示if结构的返回值

​​​​​​​​​​​​​​

五、​Scala的使用

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

(一)交互模式

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

1、命令行方式

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

​​​​​​​​​​​​​​

 

scala>提示符之后输入:quit,退出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,运行程序,查看结果 

 


http://chatgpt.dhexx.cn/article/eYYEZNfs.shtml

相关文章

Scala安装步骤详解

Scala安装步骤详解 1.在网页上运行Scala 通过浏览器查找Scastie并进入,即可进入Scala在线运行环境。 进入Scastie界面后,在上窗格中输入“println(“hello world”)”。 单击“Run”按钮,输出信息将显示在下窗格中,如下图。 …

Scala安装教程(最详细教程)

Scala安装教程 我们分别在Windows和ubuntu上安装Scala,但是在安装Scala之前有个前提是都要提前安装好JDK1.8以上的。 如果没有安装请看Windows安装JDK和ubuntu安装JDK。 一、Windows安装Scala (一)、先下载Scala (二&#xff0…

使用struts2框架来实现前台与后台的交互

由于这几天到处出差,比较忙,博客的更新速度比较慢。今天的这个是小实例的功能和上一篇博文中的功能是一致的,只是将原来由servlet实现的部分功能用前一段时间比较流行的struts2框架来实现,而现在比较流行的是Spring MVC&#xff0…

Struts2入门

本文章为大家介绍以下用IDEA开发工具创建Maven项目使用Struts2框架,对方法的调用和参数赋值,即前后端的数据交互有所介绍。 目录 Struts2框架 2、使用Sturts2 3、子控制器类方法的调用 4、参数赋值 5、与J2EE容器交互 非注入 注入(实现接口为注入方式) 总结…

Struts2框架实现文件上传

Struts2框架实现文件上传 开发环境系统:Windows10 版本1709JDK:1.8.0_161 32位IDE: Spring Tool Suite 3.7.3 32位Struts2版本:2.3.24服务器版本:apache-tomcat-7.0.52 单文件的上传 环境搭建 导入必要的jar包 必须有commons-fileupload-1.3.1.jar包. 在开发Struts2框架必…

使用Maven搭建Struts2框架(小白)

本文主要是自己在尝试使用Maven搭建Struts2框架,可能个别步骤不太规范,偏小白向,如有错误或不足,还望各位大佬提点。 一、创建Maven项目 1、选择Maven Project 2、选择maven-archetype-webapp 3、填写Group Id、Artifact Id [备注] 创建项目后,可能会出现index.jsp报错提…

Struts2框架搭建

使用Struts2版本为:struts-2.3.16.3 下载地址:http://struts.apache.org/ 一、向web项目中添加struts2依赖库 commons-fileupload-1.3.1.jar commons-io-2.2.jar commons-lang3-3.1.jar commons-logging-1.1.3.jar freemarker-2.3.19.jar javassist-3.11.0.G…

【Struts2】一_idea快速搭建struts2框架

文章目录 什么是SSH框架?Struts2框架1、struts2的环境搭建1.1 创建web项目(maven),导入struts2核心jar包1.2 配置web.xml(过滤器),是struts2的入口,先进入1.3 创建核心配置文件strut…

Idea 2022 搭建Struts2 框架手把手教程!新鲜出炉!!

目录 介绍 Struts2的发展史 Struts2官网 第一个Struts2程序(Idea) Struts2 介绍 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。S…

Struts2框架的基本使用

前面已经介绍过了MVC思想,Struts2是一个优秀的MVC框架,大大降低了各个层之间的耦合度,具有很好的扩展性。从本篇开始我们学习Struts2的基本用法,本篇主要包括以下内容: Struts2的下载安装理解整个框架的运行流程自定义…

手把手教你快速搭建Struts2框架【详细教程,建议收藏】

大家好呀,我是灰小猿,一个超会写BUG的程序猿! 今天在这里记录一下在eclipse环境下快速搭建Struts2框架的详细过程。希望对你能有帮助 Struts框架简介 Struts2作为一个Web框架,是以Webwork的设计思想为核心,它吸收…

Struts2框架概述及运行流程

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互 Struts2struts1webwork 问题:struts2是一个mvc框架,它的mvc是什么? javaweb…

Struts2框架原理

Struts2官网 https://struts.apache.org/ Struts2是一个开源的轻量级的,应用于web层(View)的框架。 Struts2框架的MVC分别对应: M:JavaBean ModelDriven V:JSP OGNL C:Action Struts2框…

【Struts2】〖登录功能〗Struts2框架实现登录功能

〖登录功能〗Struts2框架实现登录功能 访问登录页面&#xff0c;如果输入的用户名为江河&#xff0c;并且密码为8023&#xff0c;则跳转至登录成功页面&#xff0c;并且将用户名保存在session中&#xff0c;否则则跳转至登录失败页面。 项目结构 Jsp页面 login.jsp <% pag…

第2篇:区分Spring与Struts2框架的几种新方法

Part1前言 在近几年的HW比赛、红队项目中&#xff0c;攻击队在外围打点时&#xff0c;越来越依赖于对Java站点的漏洞挖掘。Java站点的主流框架大致就是两个&#xff1a;Struts2系列&#xff08;包括Webwork等&#xff09;及Spring系列&#xff08;包括Spring MVC、SpringBoot等…

基于Struts2框架的名片管理系统

目录 1、系统设计 2、数据库设计 3、系统管理 4、用户管理 5、名片管理 本篇博文将分享一款基于Struts2框架的名片管理系统&#xff0c;JSP引擎为Tomcat9.0&#xff0c;数据库采用的是MySQL5.5&#xff0c;集成开发环境为Eclipse IDE for Java EE Developers。 名片管理系…

IntelliJ IDEA2021.2搭建struts2框架

在网上看了很多IDEA搭建struts2的教程&#xff0c;搭建后总是无法启动服务器&#xff0c;下面介绍2021版本如何正确搭建struts2框架。 一、首先去struts2官网下载所需包 官网传送门 下载后进行解压 all是完整包&#xff0c;体积较大&#xff1b;min是官方提供的对于初学者的基…

【Struts2】Struts2框架创建web项目的6个步骤

Struts2框架创建web项目的6个步骤 1.创建WEB项目 2.导入Struts2核心jar包 3.在web.xml文件中配置前端控制器filter ※如果Struts2框架是2.1.3之后的版本&#xff0c;版本核心控制器为org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。 ※如果Stru…

struts2框架学习

STRUTS2笔记 实现原理struts2项目搭建action概述在action中访问web资源Servlet解耦的方式是怎样的呢?通过xxxAware接口获取web资源 实现原理 先放一张很俗的框架图&#xff1a; 是不是看着很复杂?其实简单的讲这个古老的框架将我们平时使用的springMVC中的controller使用过…

Struts2框架 下载和配置

官网下载 进入后&#xff0c;下载all版本的&#xff1a; 下载解压后&#xff0c;出现以下界面&#xff0c;由于struts的jar包并不全部需要&#xff0c;故需要进入示例程序中的apps目录导入jar包&#xff1a; 解压其中的struts2-black.war包&#xff1a; 进入WEB-INF目录中&…