**

**

Scala 是一门编程语言,你可以理解为Java生了一个儿子,Scala代码各个方面完全碾压Java,不管是从代码的表现力还是代码的精简和写代码的舒服度上,完全是碾压Java的.
Scala学好了之后将来能做很多事情,比如说用来开发后台项目,写大数据的程序,甚至可以把Scala当成脚本来用.
Scala是全能型的选手.

**


Python是把其它代码粘合起来,
Python能做的Scala都能做,Scala运算速度是远远超过Python的.

**


Kafka Spark

**

Java作为面向对象语言写代码是模块儿化的,代码有时候显得有些啰嗦.Scala把函数式编程和面向对象编程给完美的结合到一起了.

**5.为什么学习


1)Spark—新一代内存级大数据计算框架,是大数据的重要内容。
2)Spark就是使用Scala编写的。因此为了更好的学习Spark, 需要掌握Scala这门语言。
3)Spark的兴起,带动Scala语言的发展!

目前来讲会Scala的人才比较少,很多企业在写Spark程序Flink程序 还是用Java来写的,但是代码看起来像一坨屎一样.
Scala一行两行代码解决的事情,在Java里面可能需要写上百行的都有可能.
所有Scala是很优雅的.

**

联邦理工学院的马丁·奥德斯基(Martin Odersky)于2001年开始设计Scala。
马丁·奥德斯基是编译器及编程的狂热爱好者,长时间的编程之后,希望发明一种语言,能够让写程序这样的基础工作变得高效,简单。所以当接触到JAVA语言后,对JAVA这门便携式,运行在网络,且存在垃圾回收的语言产生了极大的兴趣,所以决定将函数式编程语言的特点融合到JAVA中,由此发明了两种语言(Pizza & Scala)。


Pizza和Scala极大地推动了Java编程语言的发展。
l jdk5.0 的泛型,for循环增强,自动类型转换等,都是从Pizza 引入的新特性。
l jdk8.0 的类型推断,Lambda表达式就是从Scala引入的特性。
Jdk5.0和Jdk8.0的编译器就是马丁·奥德斯基写的,因此马丁·奥德斯基一个人的战斗力抵得上一个Java开发团队。

**

一般来说,学Scala的人,都会Java,而Scala是基于Java的,因此我们需要将Scala和Java以及JVM 之间的关系搞清楚,否则学习Scala你会蒙圈。
Java能做的Scala都能做,但是Scala能做的Java不一定能做.

在Scala里面可以直接使用Scala语法调用Java的API. 如果你写Scala的时候发现Scala写的不是很熟悉,你可以直接调用Java类库去写Java代码.

Java和Scala编译完了之后都是.class字节码文件,一样的.Scala程序照样可以运行在Java虚拟机里面.Java运行Java虚拟机只会加载Java类库的那些东西,而Scala运行Java虚拟机不仅仅会加载Java类库,还会加载一些Scala类库.
将来编译运行IDEA都帮我们处理了,我们不用考虑这些,我们主要把经历集中到业务代码上.
image.png

**

Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言,静态类型语言在编写代码的时候可以对代码类型进行检查,而Js是动态类型语言,你不运行的话你不知道类型。在写代码的时候你用的开发工具可以很智能的给你联想出来,如果你写Js的话开发工具IDEA等等联想功能就不会那么给力了.
1)Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。
2)Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对接。
3)Scala单作为一门语言来看,非常的简洁高效,比如说Java语言实体类你要提供get和set方法,很冗余,如果在Scala的话就需要一行即可。
4)Scala在设计时,马丁·奥德斯基是参考了Java的设计思想,可以说Scala是源于Java,同时马丁·奥德斯基也加入了自己的思想,将函数式编程语言的特点融合到JAVA中, 因此,对于学习过Java的同学,只要在学习Scala的过程中,搞清楚Scala和Java相同点和不同点,就可以快速的掌握Scala这门语言。