Scala是一种表达能力非常强的语言,能够用非常简洁的代码表达丰富的业务含义。为了在生产上充分发挥Scala的能力,除了掌握其简洁的语法外,理解Scala在性能上的特点和优化点也是非常重要的事。
本书通过解析一个金融领域高频交易的实际例子,引领读者掌握如何对Scala程序(以及一般JVM程序)进行基准测试和性能分析,从而找出瓶颈。随后作者介绍了Scala语言、Scala标准库(尤其是集合库)以及Scalaz库里解决相应瓶颈的各种技巧。并行计算和分布式架构作为性能调优的重要手段,更是本书的重中之重,作者对Scala的并行计算和分布式架构中存在的问题都进行了充分的讨论和讲解,非常值得学习。
本书适合已经具有Scala编程基础、能够较好地使用Scala风格代码实现业务功能的程序员,作为在性能优化方面的深造阅读资料。
用函数式编程范式开发面向生产环境的高性能软件
前言
Scala是一个大胆的(audacious)编程语言,在JVM平台上,它将面向对象和函数式编程的概念融合到一起。Scala从一个相对小众的语言成长为了一个开发健壮且可维护的JVM应用的首选语言。然而,如果不深入了解这门语言和它提供的高级特性,编写高性能应用依然是一个挑战性的任务。
从2011年开始,我们就使用Scala来解决复杂的业务上的挑战,这些挑战常常有很高的性能要求。在本书中,我们分享了在这些年中所学到的东西及在编写软件中应用过的技术。我们在书中浏览了这门语言及其生态系统,包括周边工具和使用广泛的库。
我们编写这本书的目标是帮助你理解Scala语言提供给你的选择。你有权在书中收集必要的信息,以便在你自己的软件系统中做出更有知识基础的设计和实现决定。我们将不仅给你Scala之鱼,带你上路,还将传授渔鱼之技,并给你相关工具让你写出更函数式性能更高的软件。一路上,我们将通过精心设计的业务问题来激发技术讨论,这些业务问题将能让你回想起真实世界的问题。希望通过阅读本书,你能体会到Scala的强大能力,并找到合适的工具去编写函数式性能更好的应用。
本书的内容包含什么
第1章,通往性能之路,介绍了性能的概念及关于这个主题的一些重要术语。
第2章,在JVM上衡量性能,详细介绍了JVM上可用于衡量和评估性能的工具,包括JMH和Flight Recorder。
第3章,释放Scala的性能,对多项利用Scala语言特性来提升程序性能的技术和模式提供了引导。
第4章,探索集合API,讨论了Scala标准库提供的几个集合抽象。在这一章中我们专注于急切执行的集合。
第5章,惰性集合和事件溯源,是一个高级技术章节,讨论了两类延迟序列:视图和流。我们还对事件源范式进行了简要的介绍。
第6章,Scala的并发,讨论了编写健壮的并行代码的重要性。我们深入介绍了Scala标准库提供的Future API,并介绍了Scalaz库中提出的任务抽象。
第7章,高性能架构,作为最后一章,覆盖了前面章节讲过的主题的更深入的相关知识,并探索了使用CRDT作为分布式系统的构建块。这一章还探索了在面临高吞吐量时,使用free monald实现负载控制策略,以构建响应延时可控的系统。
你需要准备什么
你应该要在你的操作系统上安装好Java Development Kit 8版本或更高,以便你可以运行所有的示例代码。本书讨论了Oracle HotSpot JVM,并演示了在Oracle JDK中包含的工具。你应该还需要从http://www.scala-sbt.org/download.html获取最新版的sbt(在写作本书的时候,版本为0.13.11)。
这本书为谁而写
你应该具备关于Scala编程语言的基本知识,熟悉一些基本的函数式编程概念,并具有编写产品级JVM软件的经验。我们建议刚接触Scala和函数式编程的读者在读本书之前花一些时间学习其他的资源,以便可以从书中获取到更多的知识。两个杰出的以Scala为中心的资源是Artima出版社的《Scala编程》(Programming in Scala)及Manning出版社的《Scala函数式编程》(Functional Programming in Scala)。前一个最适用于具有坚实的面向对象Java编程知识,同时想要先理解这门语言然后理解函数式编程范式的开发者。后者则聚焦于函数式编程范式而少于讨论某一个具体语言中的概念。
第一章序言第二段,【它视图】应为【它试图】