OnJava8-Examples:《On Java 8》书籍代码示例及验证测试

提供《On Java 8》书籍的代码示例,自动提取自书籍内容,包含测试以验证代码正确性,支持通过Gradle构建运行,适合学习Java 8的开发者参考实践。【此简介由AI生成】

Branch1Tags3
FilesLast commitLast update
5 years ago
5 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
4 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
4 years ago
4 years ago
4 years ago
11 years ago
9 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
5 years ago
9 years ago
9 years ago
5 years ago
5 years ago
5 years ago
5 years ago

《On Java 8》示例代码(Bruce Eckel 著)

如果您想实践《On Java 8》一书中的代码示例,那么您来对地方了。

这些示例是直接从书中自动提取的。本仓库包含用于验证书中代码正确性的测试。

注意:请勿尝试将 JDK 16 或更高版本与 Gradle 配合使用。 这会导致 Gradle 输出“BUG!”消息,因为 Gradle 在这些版本上存在问题。

目录

命令行构建:快速版

在运行本仓库中的示例之前,您必须安装 JDK8,即 Java 8 版本的 Java 开发工具包

如果您只想下载并查看代码,请点击此处下载,然后将其解压到您的目标目录。打开一个shell/命令窗口,并导航到该目录的根目录。如果您看到 gradlewgradlew.bat 文件,就说明您已进入正确的目录。

首次编译代码时,您需要连接互联网,因为 Gradle 需要先安装自身,然后安装所有支持库。一旦这些安装完成,您就可以离线进行后续的编译和运行操作了。

在 Mac/Linux 系统上,输入:

./gradlew test

