首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 入門 FAQ 精選 (五):JDK/JRE 區分、環境變數、建構工具、IDE、應用伺服器

     編輯:Java 程式設計入門

FAQ:新手必讀入門知識速查

1. JDK vs JRE vs J2SE 名稱演進

術語含義現代對應
JDKJava Development Kit,開發工具包JDK 17/21 (LTS),含 javac、工具、原始碼
JREJava Runtime Environment,執行環境JRE 17/21,僅含 JVM + 類庫,**JDK 內建 JRE**
J2SEJava 2 Platform Standard Edition (1.2~1.4 時代稱呼)**已更名為 Java SE**,JDK 5.0 (1.5) 起棄用 J2SE 稱呼
Java SE標準版平台規範JDK 實作 Java SE 規範

💡 下載建議:Eclipse Temurin 選擇 JDK (非 JRE),版本鎖定 LTS (17/21),作業系統對應 x64/aarch64。

2. 環境變數配置標準版 (Windows)

# 系統變數 (Win+S → 編輯系統環境變數 → 環境變數 → 系統變數)
JAVA_HOME = C:\Java\jdk-21          # JDK 根目錄 (含 bin/lib)
PATH      = %JAVA_HOME%\bin;%PATH%  # 放最前面,確保優先使用此版本

# 驗證
cmd /k "echo JAVA_HOME=%JAVA_HOME% && java --version && javac --version"

⚠️ 不再需要 手動設定 CLASSPATH (含 ./dt.jar/tools.jar)。Maven/Gradle/模組系統/IDE 會自動構建類別路徑/模組路徑。手動 CLASSPATH 易造成版本衝突、類別載入器洩漏、除錯困難。

3. HelloWorld 驗證完整流程

# 1. 建立專案目錄
mkdir HelloWorld && cd HelloWorld

# 2. 撰寫原始碼 (檔名必須與 public 類別名相同)
cat > HelloWorld.java << 'EOF'
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, Java " + System.getProperty("java.version") + "!");
    }
}
EOF

# 3. 編譯 → 產生 HelloWorld.class
javac HelloWorld.java

# 4. 執行 (類別名,非檔名)
java HelloWorld
# 輸出: Hello, Java 21.0.x!

建構工具:Ant → Maven → Gradle 演進

工具時代特色現狀
Ant2000-2010XML 腳本、程序式、無依賴管理、無約定目錄結構舊專案維護,極少新專案採用
Maven2004-至今約定優於配置、中央倉庫、生命週期、傳遞性依賴、POM 宣告式**企業級主流**,穩定、生態最豐富、IDE 支援最完整
Gradle2012-至今Groovy/Kotlin DSL、增量建構、依賴圖可視化、腳本可程式化、多專案強**新專案首選** (Android、Spring Boot、微服務)、Kotlin DSL 類型安全

Maven 快速上手

# 1. 產生標準專案骨架
mvn archetype:generate -DgroupId=com.example -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

# 2. 專案結構
myapp/
├── pom.xml              # 專案物件模型:座標、依賴、外掛、Profile
├── src/
│   ├── main/java/       # 主程式碼
│   └── test/java/       # 測試碼

# 3. 核心命令
mvn clean compile        # 編譯主程式
mvn test                 # 執行單元測試
mvn package              # 打包 JAR/WAR (target/myapp-1.0-SNAPSHOT.jar)
mvn install              # 安裝至本地倉庫 (~/.m2/repository)
mvn dependency:tree      # 顯示依賴樹
mvn help:effective-pom   # 顯示合併後完整 POM

Gradle (Kotlin DSL) 快速上手

# 1. 初始化專案
gradle init --type java-application --dsl kotlin --name myapp --package com.example

# 2. 核心配置 build.gradle.kts
plugins {
    id("application")
    id("org.jetbrains.kotlin.jvm") version "1.9.20"
}
application { mainClass.set("com.example.Main") }
repositories { mavenCentral() }
dependencies {
    implementation("org.slf4j:slf4j-api:2.0.13")
    testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
}

# 3. 核心命令
./gradlew build          # 編譯、測試、打包
./gradlew run            # 執行應用
./gradlew dependencies   # 依賴報告
./gradlew help --all-task # 列出所有任務

IDE 選型與避坑

