前言
本文介紹建置 Java 開發環境的過程。
下載及安裝 JDK
Windows
到 Adoptium 下載 OpenJDK 的安裝程式。建議選擇 Temurin 17,即 OpenJDK 17。
另一個方式是用 Chocolatey 來安裝。開啟具有管理員權限的終端機,輸入以下指令:
> choco install openjdk17
macOS
到 Adoptium 下載 OpenJDK 的安裝程式 (PKG 包)。建議選擇 Temurin 17,即 OpenJDK 17。
另一個方式是用 Homebrew 來安裝。輸入以下指令:
$ brew install openjdk
GNU/Linux
雖然主流 GNU/Linux 發行版會打包 OpenJDK,不一定能取得最新版本。所以,這裡使用 SDKMAN 來安裝 OpenJDK。SDKMAN 是 Java 平台套件管理程式,可以安裝許多 Java 平台相關的開發工具。
使用以下指令安裝 SDKMAN:
$ curl -s "https://get.sdkman.io" | bash
重開終端機模擬器,輸入以下指令:
$ sdk install java
(選擇性) 安裝 Gradle
Java 沒有原生的專案管理程式。常見的方式是用 IDE 來管理 Java 專案。如果不想被特定 IDE 限制住,則可以使用 Gradle 來管理 Java 專案。
Windows
正規的方式是到 Gradle 的官方網站下載壓縮檔後,自行決定安裝位置和設置 PATH 環境變數。
另一個方式是使用 Chocolatey 來安裝。開啟具有管理員權限的終端機,輸入以下指令:
> choco install gradle
即使使用者尚未安裝 Java,Chocolatey 的 Gradle 套件不會強制安裝 Java。使用者可事後自行決定要安裝那一種 Java 實作品。這是因為 Java 實作品有很多種,不宜強制寫入 Gradle 套件的相依性。
macOS
正規的方式是到 Gradle 的官方網站下載壓縮檔後,自行決定安裝位置和設置 PATH 環境變數。
另一個方式是用 Homebrew 來安裝。輸入以下指令:
$ brew install gradle
Homebrew 的 gradle
套件相依於 openjdk
套件。
GNU/Linux
主流的 GNU/Linux 通常會打包 Gradle。但系統所提供的 Gradle 版通常較舊。仍建議使用 SDKMAN 安裝最新版本的 Gradle。輸入以下指令來安裝:
$ sdk install gradle
選擇支援 Java 的 IDE 或編輯器
由於撰寫 Java 程式時,需考慮套件管理,VS Code 往往不是最佳選擇。目前來說,比較好的選擇是 IntelliJ IDEA。雖然這套 IDE 比較吃記憶體,該開發環境在反應速度上也是較即時的。若不想付費,可以先用 Community 版本。日後需要進階功能,再轉用 Ultimate 版本即可。
檢查系統的 Java 版本
使用 java -version
(只有一個 hyphen) 來檢查系統的 Java 執行器版本。像是以下範例指令:
$ java -version
openjdk version "17.0.1" 2021-10-19
OpenJDK Runtime Environment Temurin-17.0.1+12 (build 17.0.1+12)
OpenJDK 64-Bit Server VM Temurin-17.0.1+12 (build 17.0.1+12, mixed mode, sharing)
使用 javac -version
(只有一個 hyphen) 來檢查系統的 Java 編譯器版本。像是以下範例指令:
$ javac -version
javac 17.0.1
若系統上只有 java
卻沒有 javac
,代表系統上的 Java 平台僅有 JRE 而非 JDK。請將 JRE 移除後重新安裝 JDK。
使用 IntelliJ IDEA Community 版本管理專案
由於 Java 沒有原生的專案管理程式,使用 IDE 附帶的專案管理功能是常見的選項。在學習 Java 的階段,不需要考慮團隊協作,使用 IDE 來管理專案即可。
(選擇性) 使用 Gradle 管理專案
不同開發者所用的開發環境可能相異。為了因應這種情境,應該使用不和特定 IDE 綁定的專案管理軟體。以 Java 來說,Gradle 是常見的選項。本節展示使用 Gradle 建立 Java 專案的過程。
建立空目錄:
$ mkdir myapp
將工作目錄 (working directory) 移到該目錄的根目錄:
$ cd myapp
使用 gradle init
指令來初始化專案,接著要回答數個問題:
$ gradle init
選擇專案類型:
Starting a Gradle Daemon (subsequent builds will be faster)
Select type of project to generate:
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4] 2
這裡選擇 application (應用程式)。這種型態的專案會產生有主函式的 driver class。
選擇專案所使用的語言:
Select implementation language:
1: C++
2: Groovy
3: Java
4: Kotlin
5: Scala
6: Swift
Enter selection (default: Java) [1..6] 3
本系列文章的目的是學習 Java,故此處選擇 Java。
要將專案拆分成子專案嗎?
Split functionality across multiple subprojects?:
1: no - only one application project
2: yes - application and library projects
Enter selection (default: no - only one application project) [1..2] 1
目前不需要把程式碼分那麼細,故選否。
選擇專案所用的腳本語言:
Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Groovy) [1..2] 1
雖然 Kotlin 在近年來走紅,仍然建議使用 Groovy。因為後者和 Java 的語法相容性高,學習曲線較平緩。而且我們之後會學習 Groovy,沒有理由學習另一種 Java 平台語言。
選擇測試程式所用的框架:
Select test framework:
1: JUnit 4
2: TestNG
3: Spock
4: JUnit Jupiter
Enter selection (default: JUnit Jupiter) [1..4] 1
一開始學語法時不會用到這個部分。一般先選老牌的 JUnit。若願意使用 Groovy,也可以選 Spock。
設置專案名稱:
Project name (default: myapp):
設置專案套件名稱:
Source package (default: myapp):
在專案的 app\src\main\java\myapp\App.java 即為 Java 原始碼。練習語法時,將程式碼寫在該檔案內。
修改完後,輸入 gradle run
即可編譯及執行專案:
$ gradle run
> Task :app:run
Hello World!
BUILD SUCCESSFUL in 7s
2 actionable tasks: 2 executed
要修改專案設置的話,要學習 Gradle 語法。這已經超出本系列文章的範圍了,故不說明這個部分。