自去年五、六月到前一兩個禮拜,我都在進行 BEA 相關的 Java EE 產品的開發,當案子告一段落,部門老大希望我進入開發的自家MES產品,前陣子在Richard的帶領之下,我們有做出了一些短暫性的成果,但是這次都被推翻掉了,整體的產品架構有重大的變革,介面和邏輯並沒有改變,但做法和當初的理念幾乎完全都不一樣了,這讓我第一次感受到原來要「改革」是這麼的困難,當已有的想法和觀念已經存在時,要改變是要花很多力氣,尤其是往你認為不好的方向來做改變。 架構設計會和設計者所具有的經驗、想法、觀念有很深的關係,軟體設計的概念,尤其是物件導向的程式設計在Java的出現以後有很重大的影響,Microsoft原本所擁有的Visual Basic並不屬於純(pure)物件導向的程式語言,因此他的設計會容易變的鬆散,軟體工程師容易為了方便、為了除錯,或是為了某種特定的原因而將程式碼寫的雜亂,這在我接觸好的Java架構設計之前也常犯有這個毛病,寫的code有太多是hard code,難以維護和修改,這是經驗的問題。 程式寫久了,會模仿既有的概念而寫出更好的code,這就是design pattern,而各種平台或框架也會為了增加效能或是讓軟體本身更容易擴充、維護,而設計出更好的框架,Java和.NET都是如此,彼此都不斷進化,.NET一開始被譏為模仿Java的劣質品,但現在也漸漸走出自己的路而且在很多方面都比Java來的進步,這是可以互相學習的。 .NET Framework體積龐大,但涵蓋範圍從最基本的client到Enterprise使用的application都有,而JDK本身雖然不大,但因為堅持走自由的路,讓各種不同的框架、libary版本之間非常混亂,光是搞懂Java EE幾百種框架之間的關係就真的要花很多時間,.NET Framework體積雖大,但版本穩定,最佳的開發工具也只有那麼一套Visual Studio,雖然封閉但省了不少麻煩。不過,也因為Java的自由,讓很多公司都有前可以賺,IBM、Oracle、BEA、Sun各自抱著自己的Java產品存活著。 我在Java和.NET之間游走,學習兩者之間各自的優缺點,開發工具也是一樣,在我這段時間的觀察中看來,彼此仍有彼此的競爭優勢,.NET在Windows client這個領域無懈可擊,Java的swing或是JavaFX這...