Scala 与java

Scala简介

  Scala 语言的特性有许多,例如高阶函数和对象、抽象类型绑定,actor 使得函数在 Scala 中能是一个子类成为可能,Scala 中的设计模式使得面向对象和函数编程无缝结合。Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。
  Spark 是一种可扩展的数据分析平台,它整合了内存计算的基元,因此,相对于 Hadoop 的集群存储方法,它在性能方面更具优势。Spark 是在 Scala 语言中实现的,并且利用了该语言,为数据处理提供了独一无二的环境。Scala 编译器可以生成字节码,直接运行在使用JVM上。该语言(它实际上代表了可扩展语言)被定义为可直接集成到语言中的简单扩展。

Scala作为一门静态语言,其主要特性:

  • Scala是面向对象的
      Scala是一个纯面向对象语言,在某种意义上来讲所有数值都是对象。对象的类型和行为是由class和trait来描述的
  • Scala是函数式的
      Scala是一个函数式语言,在某种意义上来讲所有函数都是数值。Scala为定义匿名函数提供了一种轻量级的语法,它支持高阶(higher-order)函数、允许函数嵌套、支持局部套用(currying)。Scala的case类及其内置支持的模式匹配模型代数类型在许多函数式编程语言中都被使用
  • Scala是静态类型的
      Scala配备了一套富有表现力的类型系统,该抽象概念以一种安全的和一致的方式被使用
  • Scala是可扩展的
      Scala的设计承认了实践事实,领域特定应用开发通常需要领域特定语言扩展。Scala提供了一个独特的语言组合机制,这可以更加容易地以类库的形式增加新的语言结构:任何方式可以被用作中缀(infix)或后缀(postfix)操作符闭包按照所期望的类型(目标类型)自动地被构造两者结合使用可方便地定义新语句,无需扩展语法,也无需使用类似宏的元编程工具

Spark选择Scala的原因

  1. 应用开发的效率很大程度上依靠类库。框架开发者要考虑Spark要融入大Hadoop生态系统需要一个JVM语言,能够开发出优雅的API(而Java api 不优雅,代码量大),静态编译,函数式编程更适合于MapReduce以及大数据模型
  2. Scala是一门可扩展的语言,类型系统支持,如果说 Java 是一种类型安全的语言,那么毫无疑问,Scala 的类型更加安全,从某种程度上说, Scala 的类型是图灵完备的,而 Java 不是。正是以上这两点大优势, 造成了 Scala 比 Java 更加安全, 同时又具备灵活性, 想象力
  3. Java 只支持单继承;在 Scala 中,可以进行 mixin
    Java 中, 想要一个 singleton ? 要么在 static block 中做,要么利用 Enum 的单例特性完成;在 Scala 中,只要声明为 object,即为单例
    Java 中,通过double check延迟加载一个单例;在 Scala 中,只要在 object 中将变量修饰为 lazy 即可
    Java 中,想要对集合进行操作需要使用一层一层的 for 循环;在 Scala 中,使用 collection 的一些集合操作,即可类似于SQL进行操作
    Java 中, 在并发中想对Future进行回调无法实现,Future 不是 Listenable (无法支持回调);在 Scala 中,本来就主张异步编程,future 和 promise 的配合很好
    Java 中,要透明扩展一个第三方库的类需要包装,再加一层;在 Scala 中, 有强大的 implicit 机制做到这一点,同时还能保证类型安全
    Scala 的表达力很强,相同功能的代码,用 Java 和 Scala 的行数不可同日而语
发布了138 篇原创文章 · 获赞 45 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/ThreeAspects/article/details/104296588
今日推荐