龙空技术网

淡黄的长裙,蓬松的头发,Scala是个啥?干啥得靠它

大数据之眸 124

前言:

而今咱们对“scala和java一样都有静态方法和静态字段”可能比较注意,小伙伴们都想要知道一些“scala和java一样都有静态方法和静态字段”的相关资讯。那么小编也在网摘上汇集了一些有关“scala和java一样都有静态方法和静态字段””的相关资讯,希望大家能喜欢,姐妹们一起来学习一下吧!

笔者今天开始记录一下Scala语言的基础学习。Scala语言一般很少独立使用,而是作为在大数据领域的开发语言,是Spark的底层语言,也是Spark的首选调用语言。

Scala简介

先安利一波儿Scala:java的运行效率,python的开发效率,ruby的糖,erlang的皮实,haskell的逼格,它不香吗?(香不香不知道,反正不火)。下图中TIOBE显示了截至2020年4月的编程语言流行排行榜,大家普遍认为很香的Python暂列第三。

Scala位列28位,是不是表明这门语言不好呢?说到这又不得不提Spark,现在Spark是大数据领域的杀手级应用框架,互联网领域巨头都全面使用Spark了,这个时候再谈Scala适不适合大数据开发其实意义不大。因为大家比的不只是编程语言,而是构建在这个编程语言之上的类库、社区和生态圈(包括文档和数据、衍生类库、商业技术支持、成熟产品等等)。

Scala 是 Scalable Language 的简写,是一门多范式的编程语言。联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计Scala。Funnel是把函数式编程思想和Petri网相结合的一种编程语言。

Odersky先前的工作是Generic Java和javac(Sun Java编译器)。Java平台的Scala于2003年底/2004年初发布。.NET平台的Scala发布于2004年6月。该语言第二个版本,v2.0,发布于2006年3月。截至2009年9月,最新版本是版本2.7.6 。Scala 2.8预计的特性包括重写的Scala类库(Scala collections library)、方法的命名参数和默认参数、包对象(package object),以及Continuation。

Scala是一门现代的多范式编程语言,平滑地集成了面向对象和函数式语言的特性,旨在以简练、优雅的方式来表达常用编程模式。Scala的设计吸收借鉴了许多种编程语言的思想,只有很少量特点是Scala自己独有的。Scala运行于Java平台(JVM,Java 虚拟机)上,并兼容现有的Java程序,Scala代码可以调用Java方法,访问Java字段,继承Java类和实现Java接口。在面向对象方面,Scala是一门非常纯粹的面向对象编程语言,也就是说,在Scala中,每个值都是对象,每个操作都是方法调用。

Spark的设计目的之一就是使程序编写更快更容易,这也是Spark选择Scala的原因所在。总体而言,Scala具有以下突出的优点:

Scala具备强大的并发性,支持函数式编程,可以更好地支持分布式系统; Scala语法简洁,能提供优雅的API; Scala兼容Java,运行速度快,且能融合到Hadoop生态圈中。

实际上,Scala近年来也吸引了不少开发者的眼球,例如,知名社交网站Twitter已将代码从Ruby转到了Scala,其余部分也打算要迁移;此外,Wattzon已经公开宣称,其整个平台都已经是基于Scala基础设施编写的;瑞银集团把Scala用于一般产品中;Coursera把Scala作为服务器语言使用。

Scala是Spark的主要编程语言,但Spark还支持Java、Python、R作为编程语言,因此,若仅仅是编写Spark程序,并非一定要用Scala。Scala的优势是提供了REPL(Read-Eval-Print Loop,交互式解释器),因此,在Spark Shell中可进行交互式编程(即表达式计算完成就会输出结果,而不必等到整个程序运行完毕,因此可即时查看中间结果,并对程序进行修改),这样可以在很大程度上提升开发效率。现在的计算机都是多核CPU,想充分利用其多核处理,需要写可并行计算的代码。而函数式编程在并行操作性有着天生的优势,函数式编程没有可变变量,就不会有内存共享的问题。

Scala安装

接下来介绍Scala的安装与配置。在安装之前先确保Java已安装。在终端中输入以下命令查看Java版本:

java -version

如果出现以下输出即表明Java已成功安装

java version "1.8.0_241"Java(TM) SE Runtime Environment (build 1.8.0_241-b07)Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)

之后在官网上下载scala:

下载之后将安装包解压至/usr/local并重命名:

sudo tar zxvf ~/Downloads/scala-2.13.1.tgz -C /usr/local/cd /usr/localsudo mv scala-2.13.1 scala

之后配置环境变量:

sudo vim /etc/profile

添加如下内容:

SCALA_HOME=/usr/local/scalaPATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$SCALA_HOME/binexport SCALA_HOME

之后执行source命令即可:

source /etc/profile

最后在本地输入scala即可启动scala:

Hello World

接下来使用一个例子来测试scala的正常使用。使用下面命令到达指定目录,并新建一个test.scala文件:

cd ~vim test.scala

在test.scala文件中输入以下代码:

cd ~vim test.scala

关于上面代码,需要重点说明三点:

(1)在上面代码中,定义了程序的入口main()方法。可以看出,关于main()方法的定义,Java和Scala是不同的,在Java中是用静态方法(public static void main(String[] args)),而Scala中则必须使用对象方法,本例中,也就是HelloWorld对象中的main()方法。

(2)对象的命名HelloWorld可以不用和文件名称一致,这里对象名称是HelloWorld,而文件名称却是test.scala。这点和Java是不同的,按照Java的命名要求,这里的文件名称就必须起名为HelloWorld.scala,但是,在Scala中是没有这个一致性要求的。

(3)Scala是大小写敏感的,所以,不要输入错误,比如把小写开头的object输成大写开头的Object。文件名Test.scala和test.scala也是两个不同的文件。

下面我们用scalac命令编译test.scala代码文件,并用scala命令执行,如下:

scalac test.scala //编译的时候使用的是Scala文件名称scala -classpath . HelloWorld  //执行的时候使用的是HelloWorld对象名称

即可执行完成,输出如下内容:

Hello, World!

参考链接:

标签: #scala和java一样都有静态方法和静态字段