美思 [Java] 程式設計教學:建置開發環境

Java
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

本文介紹建置 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 語法。這已經超出本系列文章的範圍了,故不說明這個部分。

關於作者

身為資訊領域碩士,美思認為開發應用程式的目的是為社會帶來價值。如果在這個過程中該軟體能成為永續經營的項目,那就是開發者和使用者雙贏的局面。

美思喜歡用開源技術來解決各式各樣的問題,但必要時對專有技術也不排斥。閒暇之餘,美思將所學寫成文章,放在這個網站上和大家分享。