- Scala并发编程(第2版)
- (瑞士)亚历山大·普罗科佩茨
- 819字
- 2021-08-17 17:17:56
1.2 Scala的优势
虽然Scala的发展势头很好,但其应用范围还没法和Java这样的“主流”语言相提并论。不过 Scala 的并发编程生态圈非常丰富而强大。几乎所有的并发编程样式都能在Scala 的并发编程生态圈中找到,且处于活跃的发展之中。Scala 在不断扩展其并发计算领域,提供更多现代化的高层次的应用程序接口(Application Programming Interface, API)。Scala在并发计算领域获得成功的原因有很多,主要的一个原因在于众多现代并发框架都能从Scala原生的灵活语法特性中获益,包括头等函数(first-class function)、传名参数、类型推理以及模式匹配等,这些特性在本书中都有介绍。通过这些语言特性,可以定义看起来具有原生语言特性的新API。这样的API可以将不同的编程模型伪装成嵌入宿主语言Scala的领域语言,比如角色模型、软件事务性内存和Future,它们看起来具有基础的语言特性,实际上只不过是第三方库。这样,Scala成功将众多现代并发框架吸收进来,无须再为每一种并发编程模型设计一种新的语言。而且,相对于其他语言,较小的语法负担也吸引了不少用户。
Scala发展良好的第二个原因在于它是一种安全的语言。原子垃圾回收、自动边界检测以及避免指针运算,让Scala避免出现内存泄露、缓冲区溢出等内存问题。此外,Scala的类型安全性也消除了很多早期的编程错误。当涉及并发计算时,因为其本身问题可能就不少,所以少一个语言层面的问题,也就少了一些烦恼。
第三个重要原因在于 Scala 的互操作性。Scala 程序被编译为 Java 字节码,在 Java虚拟机(Java Virtual Machine,JVM)上运行。Scala程序可以与Java库无缝集成,从而充分利用 Java 庞大的生态圈。通常情况下,切换到不同的语言是很痛苦的,但对 Scala而言,从Java切换过来则平缓和容易得多。这也是Scala的市场占有率越来越高的原因,而且一些Java兼容的框架也愿意选择Scala作为实现语言。
重要的是,Scala运行在JVM上意味着Scala程序是跨平台的。不仅如此,鉴于JVM拥有定义良好的线程和内存模型,这也保证了Scala可以在不同类型的计算机上以相同的方式运行。为实现语义一致性,可移植性对串行程序非常重要,对并发计算更是如此。
说了Scala的不少优点,后文将介绍本书涉及的Scala语言特性。