IDE推薦指數核心優勢避坑提醒
IntelliJ IDEA Community⭐⭐⭐⭐⭐免費、智能補全、重構、除錯、Maven/Gradle/Git 整合、插件豐富無 Spring/Jakarta EE/資料庫/HTTP Client/K8s 深度支援 (需 Ultimate)
IntelliJ IDEA Ultimate⭐⭐⭐⭐⭐全棧企業開發、框架深度支援、程式碼品質、團隊協作、遠端開發付費訂閱、記憶體佔用較大 (建議 16GB+ RAM)
Eclipse IDE⭐⭐⭐免費、模組化、RCP、大型專案記憶體管理、Jakarta EE 專案UI 舊、索引慢、配置繁瑣、效能不如 IDEA
VS Code + Java Extension Pack⭐⭐⭐⭐輕量、多語言、遠端開發原生、Git 整合優、啟動快重構/除錯/靜態分析深度不足、大型專案需調優
NetBeans / Apache NetBeans⭐⭐⭐視覺化 GUI 建構器、Jakarta EE 支援、免費社群小、啟動慢、記憶體高

⚠️ 新手鐵律:前 2 週禁止用 IDE 智能補全/自動 Import/重構。手寫 javac/java/mvn/gradle 指令,理解建構生命週期、類別路徑、模組路徑、輸出目錄結構。**只有理解底層機制,才能駕馭 IDE 排查環境問題**。


應用伺服器 / Servlet 容器選型

伺服器定位支援規範授權/成本推薦場景
Apache TomcatServlet/JSP 容器Servlet 6.0, JSP 3.1, WebSocket, JASPICApache 2.0 免費Spring Boot 內嵌、微服務、中小型 Web、雲原生首選
JettyServlet 容器/HTTP 伺服器Servlet 6.0, HTTP/2, WebSocket, JMXApache 2.0 / EPL 免費嵌入式、高併發、低延遲、gRPC/HTTP/2 優先
Undertow高效能非阻塞伺服器Servlet 6.0, WebSocket, HTTP/2, 嵌入式優先Apache 2.0 免費Quarkus/WildFly 內嵌、極高併發、反應式
WildFly (JBoss EAP 上游)Jakarta EE 完整實作Jakarta EE 10 (全套: EJB, JPA, CDI, JTA, JMS, Security, Batch, JSON-B...)LGPL 免費 / EAP 訂閱商業支援傳統企業級應用、EJB/CDI/JTA 需求、遷移舊 JBoss 專案
GlassFish / PayaraJakarta EE 參考實作Jakarta EE 10 完整EPL+GPLv2 免費 / Payara 訂閱支援規範相容性測試、教學、標準化部署
WebLogic / WebSphere商業級應用伺服器Jakarta EE / Java EE 完整 + 廠商擴展商業授權 (高昂)大型金融/電信/政府核心系統、廠商支援 SLA 需求

現代架構趨勢

  • 內嵌容器:Spring Boot / Quarkus / Micronaut / Helidon 內嵌 Tomcat/Jetty/Undertow,**無獨立應用伺服器部署**,JAR 即服務。
  • 雲原生:容器映像 (Docker) + Kubernetes 部署,Sidecar 模式掛載 Service Mesh (Istio/Linkerd)。
  • GraalVM Native Image:AOT 編譯為原生執行檔,啟動毫秒級、記憶體極低、無 JIT 預熱,適合 Serverless/FaaS。

專業開發環境檢核清單

  • ☐ JDK 21 LTS (Temurin) 安裝、JAVA_HOME/PATH 配置、java --version 正常
  • ☐ Maven 3.9+ / Gradle 8.5+ 安裝、Wrapper 專案化 (mvnw/gradlew)
  • ☐ IntelliJ IDEA Community/Ultimate 安裝、JDK/建構工具/Git 整合驗證
  • ☐ Git 設定 user.name/user.email/core.autocrlf=input/init.defaultBranch=main
  • ☐ 程式碼風格:Google Java Style 導入 IDE、Spotless 外掛自動格式化
  • ☐ 靜態分析:SpotBugs/PMD/Checkstyle 整合建構流程
  • ☐ 測試:JUnit 5 + Mockito + AssertJ + Testcontainers 標準棧
  • ☐ 文件:javadoc + AsciiDoc (Architecture Decision Records) + OpenAPI/Swagger (REST API)
  • ☐ 容器化:Dockerfile 多階段建構、.dockerignore、非 root 用戶、distroless 基底映像
  • ☐ CI/CD:GitHub Actions / GitLab CI / Jenkins Pipeline — 建構→測試→掃描→打包→部署

「環境是生產力的基礎設施。」花半天建立**標準化、可重現、可版控**的開發環境,能省下未來無數小時的「在我機器上能跑」扯皮與環境排查。專案根目錄的 .sdkmanrc/.tool-versions/pom.xml/build.gradle.kts 就是環境的源碼定義,團隊成員 clone 即用,零口頭傳承。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved