Java 語言最早命名為 Oak,由 James Gosling 等人為嵌入式消費電子設計。後重新定位於互聯網,確立了「一次編寫,到處運行」的核心願景。Java 吸收了 C/C++ 的語法精華,同時摒棄了指針、操作符重載、多重繼承等複雜且不安全特性,引入垃圾回收、強類型檢查、異常處理機制,成為兼具開發效率與運行健壯性的主流語言。
| 元素 | 說明 | 示例 |
|---|---|---|
| 標識符 | 變量、類、方法、包名稱 | userName, UserService, com.example |
| 關鍵字 | 語言保留字,不可作標識符 | class, interface, extends, try, volatile (共 50+ 個) |
| 字面量 | 固定值表示 | 123, 3.14f, 'A', "Hello", true, null |
| 運算符 | 表達式運算符號 | +, -, *, /, %, ++, &&, ||, ?:, instanceof |
| 分隔符 | 代碼結構定界 | {}, (), [], ;, ,, ., ... |
String s = "abc"; 創建 java.lang.String **不可變對象**。byte[] + coder (Latin-1/UTF-16) 緊湊存儲,節省內存。SecurityManager 實現:checkRead, checkWrite, checkConnect, checkPropertyAccess 等。| 層面 | 機制 | 關鍵點 |
|---|---|---|
| 語言特性 | 無指針、強類型、數組邊界檢查、自動內存管理 | 編譯期 + 運行期雙重保障,消除緩衝區溢出、懸空指針等 C/C++ 常見漏洞 |
| 資源訪問控制 | SecurityManager + Permission 體系 | 細粒度權限: FilePermission, SocketPermission, PropertyPermission, RuntimePermission 等 |
| 代碼簽名與信任 | JAR 簽名 + 證書鏈 + 策略文件 | 驗證代碼來源完整性,授予對應權限 (如簽名代碼可讀寫特定目錄) |
Bootstrap ClassLoader (C++ 實現, 加載 jre/lib/rt.jar 等核心庫)
↑ 父加載器
Extension ClassLoader (加載 jre/lib/ext/*.jar)
↑ 父加載器
Application / System ClassLoader (加載 classpath 應用類)
↑ 父加載器 (Web 容器中為 WebAppClassLoader)
Custom ClassLoader (應用自定義, 熱加載、隔離、加密)
java.lang.String) 繞過安全檢查。核心類永遠由 Bootstrap 加載,不可篡改。Permission, ProtectionDomain, AccessController, Policy。基於代碼來源 (CodeSource: URL + 證書) 和調用棧 (doPrivileged) 動態授權。--add-opens)、模組圖依賴、jlink 定制運行時鏡像,進一步縮小攻擊面。Java 語言簡潔安全,JVM 提供強大的運行時保障與性能優化,安全模型從沙箱演進為細粒度權限與模組化封裝。理解這些基石,是通往 EJB、Spring、微服務、雲原生等上層架構的**必經內功**。下一篇將進入 J2EE 十三大技術體系與 EJB 核心架構探討。