前言:從零開始的 Java 開發之路
Java 作為企業級開發主流語言超過二十年,擁有龐大生態系與跨平台特性。本文整理從 JDK 安裝、環境變數設定、第一支程式編譯執行,到主流 IDE、建構工具、伺服器、框架與資料庫的完整入門指南,幫助初學者快速建立開發環境並掌握核心工具鏈。
一、JDK 安裝與環境設定
1. 版本選擇建議(2024 年更新)
- LTS 版本:Java 17(2021/9 發布,支援至 2029/9)、Java 21(2023/9 發布,支援至 2031/9)
- 最新特性版:Java 22(2024/3)、Java 23(2024/9)
- 建議:生產環境優先選 LTS;學習新特性可用最新版
2. 主流 JDK 發行版比較
| 發行版 | 特色 | 授權 | 適用場景 |
| Eclipse Temurin (Adoptium) | 社群驅動、TCK 認證、長期更新 | GPL v2 + CE | 通用首選 |
| Oracle JDK | 官方參考實作、商用需付費訂閱 | OTN License | 企業付費支援 |
| Amazon Corretto | AWS 優化、免費長期支援 | GPL v2 + CE | 雲端/AWS 部署 |
| Azul Zulu | 多平台支援廣、商用免費版可用 | GPL v2 + CE | 嵌入式/多架構 |
| Microsoft Build of OpenJDK | Windows/Azure 優化 | GPL v2 + CE | 微軟生態系 |
3. 環境變數設定(Windows / macOS / Linux 通用原則)
# 核心變數
JAVA_HOME=/path/to/jdk-21 # JDK 安裝根目錄
PATH=$JAVA_HOME/bin:$PATH # 加入 bin 目錄讓 java/javac 可直接執行
# 選擇性(現代專案建議由建構工具管理,不建議全域 CLASSPATH)
# CLASSPATH=.:$JAVA_HOME/lib/tools.jar
驗證安裝
$ java -version
openjdk version "21.0.2" 2024-01-16
OpenJDK Runtime Environment Temurin-21.0.2+13 (build 21.0.2+13)
OpenJDK 64-Bit Server VM Temurin-21.0.2+13 (build 21.0.2+13, mixed mode, sharing)
$ javac -version
javac 21.0.2
二、第一支 Java 程式:編譯與執行
HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Java World!");
// Java 11+ 可直接單檔執行:java HelloWorld.java
}
}
傳統編譯執行流程
$ javac HelloWorld.java # 編譯產生 HelloWorld.class
$ java HelloWorld # 執行位元碼
Hello, Java World!
Java 11+ 單檔案直接執行
$ java HelloWorld.java # 無需預先編譯,直接編譯記憶體並執行
三、整合開發環境(IDE)選擇指南
| IDE | 授權 | 優勢 | 適用對象 |
| IntelliJ IDEA | Community 免費 / Ultimate 付費 | 智能提示最強、重構工具豐富、Spring/Kotlin/DSL 支援最佳 | 專業開發首選、企業團隊標準 |
| Eclipse IDE | EPL 開源免費 | 插件生態龐大、模組化架構、RCP 應用開發 | 老牌企業專案、插件開發者 |
| VS Code + Extension Pack for Java | MIT 免費 | 輕量快啟、多語言混合專案、Git 整合優、遠端開發支援好 | 全端工程師、微服務、雲原生開發 |
| NetBeans / Apache NetBeans | Apache 2.0 免費 | GUI Builder (Matisse) 優秀、Java EE/Maven 內建支援好 | 教學、Swing 桌面應用快速開發 |
IntelliJ IDEA 新手必裝外掛
- Key Promoter X(快捷鍵學習)
- SonarLint(靜態分析)
- MyBatis-Plus / JPA Buddy(ORM 輔助)
- Rainbow Brackets(括號著色)
四、建構工具:Maven vs Gradle
Maven:慣例優於配置、XML 宣告式
4.0.0
com.example
my-app
1.0.0
21
21
UTF-8
org.junit.jupiter
junit-jupiter
5.10.2
test
常用指令:`mvn clean compile test package`、`mvn dependency:tree`、`mvn versions:display-plugin-updates`
Gradle:Groovy/Kotlin DSL、增量建構、效能更優
// build.gradle.kts (Kotlin DSL)
plugins {
java
application
}
group = "com.example"
version = "1.0.0"
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
}
repositories { mavenCentral() }
dependencies {
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
}
application { mainClass.set("com.example.HelloWorld") }
常用指令:`./gradlew build`、`./gradlew dependencies`、`./gradlew run`
選擇建議
- 企業既有 Maven 專案多 → 繼續用 Maven
- 新專案、多模組、需自訂任務邏輯 → 推薦 Gradle (Kotlin DSL)
- Android 專案 → 必須用 Gradle
五、主流框架與技術棧概覽
| 領域 | 主流技術 | 學習優先級 |
| Web 框架 | Spring Boot 3.x、Spring MVC、Spring WebFlux | ⭐⭐⭐ 必學 |
| 資料存取 | Spring Data JPA、MyBatis-Plus、JdbcTemplate、QueryDSL | ⭐⭐⭐ 必學 |
| 安全認證 | Spring Security 6、OAuth2/OIDC、JWT、SAML | ⭐⭐ 進階 |
| 微服務 | Spring Cloud 2023、Netflix Eureka、Gateway、Config、Resilience4j | ⭐⭐ 進階 |
| 訊息隊列 | Apache Kafka、RabbitMQ、RocketMQ、Pulsar | ⭐⭐ 進階 |
| 快取 | Redis (Lettuce/Redisson)、Caffeine (本地)、Hazelcast | ⭐⭐ 進階 |
| 觀測性 | Micrometer + Prometheus + Grafana、OpenTelemetry、SkyWalking | ⭐ 進階 |
| 測試 | JUnit 5、Mockito、Testcontainers、RestAssured、ArchUnit | ⭐⭐⭐ 必學 |
六、應用伺服器與部署選項
| 類型 | 代表產品 | 特色 |
| Servlet 容器 | Apache Tomcat 10.1+、Jetty 12+、Undertow | 輕量、嵌入式友善、Spring Boot 內建 |
| 完整 Jakarta EE | WildFly 32+、Payara、GlassFish、Open Liberty | 標準規範完整、企業級功能內建 |
| 雲原生 / GraalVM | Quarkus、Micronaut、Spring Native (AOT) | 啟動快、記憶體少、容器化優先 |
| 雲平台 PaaS | AWS Elastic Beanstalk、Google App Engine、Azure Spring Apps、Heroku | 免運維、自動擴縮 |
| 容器編排 | Kubernetes (EKS/GKE/AKS)、Docker Swarm、Nomad | 生產標準、彈性調度 |
七、資料庫與連線池
| 類型 | 推薦驅動/連線池 | 備註 |
| 關聯式 | HikariCP (預設最快)、PostgreSQL、MySQL、Oracle、SQL Server | Spring Boot 預設 HikariCP |
| 文件型 | MongoDB (Sync/Reactive Driver)、Couchbase | Spring Data MongoDB |
| 鍵值/快取 | Redis (Lettuce/Redisson)、Dragonfly | Spring Data Redis |
| 時序/分析 | InfluxDB、TimescaleDB、ClickHouse、Apache Druid | 特定場景選用 |
| 嵌入式/測試 | H2、HSQLDB、Testcontainers (真實 DB) | 測試環境首選 Testcontainers |
八、版本控制與 CI/CD
- Git:唯一標準,採用 Git Flow / Trunk Based Development / GitHub Flow
- CI/CD 平台:GitHub Actions、GitLab CI、Jenkins、CircleCI、Azure DevOps
- 品質閘門:SonarQube、SpotBugs、Checkstyle、OWASP Dependency Check、Snyk
九、學習資源與社群推薦
| 類型 | 推薦資源 |
| 官方文件 | Oracle Java Documentation、Spring Reference |
| 經典書籍 | 《Effective Java 3rd》Joshua Bloch、《Java Concurrency in Practice》Brian Goetz、《Spring in Action 6th》Craig Walls |
| 線上教學 | Baeldung、Java Guides、O'Reilly Learning、Coursera/edX 相關課程 |
| 技術社群 | Reddit r/java、Stack Overflow、V2EX Java 節點、掘金、InfoQ 中文站 |
| 新聞周刊 | Java Weekly、Baeldung Weekly、Inside Java (Oracle 官方部落格) |
十、新手常見坑與避雷指南
- 字串比較用 == → 必須用 `.equals()` 或 `Objects.equals()`
- 集合迴圈中修改集合 → 使用 `Iterator.remove()` 或串流 API
- BigDecimal 建構子用 double → 用 `BigDecimal.valueOf(double)` 或字串建構子
- 忽略資源關閉 → 一律使用 try-with-resources
- 生產環境用 System.out.println → 接入 SLF4J + Logback/Log4j2
- 浮點數金額計算 → 嚴禁 float/double,必用 BigDecimal
- 未處理異常就吞掉 → 至少記錄日誌或包裝重拋
總結
Java 生態雖大,但核心路徑清晰:JDK 21 LTS + IntelliJ IDEA + Gradle + Spring Boot 3 + PostgreSQL/Redis + Docker/K8s + GitHub Actions 組成現代主流技術棧。建議初學者先跑通「Hello World → REST API → JPA 資料存取 → 單元測試 → 容器化部署」完整流程,再逐步深入併發、JVM 調優、微服務架構等進階主題。保持動手實作、閱讀原始碼、參與開源貢獻,是邁向資深工程師的最佳捷徑。