Scala简介和安装
本篇文章为大家介绍以下Scala和Scala的安装以及IDE(eclipse)的使用,虽然这个基本环境没有什么技术含量,但是基本环境做不好,往后探讨再高深的东西,都是白扯,这里的所有Scala使用都是在window环境下的。
一、介绍
1、官方说明
官方网址:http://www.scala-lang.org
官网对scala的介绍:
Scala既是面向对象的语言,也是面向函数的语言。scala可以为你在做大量代码重用和扩展是提供优雅的层次结构,并可以通过高阶函数来实现这样的目标。(高阶函数是函数式编程里的特性之一,允许函数作为参数传递,也允许函数作为返回值来返回)。
2、作者介绍
Scala创始人Martin Odersky马丁·奥德斯基。
Martin是EPFL(瑞士领先的技术大学,洛桑联邦理工学院)编程研究组的教授。他在整个职业生涯中一直不断追求着一个目标:让写程序这样一个基础工作变得高效、简单、且令人愉悦。
他可能比世界上任何一个人写过更多的Java和Scala代码。他编写了javac,这是目前大部分Java程序员所使用的编译器。他也编写了Scala编译器scalac,可谓是Scala社区飞速发展的基石。他著有《Programming in Scala》一书,是最畅销的Scala书籍。他曾经就职于IBM研究院、耶鲁大学、卡尔斯鲁厄大学以及南澳大利亚大学。在此之前,他在瑞士苏黎世联邦理工学院追随Pascal创始人Niklaus Wirth学习,并于1989年获得博士学位。
对于scala这门语言,有人把它当做Java的延伸版,有人把它当做JVM上的C++,有人觉得这是面向对象语言和面向函数语言的简单混合,有人觉得这就是Haskell,而且也还不如Haskell强。(纯的面向函数式编程语言)
下图Martin Odersky马丁·奥德斯基(Scala的发明者,EPFL教授)在2016年夏天的Scala Day旧金山大会上发出了这张著名的玩笑照片:
这个图片上的翻译是:“Scala唯一的作用是将人引向Haskell”。马丁·奥德斯基以此作为一个笑话,说他该把Scala改一下名字,叫做Hascalator,还请人设计了一个Logo。
3、Scala语言的特点
Scala并不适于编程的初级课程。相反,它是为专业程序员定制的强力语言。
1)它是一门现代编程语言,作者是Martin Odersky(javac之父),受到Java、Ruby、Smalltalk、ML、Haskell、Erlang等语言的影响。
2)它即是一门面向对象(OOP)语言,每个变量都是一个对象,每个“操作符”都是方法。它同时也是一门函数式编程(FP)语言,可以将函数作为参数传递。你可以用OOP、FP,或者两者结合的方式编写代码。
3)Scala代码通过scalac编译成.class文件,然后在JVM上运行,可以无缝使用已有的丰富的Java类库。即Scala的代码会编译成字节码,运行在Java虚拟机(JVM)上。
4)接触语言的第一天你就能编出有趣的程序,但是这门语言很深奥,随着学习的深入,你会发现更新、更好的编写代码的方式。Scala会改变你对编程的看法。针对同一任务,可以有很多种不同的实现方式,并且可读性以及性能都有不一样的体现。
4、scala编程示例
Array(1,2,3,4)
如何遍历数组中的元素,你应该这么做:
for(i<-Array(1,2,3,4))println(i)
Array(1,2,3,4).foreach{print(_)}
如果尝试将这些元素转换为新的集合,应该使用for/yield表达式或者map方法:
for(i<-Array(1,2,3))yield i*2
//> res4: Array[Int] = Array(2, 4, 6)
Array(1,2,3).map(_*2)
//> res5: Array[Int] = Array(2, 4, 6)
比如过滤出一个集合中元素小于4的集合,你可以使用filter方法:
val nums=List(1,2,3,4).filter(_<4)
//> nums : List[Int] = List(1, 2, 3)
5、作者箴言
Scala相较于Java而言,则是相信程序员的优化能力。马丁·奥德斯基说:“很多程序员会告诉我,他们一般会重构他们的Scala代码两三次,甚至三四次。”这听起来似乎非常的没有效率,但Scala就是这样的语言,每一次重构,代码的性能或者是可读性都会有极高的提升。
Scala不把程序员当傻子。马丁·奥德斯基对于scalca的定位很清楚:“Scala现在是为聪明人创造的,以后也是为聪明人服务的。”
Scala提供一整套工具,让程序员自由选择,无论是mutable数据结构,immutable数据结构,并行(parallel)数据结构。然后在这些选择中,Scala再针对他们进行算法层面的特殊优化。Scala相信程序员的聪明才智,让程序员自行选择合适的结构,以针对变化万千的任务需求,这点是Scala做得极好的地方。
scala不是一门纯的函数式编程语言,所以有别纯函数式语言的区别之一是:scala提供变量和常量,而纯函数式编程语言是没有变量这概念的。
之前就有人提到过,Scala新手和老手写出来的代码完全会呈现两种不同的风格,甚至新人根本不能读懂有经验的Scala程序员所写的代码,有人于是戏称:“太好了,这样的话我们部门的实习生就不能乱碰我写的代码啦!”但其实不仅风格不同,执行效率差距也一定是巨大的。
6、Scala语言的应用
kafka:分布式消息队列,内部代码经常用来处理并发的问题,用scala可以大大简化其代码。
spark:处理多线程场景方便,另外spark主要用作内存计算,经常要用来实现复杂的算法。利用scala这种函数式编程语言可以大大简化代码。
注:本文仅列举一部分。
二、运行配置及使用
1、Scala Windows
1.安装步骤
安装Scala的前提必须已经安装好了JDK,JDK的安装不做赘述。这里需要1.7版本及以上的。
1>双击运行安装
到官网下载如下图的安装包即可。
双击运行,基本就是傻瓜式的操作,这里就不多做赘述。
2>添加环境变量
如果安装之后,看到系统环境变量的Path中已经有了scala的环境变量,那么就不需要配置。我在安装的时候,是这种情况。
如果安装完成之后,查看环境变量Path中没有Scala的环境变量,那么就需要手动添加scala安装目录的bin目录路径到系统环境变量中。这个配置和JDK的配置是差不多的。如下图所示:
2.使用
Scala基本是基于Java的,所有的使用的方法基本和Java相同,差别就在与一些命令不同,如下:
1>通过cmd
通过cmd命令窗口,输入scala,查看Scala的版本信息,和Java的java -version一样的功能。如下图:
①交互模式
可以通过命令行直接输入scala命令,如下为打印字符到控制台:
②编译模式
也可以先编写***.scala文件,通过执行文件来执行命令,比如:
先在e盘下创建一个hello.scala文件,文件中写入如下内容:
print("hello scala");
然后通过cmd执行:
也可以先生成.scala文件,再编译生成.class文件,再执行。
在e盘下,创建Person.scala文件,内容如下:
object Person{
def main(args: Array[String]): Unit = {
println("hello scala hello world~")
}
}
在e盘路径下进入cmd命令窗口,然后执行:scalac Person.scala
执行完后会发现在e盘下多出了对应的class文件。
调用执行:scala Person
看到这里你就会发现,Scala和Java的共通之处了。
2、使用IDE开发
在网上看到很多人,为了在eclipse中安装Scala插件而发愁,这里我直接使用的就是带有Scala的eclipse,解压之后配置几个参数就可以使用。大家也可以下载这个版本的eclipse进行开发。
1.安装
解压即可使用。
如下图:打开eclipse的window选项的preferences,一般需要调的地方就是红框框的这几个选项。
workspace:主要就是字符编码,调成自己需要的,我这里选用的是UTF-8,现在开发,一般也都是用的这个字符编码。
Java-Compiler:检查jdk版本是否和自己安装的jdk版本一致。
Java-installed JREs:检查jre版本是否和自己安装的一致,如果不一致,进行修改。
Scala-Conmpiler:检查JVM的版本,想调成和自己jdk一样版本的也可以,使用默认1.6的也可以。
如果大家有需要这个eclipse,可以在下方留言,或者私信我,我会将这个版本的jdk放到网络中,将链接贴到这里供大家下载使用。
2.使用
1>创建项目
创建scala project,如下图:
2>创建类
工程创建完毕后,创建scala object,如下图:
3>编写代码
编写代码,如下图:
4>运行
运行得到结果。
下一篇:Scala语法介绍