(如果遇到“Permission denied”错误,请运行 chmod +x ./gradlew

在 Windows 系统上,输入

gradlew test

如果一切顺利,测试将会运行。所有内容都应无错误地完成。

本书的所有示例都位于 Examples 子目录中,该子目录下又包含与章节名称相对应的子目录。

从命令行构建:详细说明

如果您不熟悉命令行,请先阅读命令行基础

安装 Java

您必须首先安装 Java 开发工具包(JDK)。

Windows

  1. 按照说明安装 Chocolatey

  2. shell 提示符下,输入:choco install jdk8(您也可以选择更新的版本,如 jdk11)。安装过程需要一些时间,完成后 Java 将被安装,并且必要的环境变量也会被设置。

Macintosh

Mac 自带的 Java 版本非常旧,无法运行本书中的示例,因此您需要将其更新到(至少)Java 8。

  1. 按照此链接上的说明安装 HomeBrew

  2. shell 提示符下,首先输入 brew update。完成后,输入 brew cask install java

注意: 有时通过上述安装获得的 Java 默认版本可能太新,未经过 Mac 安全系统的验证。如果发生这种情况,您需要手动关闭安全性或安装早期版本的 Java。无论选择哪种方式,您都需要通过谷歌搜索来寻找解决问题的方法(通常最简单的方法是直接搜索 Mac 产生的错误消息)。

Linux

使用标准的软件包安装程序以及以下 shell 命令

Ubuntu/Debian

  1. sudo apt-get update

  2. sudo apt-get install default-jdk

Fedora/Redhat

su -c "yum install java-1.8.0-openjdk"

验证你的安装

打开一个新的 shell 并输入:

java -version

您应该会看到类似以下的内容(版本号和实际文本会有所不同):

openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

如果看到“命令未找到”或“无法识别命令”的提示,请重新查看安装说明。如果问题仍然存在,可以访问 StackOverflow 寻求帮助。

安装和运行本书示例代码

安装好 Java 后,安装和运行本书示例代码的步骤在所有平台上都是相同的:

  1. GitHub 仓库 下载本书示例代码。

  2. 将下载的文件解压到你选择的目录中。

  3. 使用 Windows 资源管理器、Mac Finder,或 Linux 上的 Nautilus 等文件浏览器,导航到你解压 OnJava8-Examples 的目录,并在该目录下打开终端

  4. 如果目录正确,你应该能看到名为 gradlewgradlew.bat 的文件,以及许多其他文件和目录。这些目录对应着书中的各个章节。

  5. 在终端提示符下,输入 gradlew test(Windows 系统)或 ./gradlew test(Mac/Linux 系统)。

首次执行此命令时,Gradle 会自行安装并下载众多其他软件包,因此需要一些时间。完成所有安装后,后续的构建和运行速度会快很多。

请注意,首次运行 gradlew 时必须连接互联网,以便 Gradle 下载所需的软件包。

附录 A:命令行基础

对于从本书学习编程的“纯新手”来说,你可能之前从未使用过计算机的命令行终端。如果你有使用经验,可以直接跳至安装说明

编辑器

要创建和修改 Java 程序文件——也就是本书中展示的代码清单——你需要一个名为“编辑器”的程序。安装过程中有时需要修改系统配置文件,这时也需要用到编辑器。

编程编辑器种类繁多,既有功能强大的“集成开发环境”(IDE,如 Eclipse、NetBeans 和 IntelliJ IDEA),也有较为基础的文本处理应用。如果你已经有熟悉的 IDE,可以继续使用它来学习本书。

本书中的许多说明是针对 IntelliJ IDEA 的,因此如果你还没有 IDE,不妨从 IDEA 开始。当然还有很多其他编辑器;它们本身就像一种亚文化,人们有时会为它们的优劣争论不休。如果你发现更喜欢的编辑器,更换起来也并不困难。重要的是选择一个并熟练使用它。

命令行 shell

如果你之前没有编程经验,可能对操作系统的 shell(Windows 中也称为 命令提示符)不太熟悉。shell 可以追溯到计算机发展的早期,那时所有操作都通过输入命令来完成,计算机则通过显示文本响应——一切都是基于文本的。

尽管在图形用户界面时代,shell 看起来可能有些原始,但它却提供了许多令人惊喜的实用功能。

要了解更多本书未涵盖的 shell 相关知识,请参阅适用于 Mac/Linux 的 Bash Shell 或适用于 Windows 的 Windows Shell

启动 shell

Mac:点击屏幕右上角的 Spotlight(放大镜图标),输入“terminal”。点击那个看起来像小电视屏幕的应用程序(你也可以直接按“Return”键)。这将在你的主目录中启动一个 shell。

Windows:首先,启动 Windows 资源管理器来浏览你的目录:

  • Windows 7:点击屏幕左下角的“开始”按钮。在开始菜单的搜索框中输入“explorer”,然后按“Enter”键。

  • Windows 8:按下 Windows+Q 组合键,输入“explorer”,然后按“Enter”键。

  • Windows 10:按下 Windows+E 组合键。

Windows 资源管理器运行后,通过鼠标双击文件夹来浏览计算机上的文件夹。导航到目标文件夹。然后点击资源管理器窗口左上角的“文件”选项卡,选择“打开 Windows PowerShell”。这将在目标目录中打开一个 shell。

Linux:要在主目录中打开 shell:

  • Debian:按下 Alt+F2 组合键。在弹出的对话框中,输入 'gnome-terminal'。

  • Ubuntu:可以右键点击桌面并选择“打开终端”,或者按下 Ctrl+Alt+T 组合键。

  • Redhat:右键点击桌面并选择“打开终端”。

  • Fedora:按下 Alt+F2 组合键。在弹出的对话框中,输入 'gnome-terminal'。

目录

目录 是 shell 的基本元素之一。目录可以存放文件,也可以存放其他目录。可以将目录想象成一棵带有分支的树。如果系统中有一个名为 books 的目录,并且它有两个分支目录,例如 mathart,那么我们就说 books 目录下有两个子目录 mathart。我们将它们称为 books/mathbooks/art,因为 books 是它们的父目录。注意,Windows 使用反斜杠而非正斜杠来分隔目录的各个部分。

Shell 基本操作

这里展示的 shell 操作在不同操作系统上大致相同。就本书而言,以下是 shell 中的基本操作:

  • 切换目录:使用 cd 命令,后跟要进入的目录名称;若要向上移动一个目录,可使用 cd ..。如果想切换到另一个目录并记住当前位置,可以使用 pushd 命令,后跟目标目录名称。之后,只需输入 popd 即可返回到之前的目录。

  • 列出目录内容ls(Windows 中为 dir)命令用于显示当前目录下的所有文件和子目录名称。可以使用通配符 *(星号)来缩小搜索范围。例如,若要列出所有以 “.kt” 结尾的文件,可输入 ls *.kt(Windows 中为 dir *.kt)。若要列出以 “F” 开头且以 “.kt” 结尾的文件,可输入 ls F*.kt(Windows 中为 dir F*.kt)。

  • 创建目录:使用 mkdir(“make directory” 的缩写)命令(Windows 中为 md),后跟要创建的目录名称。例如,mkdir books(Windows 中为 md books)。

  • 删除文件:使用 rm(“remove” 的缩写)命令,后跟要删除的文件名称(Windows 中为 del)。例如,rm somefile.kt(Windows 中为 del somefile.kt)。

  • 删除目录:使用 rm -r 命令删除目录及其包含的所有文件(Windows 中为 deltree)。例如,rm -r books(Windows 中为 deltree books)。

  • 重复命令:在所有三种操作系统中,按 “上箭头” 键可以浏览之前输入的命令,以便进行编辑和重复执行。在 Mac/Linux 系统中,!! 可重复执行上一条命令,!n 可重复执行第 n 条命令。

  • 命令历史:在 Mac/Linux 系统中使用 history 命令,或在 Windows 系统中按 F7 键,可查看所有已输入的命令列表。Mac/Linux 系统会为命令编号,以便在需要重复执行时引用。

解压 Zip 归档文件

.zip 结尾的文件名是一个包含其他压缩格式文件的归档文件。Linux 和 Mac 系统都有命令行 unzip 工具,Windows 系统也可以通过互联网安装命令行 unzip 工具。

不过,在这三个系统中,图形化文件浏览器(Windows 的文件资源管理器、Mac 的访达,或者 Linux 的 Nautilus 及类似工具)都能浏览到包含 zip 文件的目录。然后右键点击该文件,在 Mac 上选择“打开”,在 Linux 上选择“在此处提取”,在 Windows 上选择“全部提取...”。

附录 B:测试

测试系统是内置的,以便我们(作者)能够验证书中内容的正确性。

您无需运行这些测试,但如果您想运行,可以直接执行 gradlew test(Windows 系统)或 ./gradlew test(Mac/Linux 系统)。

要编译并运行所有内容,命令如下:

gradlew run

如果您使用的是基于 Unix/Linux 的系统,所有命令都必须指定本地目录,例如:

./gradlew run

仅编译所有内容,命令如下:

gradlew compileJava

要编译单个章节(包括依赖项),例如:

gradlew :strings:compileJava

要运行单个章节,例如:

gradlew :strings:run

Gradle 还可用于运行单个程序。这里,我们运行 strings 章节子目录中的 ReplacingStringTokenizer.java 程序:

gradlew :strings:ReplacingStringTokenizer

不过,如果文件名在整本书中是唯一的(大多数都是如此),您只需给出程序名即可,如下所示:

gradlew ReplacingStringTokenizer

请注意,所有命令都应在安装示例代码的基目录中运行,该目录中可以找到 gradlew 脚本。

您可以通过不带任何参数直接输入 gradlew 来了解其他选项。

附录 C:故障排除

如果您对这里描述的任何术语或流程仍不清楚,通常可以通过 Google 找到解释或答案。对于更具体的问题,可尝试 StackOverflow。有时您也可以在 YouTube 上找到安装说明。

有时 Gradle 构建可能无法连接到互联网以下载必要的组件,从而产生包含以下内容的错误消息:

javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

通常这意味着你的电脑上安装了多个 Java 版本(用 Java 构建的应用程序通常会安装它们自己的 Java 版本),并且不知为何,某个 cacerts 安全文件正在干扰你所安装的 Java 的 cacerts 文件。很难确定究竟是哪个 cacerts 文件在干扰你的文件。一种简单粗暴的方法是搜索你电脑上所有的 cacerts 文件,然后开始卸载相关的应用程序——或者在某些情况下,直接删除包含 cacerts 文件的目录——直到 Gradle 构建能够正常工作。你可能还需要调整一些环境变量和/或你的路径。一旦 Gradle 构建成功运行,你应该可以重新安装在此过程中卸载的任何应用程序。

Introduction

提供《On Java 8》书籍的代码示例,自动提取自书籍内容,包含测试以验证代码正确性,支持通过Gradle构建运行,适合学习Java 8的开发者参考实践。【此简介由AI生成】

Customize your domain