作者以 javap -c 反編譯單例模式類別,揭示 Java 編譯器如何將原始碼轉換為位元組碼。輸出顯示建構子中隱含的靜態計數器遞增邏輯(counter1、counter2),以及靜態初始化區塊(static {})中單例實例的建立過程。這印證了「語法糖」本質上只是編譯器提供的便利寫法,最終仍會展開為冗長的基礎指令。
文章指出 C# 的語法糖「無所不在」(如 var、async/await、LINQ、屬性語法等),導致初學者更容易忽略底層運作機制,進而犯下「全世界所有程式設計師都會犯的錯誤」——只懂呼叫 API,不懂實作細節。相較之下,Java 書籍較少深入探討位元組碼層面,使開發者對執行模型的理解相對淺薄。
雖然此類錯誤普遍存在,但不代表可以「抬頭挺胸、理直氣壯」地重複犯錯。作者強調:
javap、ILDASM)的習慣。現代開發工具(IDE、建構腳本)極大降低了入門門檻,卻也讓開發者與執行模型疏離。唯有持續深入底層——無論是 JVM 位元組碼、CLR IL、或是機器碼——才能寫出高效、健壯、可維護的系統級程式碼。