一、都是基于JVM虚拟机运行的nginx
Scala编译以后的文件也是.class,都要转换为字节码,而后运行在JVM虚拟机之上。算法
二、Scala和Java相互调用数据库
在Scala中能够直接调用Java的代码,同时在Java中也能够直接调用Scala的代码编程
三、Java8 VS Scala数据结构
1)Java8(lambda)没有出来以前,Java只是面向对象的一门语言,可是Java8出来之后,Java就是一个面向对象和面向函数的混合语言了。闭包
2)首先咱们要对Scala进行精肯定位,从某种程度上讲,Scala并非一个纯粹的面向函数的编程语言,有人认为Scala是一个带有闭包的静态面向对象语言),更准确地说,Scala是面向函数与面向对象的混合。编程语言
3)Scala设计的初衷是面向函数FP,而Java起家是面向对象OO,如今二者都是OO和FP的混合语言,是否能够这么认为:Scala= FP + OO,而Java =OO + FP?函数
因为面向对象OO和面向函数FP两种范式是相似横坐标和纵坐标的二者不一样坐标方向的思考方式,相似数据库和对象之间的不匹配阻抗关系,二者若是结合得很差恐怕就不会产生1+1>2的效果。oop
面向对象是最接近人类思惟的方式,而面向函数是最接近计算机的思惟方式。若是你想让计算机为人的业务建模服务,那么以OO为主;若是你但愿让计算机能本身经过算法从大数据中自动建模,那么以FP为主。因此,Java可能还会在企业工程类软件中占主要市场,而Scala则会在科学计算大数据分析等领域抢占Java市场,好比Scala的Spark大有替代Java的Hadoop之趋势。大数据
一、当val被声明为lazy时,它的初始化将被推迟,直到咱们首次对它取值。例如,
lazy val lines= scala.io.Source.fromFile("D:/test/scala/wordcount.txt").mkString
二、若是程序从不访问lines ,那么文件也不会被打开。但故意拼错文件名。在初始化语句被执行的时候并不会报错。不过,一旦你访问words,就将会获得一个错误提示:文件未找到。
三、懒值对于开销较大的初始化语句而言十分有用。它们还能够应对其余初始化问题,好比循环依赖。更重要的是,它们是开发懒数据结构的基础。(spark 底层严重依赖这些lazy)
四、加载(使用它的时候才会被加载)
println(lines)