1.1 Java 語言簡介與發展歷程
Java 是一門面向對象的高級編程語言,以“跨平臺、安全、穩定”為核心特性,自誕生以來長期占據編程語言排行榜前列,廣泛應用于后端開發、移動端開發、大數據等領域。
1.1.1 起源與核心人物
- 起源背景:1991 年,Sun 公司(后被 Oracle 收購)的“Green 項目”啟動,目標是開發一種能在嵌入式設備(如電視機頂盒)上運行的語言,核心開發者包括 詹姆斯·高斯林(James Gosling)(被稱為“Java 之父”)。
- 語言命名:最初名為“Oak”(橡樹),因商標沖突,1995 年正式更名為“Java”(源自印尼爪哇島,象征“活力與廣泛傳播”)。
- 首次發布:1995 年 Sun 公司在 SunWorld 大會上發布 Java 1.0,同時推出 Java Applet(早期網頁交互技術,后因安全問題逐漸被淘汰)。
1.1.2 關鍵版本迭代(LTS 版本優先)
Java 版本分為“普通版本”和“長期支持版本(LTS)”,LTS 版本提供 5-8 年官方支持,是企業生產環境的首選:
- JDK 1.5(2004 年):里程碑版本,引入泛型、枚舉、注解、foreach 循環、自動裝箱/拆箱等核心特性,奠定現代 Java 基礎。
- JDK 8(2014 年):最經典的 LTS 版本,引入 Lambda 表達式、Stream API、Optional 類、接口默認方法,至今仍是企業主流。
- JDK 11(2018 年):LTS 版本,移除永久代(改用元空間)、支持局部變量類型推斷(
var
關鍵字)、自帶 HttpClient 工具類。 - JDK 17(2021 年):最新 LTS 版本,引入密封類(Sealed Classes)、Record 類(簡化實體類編寫)、增強 Switch 表達式,性能大幅優化。
1.1.3 現在與未來
- 歸屬權:2009 年 Oracle 收購 Sun 公司,獲得 Java 版權與開發權,目前 Oracle 每 6 個月發布一個普通版本,每 3 年發布一個 LTS 版本。
- 生態地位:Java 生態是編程語言中最完善的之一,擁有海量類庫、框架(Spring、MyBatis)和工具,支持從小型應用到大型分布式系統的開發。
1.2 Java 核心優勢與應用場景
Java 能長期流行,核心在于其獨特的設計理念和廣泛的適用性,具體優勢與場景如下:
1.2.1 四大核心優勢
-
跨平臺性(一次編寫,到處運行)
這是 Java 最核心的優勢。Java 源文件編譯后生成 字節碼文件(.class),不直接依賴操作系統,而是通過 Java 虛擬機(JVM) 解釋執行——不同操作系統(Windows、macOS、Linux)只需安裝對應版本的 JVM,即可運行同一套字節碼文件。
? 示例:在 Windows 上編寫的 Java 程序,無需修改代碼,復制到 Linux 服務器上(安裝 Linux 版 JVM)即可直接運行。 -
純面向對象編程(OOP)
Java 嚴格遵循面向對象思想,萬物皆可“類與對象”,支持封裝、繼承、多態三大特性,能更好地模擬現實世界,降低復雜系統的開發與維護成本。
? 例外:基本數據類型(如int
、char
)不是對象,但可通過“包裝類”(如Integer
)轉為對象。 -
安全性與穩定性
- 安全機制:Java 自帶“沙箱機制”(限制程序訪問本地資源)、類加載器(防止惡意代碼篡改核心類)、異常處理(避免程序崩潰),適合開發金融、支付等對安全要求高的系統。
- 內存管理:通過 垃圾回收器(GC) 自動回收無用內存,無需手動釋放(對比 C/C++ 的
free
/delete
),大幅減少內存泄漏問題。
-
生態豐富與社區活躍
- 官方提供龐大的 Java 核心類庫(JDK API),涵蓋 IO、集合、多線程、網絡等功能,無需重復造輪子。
- 第三方框架(Spring Boot、MyBatis、Dubbo)、工具(Maven、Git)、社區(Stack Overflow、GitHub)成熟,問題能快速找到解決方案。
1.2.2 四大主流應用場景
應用領域 | 核心技術/框架 | 典型案例 |
---|---|---|
后端開發 | Java EE、Spring Boot、Spring Cloud | 電商系統(淘寶、京東)、金融系統(銀行核心系統) |
移動端開發 | Android 原生開發 | 手機 APP(早期微信、抖音核心模塊) |
大數據開發 | Hadoop、Spark、Flink | 數據計算(用戶行為分析、實時推薦) |
桌面應用開發 | Swing、AWT(傳統)、JavaFX | 企業內部工具(如報表系統、管理端) |
1.3 開發環境搭建(JDK 下載、安裝、環境變量配置)
Java 開發的基礎是 JDK(Java Development Kit,Java 開發工具包),必須先完成 JDK 安裝與環境變量配置,才能編譯和運行 Java 程序。以下以 JDK 17(LTS 版本,Windows 10/11 系統) 為例,步驟詳細到“小白可follow”:
1.3.1 第一步:下載 JDK
- 訪問官方地址:打開 Oracle 官網 JDK 下載頁(鏈接),建議用 LTS 版本(如“Java SE 17 LTS”)。
- 選擇系統版本:
- Windows 系統:根據電腦位數選擇(64 位選“Windows x64 Installer”,exe 格式;32 位選“Windows x86 Installer”,目前主流電腦均為 64 位)。
- macOS 系統:選“macOS x64.dmg”(Intel 芯片)或“macOS AArch64.dmg”(M1/M2 芯片)。
- Linux 系統:選“Linux x64 RPM Package”或“Linux x64 Compressed Archive”(解壓版)。
- 登錄 Oracle 賬號:Oracle 要求登錄后才能下載,若無賬號,點擊“Create Account”注冊(免費,填寫郵箱、密碼即可)。
- 開始下載:登錄后點擊對應版本的“Download”,等待 exe 文件下載完成(約 200-300MB)。
1.3.2 第二步:安裝 JDK
- 雙擊運行安裝包:打開下載的
jdk-17_windows-x64_bin.exe
,彈出安裝向導,點擊“下一步”。 - 選擇安裝路徑(關鍵!):
- 建議 自定義路徑(默認路徑在 C 盤,若 C 盤空間不足可改到其他盤),例如:
D:\Program Files\Java\jdk-17
(路徑中不能有中文、空格或特殊字符,否則后續會報錯)。 - 記住這個路徑(后續配置環境變量要用),點擊“下一步”。
- 建議 自定義路徑(默認路徑在 C 盤,若 C 盤空間不足可改到其他盤),例如:
- 等待安裝完成:安裝過程約 1-2 分鐘,無需額外操作,最后點擊“關閉”。
?? 注意:JDK 11 及以上版本無需單獨安裝 JRE(JRE 已集成在 JDK 中,可通過
jlink
工具生成獨立 JRE,新手暫無需關注)。
1.3.3 第三步:配置環境變量(Windows 系統)
環境變量的作用是讓系統“找到”JDK 的編譯工具(javac.exe
)和運行工具(java.exe
),否則在命令行輸入 javac
會提示“不是內部或外部命令”。
步驟 1:打開環境變量設置
- 方法 1:右鍵“此電腦” → “屬性” → “高級系統設置” → “環境變量”。
- 方法 2:Win + R 輸入
sysdm.cpl
→ 回車 → “高級” → “環境變量”。
步驟 2:配置“JAVA_HOME”變量(用戶變量/系統變量均可,推薦用戶變量)
- 在“用戶變量”欄點擊“新建”,彈出“新建用戶變量”窗口:
- 變量名:
JAVA_HOME
(大小寫敏感,必須全大寫)。 - 變量值:粘貼第一步的 JDK 安裝路徑(例如
D:\Program Files\Java\jdk-17
)。
- 變量名:
- 點擊“確定”保存。
步驟 3:配置“Path”變量
- 在“用戶變量”欄找到“Path”變量,雙擊打開(或選中后點擊“編輯”)。
- 點擊“新建”,輸入
%JAVA_HOME%\bin
(%JAVA_HOME%
是引用上一步的 JAVA_HOME 變量,自動指向 JDK 的 bin 目錄)。 - 再點擊“新建”,輸入
%JAVA_HOME%\jre\bin
(JDK 17 無單獨 JRE 目錄,可省略此步,若后續報錯再補充)。 - 點擊“上移”,將這兩個路徑移到最頂部(避免與其他軟件的 Java 版本沖突),然后依次點擊“確定”關閉所有窗口。
步驟 4:驗證配置是否成功
- 打開 新的命令提示符(CMD)(注意:必須關閉舊 CMD 重新打開,否則環境變量不生效)。
- 輸入以下兩個命令,若輸出類似結果,則配置成功:
- 命令 1:
java -version
(查看 Java 運行環境版本)
? 成功輸出:java version "17.0.9" 2023-10-17 LTS
(版本號可能因下載的 JDK 版本略有不同)。 - 命令 2:
javac -version
(查看 Java 編譯器版本)
? 成功輸出:javac 17.0.9
。
- 命令 1:
? 常見錯誤與解決:
- 若提示“‘javac’ 不是內部或外部命令”:檢查 JAVA_HOME 路徑是否正確,Path 中是否添加
%JAVA_HOME%\bin
,且是否打開新 CMD。- 若提示“找不到或無法加載主類”:暫不涉及,后續編寫程序時再排查。
1.4 主流 IDE 使用(IntelliJ IDEA / Eclipse 基礎操作)
IDE(集成開發環境)能簡化 Java 開發(自動補全、語法檢查、一鍵運行),主流工具是 IntelliJ IDEA(簡稱 IDEA) 和 Eclipse,新手推薦 IDEA 社區版(免費、功能足夠入門)。
1.4.1 IntelliJ IDEA(社區版)使用教程
1. 下載與安裝
- 官網地址:IntelliJ IDEA 下載頁,選擇“Community”(社區版,免費),下載對應系統版本。
- 安裝步驟:
- 雙擊安裝包,勾選“Create Desktop Shortcut”(創建桌面快捷方式)、“Associate .java files”(關聯 .java 文件),點擊“Next”。
- 安裝路徑建議自定義(如
D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2
),點擊“Install”,等待完成。
2. 首次啟動配置
- 首次打開 IDEA,選擇“Skip Remaining and Set Defaults”(跳過默認配置,新手無需修改)。
- 主題選擇:可在“Appearance & Behavior → Appearance”中切換“Light”(淺色)或“Darcula”(深色,保護眼睛)。
- 配置 JDK:
- 打開“File → Project Structure → SDKs”,點擊“+”號,選擇“JDK”。
- 瀏覽到 JDK 安裝路徑(如
D:\Program Files\Java\jdk-17
),點擊“OK”,IDEA 會自動識別 JDK 版本。
3. 創建第一個 Java 項目
-
點擊“New Project”,進入項目創建界面:
- 左側選擇“Java”,右側“Project SDK”選擇已配置的 JDK 17,點擊“Next”。
- 取消勾選“Create project from template”(不使用模板,從零開始),點擊“Next”。
- 項目命名:例如“JavaHelloWorld”,項目路徑自定義(如
D:\JavaProjects\JavaHelloWorld
),點擊“Finish”。
-
創建“包(Package)”:
- 包用于分類管理 Java 類(避免類名沖突),右鍵
src
目錄 → “New → Package”,輸入包名(命名規范:全小寫,多層級用點分隔,如com.example.demo
),點擊“OK”。
- 包用于分類管理 Java 類(避免類名沖突),右鍵
-
創建“Java 類(Class)”:
- 右鍵包名(
com.example.demo
) → “New → Java Class”,類名輸入“HelloWorld”(命名規范:首字母大寫,駝峰式),點擊“OK”。
- 右鍵包名(
4. 編寫與運行代碼
- 在 HelloWorld 類中輸入代碼(IDEA 會自動補全):
package com.example.demo; // 包名,必須在類的最頂部public class HelloWorld {// main 方法:程序入口,固定格式public static void main(String[] args) {// 輸出語句:在控制臺打印“Hello World!”System.out.println("Hello World!");} }
- 運行程序:
- 方法 1:右鍵代碼編輯區 → “Run ‘HelloWorld.main()’”。
- 方法 2:點擊類名旁的綠色三角形圖標(??),選擇“Run ‘HelloWorld’”。
- 查看結果:底部“Console”面板會輸出
Hello World!
,表示運行成功。
5. 常用快捷鍵(提升效率)
psvm
+ 回車:快速生成 main 方法(public static void main(String[] args)
)。sout
+ 回車:快速生成輸出語句(System.out.println();
)。Ctrl + D
:復制當前行到下一行。Ctrl + Y
:刪除當前行。Ctrl + /
:單行注釋(//)或取消注釋。
1.4.2 Eclipse(開源免費)簡要對比
Eclipse 是老牌 IDE,開源免費,但界面和操作流暢度略遜于 IDEA,適合習慣輕量級工具的用戶:
- 下載:官網 Eclipse 下載頁,選擇“Eclipse IDE for Java Developers”。
- 核心操作:創建項目(File → New → Java Project)、創建類(New → Class)、運行(右鍵 → Run As → Java Application),流程與 IDEA 類似。
- 優缺點:占用內存小,但自動補全、代碼提示功能不如 IDEA 智能,新手建議優先選 IDEA 社區版。
1.5 第一個 Java 程序:HelloWorld(代碼解析 + 運行流程)
“Hello World”是所有編程語言的入門案例,通過它可理解 Java 程序的基本結構、編譯與運行邏輯。
1.5.1 完整代碼與逐行解析
以下是標準的 HelloWorld 代碼(基于 IDEA 中的 com.example.demo.HelloWorld
類):
// 1. 包聲明:指定當前類所在的包,必須放在代碼最頂部
package com.example.demo;// 2. 類聲明:public 是訪問修飾符,HelloWorld 是類名(必須與文件名一致)
public class HelloWorld {// 3. main 方法:程序的“入口”,JVM 運行程序時會首先執行此方法// public:公開訪問權限,JVM 可調用// static:靜態方法,無需創建對象即可調用// void:無返回值(不需要向調用者返回結果)// main:方法名(固定,不能修改)// String[] args:參數數組,用于接收命令行傳入的參數(新手暫無需使用)public static void main(String[] args) {// 4. 輸出語句:調用 System 類的 out 對象的 println 方法,在控制臺打印字符串// System:Java 核心類庫中的類(位于 java.lang 包,無需手動導入)// out:System 類的靜態成員變量(類型是 PrintStream)// println:PrintStream 類的方法,作用是“打印字符串并換行”System.out.println("Hello World!");}
}
?? 必須遵守的語法規則:
- 類名與文件名一致:若類用
public
修飾,文件名必須和類名完全相同(大小寫敏感),例如HelloWorld.java
對應public class HelloWorld
。- 分號結尾:Java 語句必須以
;
結束(println("...");
后的分號不能漏)。- 大括號配對:
class
、main
方法的代碼塊必須用{}
包裹,且要對齊(IDE 會自動格式化)。
1.5.2 兩種運行方式(IDE 可視化 + 命令行)
方式 1:IDE 中運行(推薦新手)
如 1.4.1 節所述,右鍵類 → Run,直接在 Console 面板查看結果,IDE 會自動完成“編譯 → 運行”的全過程,無需手動操作。
方式 2:命令行運行(理解底層流程)
通過命令行運行,能清晰看到 Java 程序“源文件 → 字節碼 → 運行”的步驟,適合理解原理:
-
找到 .java 源文件路徑:
若 IDEA 項目路徑是D:\JavaProjects\JavaHelloWorld
,則 .java 文件路徑為D:\JavaProjects\JavaHelloWorld\src\com\example\demo\HelloWorld.java
(包名對應文件夾層級)。 -
編譯:javac 命令生成 .class 字節碼文件:
- 打開 CMD,通過
cd
命令進入 .java 文件所在目錄:
cd D:\JavaProjects\JavaHelloWorld\src\com\example\demo
。 - 輸入編譯命令:
javac HelloWorld.java
(javac
是 JDK 的編譯器工具)。 - 若代碼無語法錯誤,執行后會在當前目錄生成
HelloWorld.class
文件(字節碼文件,JVM 可識別的格式)。
- 打開 CMD,通過
-
運行:java 命令執行字節碼:
- 注意:運行時需要“帶包名”執行,因此不能在 demo 目錄下直接運行,需回到 src 目錄(包名的根目錄):
cd ../../../../
(從 demo 目錄回到 src 目錄)。 - 輸入運行命令:
java com.example.demo.HelloWorld
(java
是 JVM 的運行工具,后面跟“包名.類名”,無需加 .class 后綴)。 - 執行后,CMD 會輸出
Hello World!
,表示運行成功。
- 注意:運行時需要“帶包名”執行,因此不能在 demo 目錄下直接運行,需回到 src 目錄(包名的根目錄):
1.5.3 常見錯誤與解決
錯誤現象 | 原因分析 | 解決方法 |
---|---|---|
編譯時提示“找不到符號” | 變量名/方法名拼寫錯誤(如 sout 寫成 soutt ) | 檢查代碼拼寫,確保與標準語法一致 |
運行時提示“找不到或無法加載主類” | 運行命令未帶包名,或包名與路徑不匹配 | 回到 src 目錄,用“包名.類名”格式運行(如 java com.example.demo.HelloWorld ) |
編譯時提示“類 HelloWorld 是公共的,應在名為 HelloWorld.java 的文件中聲明” | 文件名與 public 類名不一致(如文件名是 helloworld.java ) | 將文件名改為與類名完全一致(大小寫敏感) |
1.6 Java 運行機制(JVM、JRE、JDK 關系 + 跨平臺原理)
理解 Java 運行機制,是掌握 Java 跨平臺特性的核心,也是后續學習 JVM 調優、性能優化的基礎。
1.6.1 JVM、JRE、JDK 三者的關系
首先明確三個核心概念的定義,再通過“包含關系”和“比喻”理解它們的作用:
組件 | 英文全稱 | 核心作用 | 包含內容 |
---|---|---|---|
JDK | Java Development Kit | Java 開發工具包,供開發者編寫、編譯程序 | JRE + 開發工具(javac、java、javadoc 等) |
JRE | Java Runtime Environment | Java 運行環境,供用戶運行 Java 程序 | JVM + 核心類庫(java.lang、java.util 等) |
JVM | Java Virtual Machine | Java 虛擬機,負責將字節碼轉為機器碼執行 | 類加載器、執行引擎、垃圾回收器等 |
包含關系(從大到小):
JDK ? JRE ? JVM + 核心類庫
(JDK 包含 JRE,JRE 包含 JVM 和運行所需的核心類庫)
通俗比喻:
- 把 Java 程序比作“蛋糕”:
- JDK 是“全套烘焙工具 + 食材 + 烤箱”(開發者用它做蛋糕)。
- JRE 是“食材 + 烤箱”(用戶用它加熱蛋糕吃,不需要烘焙工具)。
- JVM 是“烤箱”(核心設備,負責把“生蛋糕坯(字節碼)”烤成“熟蛋糕(運行結果)”)。
1.6.2 Java 程序完整運行流程
Java 程序從編寫到運行,需經歷 4 個步驟,每個步驟的作用如下:
-
編寫:創建 .java 源文件
開發者用文本編輯器(或 IDE)編寫 Java 代碼,保存為.java
后綴的源文件(人類可讀的文本格式)。 -
編譯:javac 編譯為 .class 字節碼
JDK 的javac
編譯器讀取 .java 文件,檢查語法錯誤后,將其轉換為 字節碼文件(.class)——字節碼是一種“中間代碼”,既不是機器碼,也不是源文件,只能被 JVM 識別。
? 關鍵:字節碼文件是“平臺無關”的,在 Windows 上編譯的 .class 文件,可直接復制到 Linux 上運行。 -
加載:JVM 類加載器加載 .class
運行java 類名
命令時,JVM 的“類加載器(ClassLoader)”會根據類名找到對應的 .class 文件,將其加載到 JVM 的內存中(方法區),并創建對應的 Class 對象(用于后續實例化)。 -
執行:JVM 執行字節碼
JVM 的“執行引擎”會將字節碼轉換為當前操作系統能識別的 機器碼(平臺相關),然后交給 CPU 執行,最終輸出運行結果。
優化:為提升性能,JVM 會對“熱點代碼”(頻繁執行的代碼)采用 JIT(即時編譯) 技術,將其直接編譯為機器碼緩存起來,避免每次都解釋執行。
流程示意圖(文字版):
.java 源文件 → [javac 編譯] → .class 字節碼文件 → [JVM 類加載] → [JVM 執行引擎(解釋/編譯為機器碼)] → 操作系統執行 → 輸出結果
1.6.3 跨平臺原理(為什么“一次編寫,到處運行”)
Java 跨平臺的核心在于 “字節碼 + JVM”的分離設計:
- 字節碼平臺無關:無論在哪個操作系統上編譯,生成的 .class 字節碼格式都是統一的,不存在“Windows 字節碼”“Linux 字節碼”的區別。
- JVM 平臺相關:Oracle 為不同操作系統提供了對應的 JVM 實現(如 Windows 版 JVM、Linux 版 JVM),這些 JVM 能將統一的字節碼轉換為當前系統的機器碼。
例如:
- 在 Windows 上:
Java 代碼 → 字節碼 → Windows 版 JVM → Windows 機器碼 → 運行
。 - 在 Linux 上:
同一字節碼 → Linux 版 JVM → Linux 機器碼 → 運行
。
正是因為 JVM 屏蔽了不同操作系統的差異,開發者才無需為每個平臺編寫不同的代碼,實現“一次編寫,到處運行”。