Scala工具和库

2017/11/21 Scala

Scala工具和库

本文介绍常见的Scala工具和库。

SBT

SBT 是一款可用于构造 Scala 项目和 Java 项目的复杂工具。它提供了很多的配置选项以及插件功能。 主构建文件位于代码示例的顶层文件夹中,其名为 build.sbt。如下:

name := "Programming Scala, Second Edition: Code examples" 

version := "2.0"

organization := "org.programming-scala"

scalaVersion := "2.11.2"

libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-actor"     % "2.3.4",
"org.scalatest"     %% "scalatest"      % "2.2.1"   % "test",
"org.scalacheck"    %% "scalacheck"     % "1.11.5",
...
)

scalacOptions = Seq(
    "-encoding", "UTF-8", "-optimise",
    "-deprecation", "-unchecked", "-feature", "-Xlint", "-Ywarn-infer-any")

javacOptions ++= Seq("-Xlint:unchecked", "-Xlint:deprecation")

构造文件中定义了变量,变量定义体采用了类似于name := “Programming Scala, …“这样的格式。为了能更容易地定位到定义体的结 束位置,目前构造文件的 DSL 要求每个定义之间包含一个空行。假如忘记了在定义体之间添加空行,你将会看到一条与之相关的错误信息。

Maven

可以在 GitHub(http://davidb.github.io/scala-maven-plugin/ )中找到适用于 Scala 语言的 Maven 插件。该插件会帮你自动下载 Scala 语言,因此使用 时无需安装 Scala。

TDD

测试驱动开发(test-driven development,TDD)是软件开发中一种已经存在的开发方法,其目的是通过测试驱动代码设计。在 TDD 中,我们需要首 先编写包含了一点功能的测试,之后再编写能够使之前编写的测试通过的代码。 可以使用 ScalaTest(http://www.scalatest.org )和 Spec2(http://etorreborre.github.io/specs2 )这两套库得到支持多种测试风 格的 DSL 语言。尤其是 ScalaTest 库,该库通过混入不同的 trait,使你对多种测试风格进行挑选。

常用的第三方库

http://typelevel.org 网站中聚集了大量的可用于不同用途的库,可以从里面找到自己需要的库。

WEB

库名 URL 描述
Play http://www.playframework.com/ 由 Typesafe 提供支持的一套全栈框架,该框架提供了 Scala 和 Java API,同时框架集成了 Akka 系统
Lift http://liftweb.net/ http://liftweb.net/

服务库

库名 URL 描述
Akka http://akka.io Akka 是一套完备的、基于 actor 的分布式计算系统,
Finagle https://twitter.github.io/finagle/ Finagle 是一套用于构建 JVM 服务的可扩展系统,它所构建的 JVM 服务建立在函数式抽象的基础之上。Twitter 开发了 这套系统,并将其用于构造一些服务a
Unfiltered http://unfiltered.databinder.net/Unfiltered.html http://unfiltered.databinder.net/Unfiltered.html
Dispatch http://dispatch.databinder.net/Dispatch.html 提供了同步 HTTP 的相关 API

高级库

库名 URL 描述
Scalaz http://scalaz.github.io/scalaz/ Scalaz 库引导了 Scala 中的范畴理论概念。与此同时,针对一些设计难题,Scalaz 还提供了一些便利的工具。
Shapeless https://github.com/milessabin/shapeless Shapeless 库通过应用类型类和依赖类型,实现了一套范型编程库

I/O 库

库名 URL 描述
Scala I/O http://jesseeichar.github.io/scala-io-doc/0.4.3/index.html 一套具有丰富功能且流行的 I/O 库
http://jesseeichar.github.io/scala-io-doc/0.4.3/index.html http://rapture.io/ 一套具有丰富功能且流行的 I/O 库

其他库

库名 URL 描述
scopt https://github.com/scopt/scopt 用于命令行解析的库
Typesafe Config https://github.com/typesafehub/config 一套配置库(采用了 Java API)
ScalaARM http://jsuereth.com/scala-arm/ 用于命令行解析的库
Typesafe Activator https://github.com/typesafehub/activator 用于对示例 Scala 项目进行管理,该库位于 http://typesafe.com/activator

Scala 2.11可选模块

库名 URL 描述
XML scala-xml 用于构造及解析 XML
Parser Combinators scala-parser-combinators 用于构造解析器的组合库
Swing scala-swing Swing库
Async scala-async Scala同步编程的辅助库,提供了可以直接操作Future 类型的API
Partest scala-partest 一套适用于编译器和类库的测试框架
Partest Interface scala-partest-interface scala-partest-interface

了解目前最全面的第三方库列表,请访问“Github 里最棒的 Scala 库列表”(https://github.com/lauris/awesome-scala )。除了这个列表之 外,http://ls.implicit.ly/ 同样集合了一批 Scala 库。

小结

工欲善其事,必先利其器。

Show Disqus Comments

Search

    Table of Contents