java大数据之scala

一、Scala简介

1.1 Scala是什么

Scala是一个可扩展的语言,是一种混合函数式编程语言。它集成了面向对象和函数式编程语言的特点,并且Scala被编译在java虚拟机上运行

1.2 Scala官网

https://www.scala-lang.org/

1.3 Scala特性

(1)面向对象:Scala的每一个函数都是一个对象,它是纯面向对象的语言

(2)函数式编程:Scala的每一个函数为一个值,因为每个值是一个对象,因此最终每一个功能都是一个对象意义上的函数

(3)静态类型:不必在大多数情况下指定类型,当然也不需要重复

(4)JVM上运行:Scala被编译成虚拟机上执行的字节码

(5)可以执行java代码:可以在java sdk的scala中所有类,也是自定义java类或者java开源项目

(6)web框架:Lift框架、play框架、bowler框架

1.4 Scala优势

个人觉得比较运行速度其实没啥意义,因为两种语言都是生成 JVM 的字节码, 依赖 JVM 这个虚拟平台来跑代码. 除非 Scalac (scala的编译器) 有重大 bug, 生成的字节码执行让人无法接受, 否则基本上不会相差太多. 再说, scala 都到大版本2了, 这种概率实在是不大.


相比较与Java,在下觉得 Scala 最主要的有以下两点优势:

(1)FP 泛型支持

如果用多了Spring中大量的 template 接口, 你就会觉得 FP 其实还是蛮好用的.

而这仅仅是FP好处的冰山一角.

函数其实就是一个?input -> output?(scala也是这么表示一个函数的), 没有任何副作用, 与状态无关, 由于这种特性,

所以函数式的编程范式在分布式领域有很多好处

对于函数式编程,我的知识实在是皮毛, 但可以这么说, FP 相对与 OO 有哪些优势, Scala 对于 Java 差不多就有哪些优势.

正因为FP有如此多的优势, 所以 Java8 才引入了 FP. 从某种程度上来说, Java 认可了 Scala 的做法.

(2)类型系统支持

如果说Java是一种类型安全的语言, 那么毫无疑问, Scala 的类型更加安全, 从某种程度上说, Scala 的类型是图灵完备的, 而 Java 不是。

1.6 Scala与java差别

相对于Java而言,Scala的代码更为精简(减低犯错),而且功能更为广泛(Scala其实是Scalable Language 的简称,意为可扩展的语言),许多Scala的特性和语法都是针对Java的不足和弱点来设计的。


Scala的特点是有很多函数程式语言的特性(例如ML,Miranda, Scheme,Haskell),譬如惰性求值,list comprehension, type inference, anonymous function, pattern matching 等等,同时也包含 Object-Oriented 的特性(OO 能与 FP 混合使用是 Scala 的亮点)。此外,许多相似于高级编程语言的语法也渗入其中(例如 Python),不仅提高了 Scala 代码的可读性,维护、修改起来也较为省时省力。


Scala与 Java 语法上的明显差异有:

(1)不需要分号结尾

(2)类型定义开头需大写(与 Haskell 相同)

(3)函数定义需 def 开头(与 Python、Ruby 相同)

(4)return 可以省略

在此值得提醒的是,统计显示,Scala的代码运行速率仅为 Java 的 8 成。


二、Scala基础语法

2.1基础语法

2.2修饰符

2.3关键字

2.4 Scala注释

2.5 Scala空格和换行符

2.6 Scala包


三、Scala数据类型


四、Scala基础知识

4.1 Scala变量

4.2 Scala访问修饰符

4.3 Scala运算符

4.4 Scala循环

4.5 Scala字符串

4.6 Scala数组

4.7 Scala集合

4.8 Scala类和对象

4.9 Scala特征

4.10 Scala模糊匹配

4.11 Scala正则

4.12 Scala异常处理

4.13 Scala提取器

4.14 Scala文件IO流


五、Scala函数编程




参考文章

http://aperise.iteye.com/blog/2303419

你可能感兴趣的:(java大数据之scala)