回到.NET Framework

自去年五、六月到前一兩個禮拜,我都在進行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這類都不是.NET以及silverlight的對手,我敢說這方面Java完全沒有競爭優勢,因為Java在某些程度上來說太複雜了,太和MS Windows格格不入了。

而.NET在企業應用上短時間看來也絕對不是Java EE的競爭對手,Java EE太龐大了,涵蓋非常多技術,在資料交換、資料運算之中有太多門檻我認為.NET短時間之內難以跨越,這是Java現在剩下的唯一利基,也是最大的利基,「我認為」目前看來,任何程式語言或平台短時間內都沒辦法超越,包括RubyPythonPHP...等,都不是Java EE的對手,而且彼此之間的差距不小,技術鴻溝非常的大,這是我現在的看法。

留言

這個網誌中的熱門文章

使用Mac的Preview來合併兩張圖片

重拾起書本

Mac OS X 10.6.3 上的黑體-繁