曾冠东还表示,Scala不是Java的杀手,它无法取代Java的地位,也突破不了JVM的限制、Java实现不了的功能它也实现不了 。java和scala代码我们可以将Scala形象的理解成大量语法糖的Java 。
Scala 开发团队发布了最新的2.9.2稳定版本 , Scala 语言的特性有许多 , 例如高阶函数和对象、抽象类型绑定,actor 使得函数在 Scala 中能是一个子类成为可能 , Scala 中的设计模式使得面向对象和函数编程无缝结合 。Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用 。它已经成功运用在电信行业 。Spark 是一种可扩展的数据分析平台,它整合了内存计算的基元,因此,相对于 Hadoop 的集群存储方法,它在性能方面更具优势 。Spark 是在 Scala 语言中实现的,并且利用了该语言,为数据处理提供了独一无二的环境 。Scala 编译器可以生成字节码,直接运行在使用JVM上 。该语言(它实际上代表了可扩展语言)被定义为可直接集成到语言中的简单扩展 。
Scala作为一门静态语言,它的主要特性有哪些?
· Scala是面向对象的
Scala是一个纯面向对象语言,在某种意义上来讲所有数值都是对象 。对象的类型和行为是由class和trait来描述的 。Class的抽象可由子类化和一种灵活的基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展 。
· Scala是函数式的
Scala还是一个函数式语言,在某种意义上来讲所有函数都是数值 。Scala为定义匿名函数提供了一种轻量级的语法,它支持高阶(higher-order)函数、允许函数嵌套、支持局部套用(currying) 。Scala的case类及其内置支持的模式匹配模型代数类型在许多函数式编程语言中都被使用 。
· Scala是静态类型的
Scala配备了一套富有表现力的类型系统,该抽象概念以一种安全的和一致的方式被使用 。
· Scala是可扩展的
Scala的设计承认了实践事实 , 领域特定应用开发通常需要领域特定语言扩展 。Scala提供了一个独特的语言组合机制,这可以更加容易地以类库的形式增加新的语言结构:
任何方式可以被用作中缀(infix)或后缀(postfix)操作符闭包按照所期望的类型(目标类型)自动地被构造
两者结合使用可方便地定义新语句 , 无需扩展语法 , 也无需使用类似宏的元编程工具 。
· Scala可与Java和.NET进行互操作
Scala设计时就考虑了与流行编程环境良好交互,如Java 2运行时环境(JRE)和 .NET框架(CLR) 。特别是与主流面向对象语言,如Java和C#尽量无缝交互 。Scala有像Java和C#一样的编译模型(独立编译,动态装载类) , 允许访问成千上万的高质量类库 。
在并发性方面,与 Scala 在 .NET 领域中的姐妹语言 F# 相似,Scala 是针对 “并发性问题” 的解决方案之一,让开发人员能够更加轻松地专注于问题的实质,而不用考虑并发编程的低级细节 。Actor 编程模式让高度并行应用程序的开发更加简单 。Scala把Erlang风格的基于actor的并发带进了JVM 。我们可以利用Scala的actor模型在JVM上设计具伸缩性的并发应用程序,以自动获得多核心处理器带来的优势,而不必依照复杂的Java线程模型来编写程序 。Scala 为并发性提供了两种级别的支持,这与其他与 Java 相关的主题极为类似:
首先,对底层库的完全访问(比如说 java.util.concurrent)以及对 “传统” Java 并发性语义的支持(比如说监控程序和wait()/notifyAll()) 。其次 , 这些基本机制上面有一个抽象层
Scala 提供了在稳定的高性能平台(Java 虚拟机)上生成的能力同时也是一门敏捷性语言 。这一类型的语言也有其他的选择,例如 Jython, JRuby, Groovy 和 Clojure, 但是这些都是运行在 JVM 上的动态类型语言 。Open Class 的效果让大家会觉得Scala是动态语言 , 但它是选择隐式转换来实现的,这也正好证明了Scala是静态语言 。隐式转换(Implicit conversion)使 Scala 具有类型安全性,正如扩展方法(extension method)之于 C# , 开放类(open class)之于 ruby 。即:向未曾定义的类型添加方法(如字符串、列表、整数) 。这是使得 Scala 符合 DSL(特定领域语言)模型的特性之一 。
- mysql游标和存储过程是什么 mysql游标表名为变量
- mysql子查询和连接查询 mysql子查询插入
- 纯phpmysql
- mongodb存储图片和文件实践 mongodb存文件和表
- java查询数组中是否包含某一个值 javamongodb数组查询
- 数据库和redis数据不一致 h2数据库和redis
- mongodb 权威指南 mongodb权威指南和实战
- mongo 新建数据库 mongodb创建用户和数据库
- redis怎么和数据库交互 redis数据结合
- redis实战电子书 redisjava书籍
