AmosCloud

Library

Have a Question?

If you have any question you can ask below or enter what you are looking for!

Scala_01【开发环境搭建】

主要内容

  • Scala什么是
  • 为什么选择 Scala
  • 和 Java 的关系
  • 安装 ScalaSDK
  • 配置 IDEA 环境
  • 使用 Scala REPL
  • 使用 Scala Doc
  • Hello World

学习目标

  • 掌握scala环境安装
  • 掌握IDEA配置
  • 掌握hello world编写和运行

Scala 开发环境搭建

1.1 Scala什么是

Scala 产生于瑞士的洛桑联邦理工学院(EPFL),是“可扩展语言”(Scalable Language)的缩写,Scala是一门现代的多范式语言,志在以可读性差简洁、恶心优雅及类型安全的方式来表达常用的编程模型。它平滑地集成了面向对象函数式语言的特性。

  1. Scala是面向对象的

    • 鉴于一切值都是对象,可以说Scala是一门纯面向对象的语言。
    • 对象的类型和行为是由类和特质来描述的。类可以由子类化和一种灵活的、基于混入(mixin)的组合机制来扩展。
  2. Scala是函数式的

    • 鉴于一切函数都是值,又可以说Scala是一门函数式语言。
    • Scala为定义匿名函数提供了轻量级的语法,支持高阶函数,允许函数嵌套及柯里化。
    • Scala的样例类和内置支持的模式匹配代数模型在许多函数式编程语言中都被使用。
    • 对于那些并非类的成员函数,单例对象提供了便捷的方式去组织它们。
  3. Scala是静态类型的

    • 虽然Scala在声明变量时不需要书写变量类型,但与Java相同的是,变量的类型是静态地(不可改变),编译器提供了根据赋值对变量类型的自动推断。
  4. Scala是可扩展的

    • Scala支持通过隐式类(implicit class)给已有的类型添加扩展方法。
  5. Scala的互操作性

    • Scala设计的目标是与流行的Java运行环境(JRE)进行良好的互操作,特别是与主流的面向对象编程语言——Java的互操作尽可能的平滑。Java的最新特性如lambda表达式、注解及泛型类 在Scala中都有类似的实现。
    • 另外有些Java中并没有的特性,如缺省参数值和带名字的参数等,也是尽可能地向Java靠拢。Scala拥有类似Java的编译模型(独立编译、动态类加载),且允许使用Java生态已有的成千上万的高质量类库。

1.2 Scala和Java的关系

  • Scala与Java和众多JVM语言的共通之处在于,使用专门的编译器(Compiler)将源代码编译成字节码(Bytecode)文件,并最终使用JVM(Java Virtual Machine)执行程序,所以具有和Java相同的优良移植性。

file

1.3 安装Scala

  • 必要条件
    Scala需要使用JVM来运行字节码文件,所以需要先安装JDK

  • 关于版本

    • 为了更好的学习和使用Spark、Flink等高性能的大数据计算引擎,Scala的学习是必要的.
    • Scala的当前流行版本以 2.11.x , 2.12.x
  • 官方网站:

file

file

file

  • 安装过程:

    • 需要注意的是,与所有开发类软件一样,选择无空格无中文的路径。
  • 验证安装:

    • 安装完成后与JAVA_HOME类似的为Scala配置SCALA_HOME,并将%SCALA_HOME%\bin添加到Path
    • 在cmd尝试运行scala,安装正确会进入如下界面

file

1.4 使用Scala的REPL

  • Scala与Java一样是编译型语言,即Scala源代码需要被编译成字节码文件才能被运行在JVM上;
  • Scala为了实现与Python、Shell、JavaScript之类脚本语言类似的解释执行(书写一行运行一行)的功能,专门实现了一个名为REPL的解释器。

1.5 Scala的IDEA程序开发

1.5.1 为IDEA下载Scala插件

file

1.5.2 创建空的maven工程

file

file

1.5.3 创建Scala源代码目录

file

1.5.4 标记为源码目录

file

1.5.5 添加ScalaSDK全局库

file

1.5.6 创建HelloWorld单例对象

file

1.5.7 编写HelloWrold

file

object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("Hello World")
  }
}

1.5.8 查看运行结果

file

1.5.9 查看编译结果

file

file