Ubuntu 安装 JDK7 / JDK8的两种方式
¶使用ppa源方式安装
- 添加ppa
1 | sudo add-apt-repository ppa:webupd8team/java |
- 安装oracle-java-installer
JDK7
1 | sudo apt-get install oracle-java7-installer |
JDK8
1 | sudo apt-get install oracle-java8-installer |
1 | sudo add-apt-repository ppa:webupd8team/java |
JDK7
1 | sudo apt-get install oracle-java7-installer |
JDK8
1 | sudo apt-get install oracle-java8-installer |
Docker 两个主要部件:
Docker 使用客户端-服务器 (C/S) 架构模式。Docker 客户端会与 Docker 守护进程进行通信。Docker 守护进程会处理复杂繁重的任务,例如建立、运行、发布你的 Docker 容器。Docker 客户端和守护进程可以运行在同一个系统上,当然你也可以使用 Docker 客户端去连接一个远程的 Docker 守护进程。Docker 客户端和守护进程之间通过 socket 或者 RESTful API 进行通信。
本章介绍一个已有的Scala工具包:Akka,让你为JVM平台构建新一代的、事件驱动的、容错的、可伸缩的分布式应用。Akka提供了多并发的抽象,本章着重探索其内容。前面内容,仅介绍了Actor面向消息的(message-oriented)并发使用。这里将继续探索诸如 STM、Agent和Dataflow的并发抽象内容。
最激动人心的事情是,Scala可以运行在JVM上。这带来的好处是你可以使用构建在JVM语言上的所有框架和工具。基于JVM,更有一些公司甚至不使用Java作为他们的首选编程语言。对于大多数企业软件项目,我坚信不支持JVM的语言,几乎不可能实现。
Scala的一个主要设计目的,是令其运行在JVM上,并提供对Java的相互协作。Scala被编译为Java字节码,所以你可以使用如javap(Java class file disassembler)工具,对有Scala编译器生成的字节码进行反编译。大部分情况下,Scala的特性被转换为Java的特性,因此Scala可以轻松和Java集成。例如,Scala使用类型擦除来兼容Java。类型擦除1 (Type erasure)也允许Scala对JVM的动态类型进行集成。一些Scala特性(如traits),不会直接地映射为Java,在这种情况下,你需要灵活变通地使用。
虽然对Java的大部分集成都可轻松实现,我仍然更推荐你使用 pure Scala。我尝试查找两者之间某些等价的部分,以及Scala不能实现的,则使用Java来解决。使用Java库的不好的方面是,你必须处理可变性、异常、空值这些Scala中绝对不会出现的问题。在Scala中,需要特别小心地选择Java的库或者框架。以一个编码良好的Java库Joda-Time为例。
Scala和Java最通常的集成,是指部分项目由Scala编写的。小节11.4将介绍Scala中使用Java框架,Hibernate、Spring等的web项目构建。
截至目前为止,所展示的代码都没有单元测试——为什么我们现在要关心这个问题?围绕代码写测试,而又不提及它做了什么,是希望你更专注于Scala语言本身。现在,本章的目标是希望编写自动化的Scala单元测试,用于更好地构建高质量的软件。
编写精良1的代码,从你编程单元测试开始。通常感性认识是很难编写单元测试,但这章要改变这种心态。我将为你展示,如测试驱动开发和持续集成的练习开始,如何在你的Scala项目中编写测试。测试驱动开发(test-driven development,TDD)就是指在你编写代码之前编写测试。我知道这有点落后,但我保证,这章结束后它将更有意义。你将学习的测试,更多的是设计一个测试,正如设计你的软件一样。你的设计工具将会是代码——更特别地,测试的代码。
我将由介绍自动化测试和开发者如何在真实环境中使用来开始。有两种自动化测试:一种是你自己写的,一种是从你的代码中生成的。首先要介绍的是代码生成的测试,使用ScalaCheck工具,因为它比较容易。Sala是一个强静态类型语言,利用这点,诸如ScalaCheck这样的工具可以为你构建在类型上的函数或类生成单元测试。ScalaCheck是自动化测试的一种很好实现。但要完全信服自动化测试带来的好处,你需要手动编写它们。