Java 初問世時,許多開發者(包含我)經歷了從質疑、失望到深深著迷的心路歷程。這篇文章記錄了我對 Java 面向物件本質、跨平台真諦、工具生態自由度的深度體悟。
早期 JDK 只有命令列工具,Visual J++ 僅加了編輯器並支援 ActiveX,功能極其有限。市面書籍、網站充斥 Applet 範例,讓人誤以為 Java 只能寫網頁小程式,甚至不如 JavaScript 實用。那時 Java 彷彿「雞肋」,食之無味、棄之可惜。
但我初次接觸 Java,即被其純粹的面向物件思想、舒適的程式碼風格深深吸引。C++ 雖是面向物件標準語言,Delphi、VB、PB 也掛上 OO 招牌,但實際使用中:
若曾學過 Smalltalk,會發現什麼叫「一切皆物件」——連賦值、條件判斷都是物件。Smalltalk 強迫你體會 OO 本質,雖學習曲線陡峭,卻是理解物件導向的最佳途徑。
Smalltalk 效能不足,但 Java 在保有純粹 OO 精神的同時,提供了實用的效能與工具鏈。用 Java 寫程式,你會感覺到物件的呼之欲出、程式碼的條理分明、開發過程的順暢舒適。這種「寫起來很舒服」的感受,許多資深 Java 開發者都有同感。
除了 Applet,Sun 官網列出的技術驚人:Jini、JMX、Java 3D、Servlet、RMI、JNDI、EJB... 國外 Java 程式設計師已超越其他語言。IBM 用 VisualAge for Java 為法國開發全國鐵路管理系統,證明 Java 絕非只能寫小程式。Java 的網路支援更是所有語言中最強,Servlet 標準化程度遠超 CGI。
Jini 的服務導向架構思想,將在不遠未來滲透生活每個角落——裝置即服務,動態發現與組合。
XML 的資料描述與傳輸標準化,配合 Java 的跨平台特性,成為企業整合的黃金搭檔。
Sun 的 Java 3D (OpenGL binding) 讓瀏覽器內真正的 3D 圖形成為可能。JauSoft 更完整實作 OpenGL 功能,雖需額外安裝,已證明 Java 做高效能圖形的潛力。
C++ 陣營中,VC 與 C++ Builder 程式碼難以共享。但 Java 不同:
這種「工具鏈中立」的重用性,才是 Java 最大的價值所在。自由意味著解脫——不必因不會某工具而受限,Java 世界裡,這一切都不是問題。