初识Scala
Scala是Scalable Language(可伸缩语言)的缩写,2003年诞生于瑞士洛桑联邦理工学院(EPFL),以实现高性能、高并发为目标。是运行在JVM(Java虚拟机)上的多范式编程语言,同时支持面前对象和面向函数编程。
Scala是一门静态类型语言(严格遵守变量的数据类型)。在其他语言中,如Python,如果定义了一个变量,则可以在其中存储数字或字符串;但是,像Scala这样的静态类型语言,则不能将数字值存储在字符串变量中。
为什么使用Scala
- 开发大数据应用程序(Spark程序、Flink程序)
- 表达能力强、代码简短、开发速度快
- 兼容Java,可以访问庞大的Java类库
Scala和Java的代码量
Java的代码:
/**
* 用户实体类
*/
public class User {
private String name;
private List<Order> orders;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Order> getOrders() {
return orders;
}
public void setOrders(List<Order> orders) {
this.orders = orders;
}
}
而同样的功能,用Scala实现时的代码则是:
case class User(var name:String, var orders:List[Order])
可见,Scala的这个特点最终将转化为提高开发效率和降低代码维护成本。
Scala的性能
由上面的例子我们可以感受到Scala的开发效率,那么它的性能会不会有所牺牲呢?
关于这个话题有许多争论,但实际上是使用Scala开发Spark才能获得最佳性能。
Databricks(Spark的创造者)分别对用Python和Scala开发Spark时的性能进行了全面的研究比较,结果如下:Recent performance improvements in Apache Spark: SQL, Python, DataFrames, and More – The Databricks Blog
此研究清晰表明,当使用Spark API中的RDD时,用Scala开发与用Python开发对性能的差别很大。而当使用Spark API提供的另一种数据结构DataFreames时,两者的性能差异几乎可以忽略不计。
在执行速度上,JVM类型语言方面优于解释类语言,这个结果背后有许多技术方面的缘由,我们不深究。对于大多数人来说,只要掌握了Scala,就能确保可以编写出具有最佳性能水平的程序(当然前提是敲对了代码)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...