前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Play For Scala 开发指南 - 第1章 Scala 语言简介

Play For Scala 开发指南 - 第1章 Scala 语言简介

作者头像
joymufeng
发布2018-05-17 15:56:00
1.3K0
发布2018-05-17 15:56:00
举报

Scala是可伸缩语言(Scalable Language)的缩写,读作skah-lah, 于2004年1月20日发布了第一个公开版本。其实早在2001年,Martin Odersky就开始Scala的设计工作,Martin 是瑞士洛桑联邦理工大学(EPFL)计算机与通信科学学院的一名教授, Martin曾和Haskell 语言设计者之一 Philip Wadler合作,设计了一个原型系统GJ, 最终演变为 Java 泛型。Martin还曾受雇于 Sun 公司,编写了 javac 的参考编译器,这套系统后来演化成了 JDK 中自带的 Java 编译器。

Scala是一门混合范式编程语言,同时支持面向对象和函数式编程,函数式编程已经被视为解决并发、大数据的最佳工具,这也是Scala相对于Java的强大之处。同时Scala还是一门有趣的语言,有趣之处在于虽然它是强类型语言,但是却采用了动态类型语法,使得代码更加简洁、灵活和优雅。这主要得益于Scala强大的类型推断系统,在编译期可以进行静态类型推断,不仅可以降低代码的冗余性,而且也不用担心动态类型语言的重构灾难。

从2001年开始,Scala经历了如下发展过程:

大事记

2001年诞生于EPFL

2003年发布初始版本

2006年发布2.0版本

2011年Odersky创建Typesafe,后改名Lightbend

2012年发布2.8、2.9和2.10版本,从2.10开始弃用内置actor库,改用Akka

2014年发布2.11版本

2016年发布2.12版本

2017年发布2.13-M2版本

Scala全面拥抱现有的Java生态系统,可以和现有Java类库实现无缝连接,你可以在Scala项目直接引入现有的Java依赖,或是直接引入Java源码文件。与此同时,Scala生态发展的也非常不错,下面列举几个具有代表性的项目。

 分布式系统

Akka是一个工具库,可以帮助你构建一个基于消息驱动的高可用分布式系统。Akka包含很多模块,Akka Actor是Akka的核心模块,使用Actor模型实现并发和分布式,可以将你从Java的多线程痛苦中解救出来;Akka Streams可以让你以异步非阻塞的方式处理流数据,并且支持背压(backpressure); Akka Http实现了一套基于流的HTTP服务端和客户端;Akka Cluster可以帮你实现一个分布式集群系统;Cluster Sharding可以帮你做集群的分片处理;Distributed Data可以帮助你在集群之间分享数据;Alpakka可以帮你为Akka Streams集成不同的数据源;Akka Persistence可以帮你处理Actor消息的持久化存储,防止重启后数据丢失。

Finagle是Twitter基于Netty开发的支持容错的、协议无关的RPC框架,该框架支撑了Twitter的核心服务。

 大数据处理

Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架。最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一。Spark提供了一个更快、更通用的数据处理平台。和Hadoop相比,Spark可以让你的程序在内存中运行时速度提升100倍,或者在磁盘上运行时速度提升10倍。去年,在100 TB Daytona GraySort比赛中,Spark战胜了Hadoop,它只使用了十分之一的机器,但运行速度提升了3倍。Spark也已经成为 针对 PB 级别数据排序的最快的开源引擎。

Kafka发源于LinkedIn,于2011年成为Apache的孵化项目,随后于2012年成为Apache的主要项目之一。Kafka使用Scala和Java进行编写。Apache Kafka是一个快速、可扩展的、高吞吐、可容错的分布式发布订阅消息系统。Kafka具有高吞吐量、内置分区、支持数据副本和容错的特性,适合在大规模消息处理场景中使用。

 新一代编译器

Dotty 是 Scala 的下一代编译器,也是 Scala 的新语言概念和编译器技术研究平台。Martin Odersky一直领导着Dotty的工作。 Dotty是一种创新的,基于Dependent Object Types(DOT)演算(基本上是Scala的简化版本)和函数式编程(FP)数据库社区的研究编译器。

 WEB框架

基于Scala的Web框架有很多,PlayLiftScalatraFinatra等等,其中Play是Lightbend官方维护的框架。Play 刚开始发布的 1.x 版本是基于Java开发, 从 2.0 版本开始,整个框架使用Scala进行了重写。笔者正是从Play 2.0开始,从传统的SSH/SSI转向Play,一直使用至今。在这个过程中有诸多的欣喜与发现,在后面将会和大家慢慢分享。

本书的第一部分是Scala入门指引,不会涉及到Scala语言的高级特性,只是用简短的篇幅向大家介绍一些Scala在Web开发场景下常用的技巧。如果您想进行更深入的学习,建议您参考以下两本书籍:

  • 快学Scala,Cay S. Horstmann 著, 高宇翔 译 该书由Martin Odersky作序力荐,行文简洁透彻,翻译的也很棒。需要注意的是,请跳过第20章Actor,因为从Scala 2.10开始,内置actor实现已经弃用,改用Akka。
  • Programming in Scala - Third Edition, Martin Odersky 著 Martin的大师级作品,Jolt获奖图书。全书深入浅出,以浅显的示例展示诸多编程语言的奥秘,建议你强势围观。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档