在正式开始学习 Java 语言之前,首先你必须安装 Java 以及本书提供的代码示例。考虑到有的读者会通过阅读本书开始学习编程,我会假设你从来没有使用过计算机的命令行,所以会尽量详细地说明安装过程。如果你使用过命令行,则完全可以直接跳至本章的安装部分。
如果你对这里介绍的任何术语和流程依然一知半解,那么可以通过搜索引擎找到相关的解释和答案。对于更多具体的争议和问题,可以去 Stack Overflow 网站上看看。此外,你也可以在视频网站 YouTube 上找到安装教程。
2.1 编辑器
如果想要新建和修改 Java 文件,比如本书所提及的代码示例,首先需要一个名为编辑器的软件。在安装 Java 的过程中,有时也需要利用编辑器来修改系统配置文件。
用于编程的编辑器种类千差万别,从全能型的集成开发环境(IDE,比如 IntelliJ IDEA 或者 VSCode )到简单的文本处理软件,多如繁星。如果你已经习惯于使用某种 IDE,那么在阅读本书的过程中可以放心地继续使用它。如果你还没有习惯使用的 IDE,那么可以试试 VSCode。
VSCode 编辑器是免费的开源软件,安装过程十分简单,且支持全平台(包括Windows、Mac和Linux)。同时,它内置了 Jav a模式,在你打开 Java 文件的时候就可以自动生效。此外,它还提供了一些让人爱不释手的功能。感兴趣的话,你可以在其网站上浏览更多的详细信息。
世界上还有许多其他的编辑器,它们甚至形成了一种亚文化群体,其中的人们热衷于讨论各种编辑器孰优孰劣。如果你找到了一个更喜欢的编辑器,转到这个新的编辑器也并不困难。重要的是,选择一个编辑器并适应它。
虽然 VSCode 很适合初学者,然而当你进一步深入 Java 编程时,也许你会想要研究一下 JetBrains 公司推出的 IntelliJ IDEA 所提供的一些更为强大的编程功能。对我来说,两者我都会经常使用。
2.2 shell
如果你没有任何编程经验,那么可能对操作系统的 shell(在 Windows 中也叫作命令提示符)也不太熟悉。shell 的历史可以追溯到计算机的早期,那时所有的计算机操作都是通过敲击命令来实现的,并且计算机通过显示响应来回应,这一切都基于文本模式的。
虽然和后来出现的图形用户界面(graphical user interface, GUI)相比,shell 显得十分原始,不过它依然提供了大量的重要功能。本书在安装 Java 的过程中和运行 Java 程序时,会经常使用 shell。
2.2.1 运行 shell
Mac:点击 Spotlight(屏幕右上角的放大镜图标),在输入框中输入 “terminal”。点击那个看起来像是小电视屏幕的应用程序(也可以按键盘的回车键),就打开了一个指向 home 目录的 shell 窗口。
Windows:首先,按照下面的方法启动资源管理器(Windows Explorer)以浏览目录。
- Windows 7:点击屏幕左下角的“开始”(Start)按钮,在开始菜单的搜索栏里,输入“explorer”,然后按下回车键。
- Windows 8:点击 Windows+Q 键,然后输入 “explorer” 并按下回车键。
- Windows 10:点击 Windows+E 键。
打开资源管理器之后,就可以通过鼠标双击进入文件夹。你可以选择跳转至自己想查看的目录,然后点击资源管理器左上角的“文件”选项卡,选择“打开命令行”(Open command prompt),这样就在目标目录打开了一个 shell 窗口。
Linux:可以通过以下操作打开一个指向 home 目录的 shell 窗口。
- Debian 系统:按下快捷键Alt+F2。在弹出的窗口中输入 “gnome-terminal”。
- Ubuntu 系统:在桌面上点击鼠标右键,在弹出菜单中选择“打开终端”(Open Terminal),或者按下快捷键 Ctrl+Alt+T。
- Redhat 系统:在桌面上点击鼠标右键,在弹出菜单中选择 “打开终端”。
Fedora 系统:按下快捷键 Alt+F2。在弹出的窗口中输入 “gnome-terminal”。
2.2.2 目录(文件夹)
目录是shell的基础要素之一。目录可以包含文件或其他目录。你可以把一个目录想象成带有分枝的一棵树。比如你的系统里有一个名为books的目录,其中包含math和art这两个目录,那么我们就说目录books拥有math和art这两个子目录。因为books是父目录,所以我们还可以用books/math以及books/art来表示两者。需要注意的是,Windows系统使用反斜杠“\”而不是斜杠“/”来分隔一个目录的各个部分。
2.2.3 shell 基础操作
本节所介绍的 shell 操作在不同的操作系统中大致相同。下面介绍一些本书中会用到的 shell 基础操作和命令。
切换目录:使用 cd 命令加上目录名进入目录,或者使用
cd ..
返回上级目录。如果你希望在进入一个目录的同时还能记住之前的目录名,可以使用pushd加上新目录名进入这个目录,之后可以使用 popd 返回之前的目录。- 目录列表:使用 ls 命令(Windows系统中则是dir)可以展示当前目录下的所有文件和子目录。使用通配符可以对展示的内容进行过滤。比如,当你需要列出所有后缀是 “.java” 的文件时,可以使用 `ls .java
(Windows系统中则是dir *.java)。更进一步,如果你希望列出所有以字母 “F” 开头且后缀名是“.java” 的文件,可以使用
ls F.java`(Windows系统中则是dir F.java)。 - 新建目录:使用 mkdir(make directory的缩写)命令加上目录名可以新建一个目录(Windows系统中则使用md)。例如,使用 mkdir books(Windows系统中则是md books)就会在当前目录下新建一个名为 books 的目录。
- 删除文件:使用 rm(remove的缩写)命令加上文件名可以删除该文件(Windows系统中则使用del)。例如,使用
rm somefile.java
可以删除名为somefile.java
的文件(Windows系统中则使用del somefile.java
)。 - 删除目录:使用
rm -r
命令可以删除目录及其包含的所有文件(Windows系统中则使用 deltree)。例如,使用rm -r books
可以删除 books 目录及其包含的所有文件(Windows系统中则使用 deltree books )。 - 重复命令:所有 3 种操作系统都支持在 shell 窗口里用 “↑” 键显示上一条命令,方便你编辑和再次使用该命令。在 Mac/Linux 系统下,
!!
会执行上一条命令,!n
则会执行第n条命令。 - 命令历史:在 Mac/Linux 系统下使用 history 或者在 Windows 系统下按下 F7 键,就可以查看所有使用过的命令。Mac/Linux 系统下还会显示命令的历史序号,这样你就可以方便地重复该命令。
- 解压文件:后缀名为 “.zip” 的文件是一个包含了其他文件的压缩包文件。Mac/Linux 系统提供了用于解压的 unzip 命令,如果是 Windwos 系统,你可以通过互联网安装 unzip 命令。不过,所有 3 个操作系统的图形文件浏览器(Windows的资源管理器,Mac 的 Finder,Linux 的 Nautilus 等)都可以进入你保存压缩文件的目录,然后你只需在该文件上点击鼠标右键,接着在 Mac 系统下选择“打开”(Open),在 Linux 系统下选择“解压到此”(Extract Here),或者在 Windows 系统下选择“解压所有”(Extract all …)即可。
如果你希望学习更多关于shell的知识,请在维基百科中搜索 “Windows Shell”。如果你使用的是 Mac/Linux 系统,可以搜索 “Bash Shell”。
2.3 安装Java
为了编译和运行本书的示例,首先你必须安装 JDK(Java Development Kit,Java开发工具集)。虽然新版本的 Java 一般是后向兼容的,但本书依然使用 JDK 8(对应Java 1.8版本),不过本书中的例子在 JDK 8及其以上的版本中应该都是有效的。如果你想选择新版本的 JDK,我推荐一个具有长期支持(LTS)的版本——在编写本书时,最新的 LTS 版本是 JDK 17。
1. Windows
(1) 按照 Chocolatey 官网中提示的步骤安装 Chocolatey。
(2) 打开 shell 窗口,输入 “choco install jdk8”。执行这条指令需要一些时间,但是一旦完成,Java 也就安装完成了,并且必要的环境变量也会设置完毕。
2. Macintosh
Mac 系统自带的 Java 版本比较旧,有可能无法正确运行本书的示例。所以你首先必须升级到 Java 8。你需要管理员权限来执行以下操作。
(1) 按照 HomeBrew 官网中提示的步骤安装 HomeBrew。然后打开 shell 窗口,执行 brew update 以确保 HomeBrew 升级到最新版本。
(2) 打开 shell 窗口,输入 “brew cask install java”。
当 HomeBrew 和 Java 都安装完毕后,如果你需要的话,后续可以用游客身份运行本书的其他示例。
3. Linux
使用标准软件包管理工具和 shell 命令进行安装。
Ubuntu/Debian 系统:
sudo apt-get update
sudo apt-get install default-jdk
Fedora/Redhat 系统:
su -c "yum install java-1.8.0-openjdk"
2.4 确认安装成功
打开一个新的shell窗口,输入:
java -version
如果一切正常,你应该会看到类似如下内容(版本号和文字可能略有不同):java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)
如果你看到的提示是“命令没有找到或者无法识别”,请仔细回顾一下本章介绍的安装说明。如果之后你依然无法正常安装,请在 Stack Overflow 网站上查找解决方案。
2.5 安装和运行本书示例
成功安装 Java 之后,你可以通过以下过程来安装和运行本书示例,这个过程适用于所有平台。
通过 GitHub 代码仓库下载本书中的示例。
- 将下载的文件解压到你选择的目录中(参见2.2.3节中的相关说明)。
- 使用 Windows 的资源管理器、Mac 的 Finder、Linux 的 Nautilus 或对应的工具打开你解压 OnJava8-Examples 文件的目录,并在此目录中打开一个 shell 窗口。
- 如果你进入了正确的目录,会看到 gradlew 和 gradlew.bat 文件以及大量的其他文件和目录。其中,目录名和章节的英文名是一一对应的。
- 在 shell 窗口里输入 “gradlew run”(对应Windows系统)或者 “./gradlew run”(对应Mac/Linux系统)。
如果你是第一次运行这个程序,Gradle 需要花费一些时间来自行安装以及安装一些其他的工具包。一旦安装完毕,后续的构建和运行就会快得多。
需要注意的是,第一次运行 gradlew 时,需要确保计算机是连接到互联网的,以便 Gradle 可以下载一些必要的工具包。
Gradle基础任务
本书工程代码的构建会产生大量的 Gradle 任务。这是因为 Gradle 使用一种称为约定优于配置(convention over configuration)的运行方式,这意味着即便你只是尝试完成一个非常基础的任务, Gradle 依然会创建很多任务。因此,那些“搭顺风车”的任务要么不适用于本书,要么不能正确运行。下面是一些你可能会用到的 Gradle 任务。
- gradlew compileJava:编译本书中所有可被编译的 Java 文件(有些文件不可编译,仅用于演示语言的错误用法)。
- gradlew run:对于本书中所有可执行的 Java 文件(有些文件是库组件),先编译再执行。
- gradlew test:执行所有的单元测试(相关知识点将会在第16章中讲述)。
- gradlew chapter:ExampleName:编译和运行一个特定的示例程序,比如 gradlew objects:HelloDate。