「平台」不僅指硬體與作業系統,更指運行環境平台。Java 運行於 JVM 之上,C# 運行於 .NET 的 CLR 之上——就像在不同山路上鋪設同樣的柏油路面,車輛(程式)便能跨平台運行。
兩者皆源於 C++,共同剔除了指標運算、手動記憶體管理等易錯特性,引入自動垃圾回收、編譯為機器無關的位元碼、運行於虛擬機。這極大解放了程式設計師生產力,雖犧牲了部分效率,但隨著硬體效能提升與軟體規模擴大,健壯性、安全性、生產率的優先級已超越執行效率。
Java:讓一種語言在多種平台運行,重在語言,讓語言向平台擴散。Sun 的王牌是跨平台與面向 Internet。
C#:讓多種語言在一種平台運行,重在平台,讓平台凝聚語言。微軟不願提供 Windows 外的完整實現,專注於 Windows 生態與 .NET 整合。
C# 大量借鑒 Java(關鍵字對照表可見一斑),但為避嫌而非純粹改進。C# 保留了 C++ 被 Java 捨棄的特性:值類型、運算符重載、指標(unsafe)、非虛預設方法、預處理指令等——是對 C++ 的「否定之否定」。獨創亮點包括委托/事件、組件導向、索引器、XML 註釋、Lambda 表達式、動態類型(dynamic)等,函數式支援力度逐版遞增。
兩者皆擁有豐富框架、強大整合能力、巨頭公司支持,成為大型企業應用主流選擇。選擇往往取決於平台綁定:純 Windows 環境首選 C#,跨平台需求則選 Java。但冒號老師提醒:「編程語言絕非象牙塔之物,實乃技術與商業合力推動的結果。」
