在較量中攜手前行——寫給Java 1.5和.NET 2.0

 有些時候等待是一種幸福,就如對於Java 1.5(商業的版本號爲5.0).NET 2.0(內部版本號爲1.2)的守候。對於Java社區,1.5 RC1的等待恍如隔世,終於在所有人快失去耐性的時候給出了這個定心丸;對於.NET社區,則是一種欣喜,反過來也是一種擔憂,畢竟相對穩定的.NET 1.1版本還沒有Java社區中那樣成熟的姿態,卻要考慮是否邁進2.0的新世界。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

       不知道是不是商業宣傳的錯覺,很多人將這兩個重量級產品做比較的時候更多的是着眼於Java語言和C#的語言的比較,從某種意義而言對於.NET是不夠公平的,同樣對於Java而言也不是公平的。

 

       在討論Java的時候我們很容易的將Java語言和Java平臺混爲一趟,和.NET平臺比較的過程中也更多的是將Java平臺和C#比較,或者Java語言和.NET平臺比較,在我個人的意識中,這是不夠公正的。

 

       Java經過多年的發展,已經從單一的語言及其運行時環境擴展成一個完成的應用平臺,並且在企業應用領域處於絕對的領先地位,J2EE已經成爲事實上的大型企業應用的標準技術架構。而在移動開發領域,因爲其跨平臺的優勢,在各種Java兼容設備中的開發也成爲一個非常重要的生力軍。

 

       .NET從提出的開始就是立足平臺,相對於Java提倡的“一次編寫,到處運行”,.NET更加提倡“一個平臺,多種語言”,因爲平臺的統一性,因此在各個語言的兼容性和混合開發方面做得比Java好,也因此有些MS的擁護者嘲笑Java是“一次編寫,到處調試”。

 

       縱觀這兩個平臺的革新主要體現爲如下兩個方面:

 

       Java:這是從產生到現在第一次真正意義的對於語言實現進行大刀闊斧的改造,一直以來,Sun公司將更多的精力放在類庫的擴充和技術架構的規範定義上,比如JDBC的不斷完善,JMSJNDIEJB等等非常重要的規範就是在這幾年的發展過程中逐漸成熟起來的。俄而在語言方面,從1997Java1.1推出之後Java Class文件就一直沒有做過大的變動,在語言支持上也沒有太多的變化,因此像《Thinking in Java》這樣的“寶典”從第一次出版到現在也沒有本質性的變化,更多的是作者對於一些觀點的修正。而在類庫方面,經過sun公司和開源社區的共同努力,已經讓java變成了一個巨無霸的平臺,除了JDK自身龐大的類庫以外,SourceForge能夠找到一些非常完善的應用框架,比如HibernateAntSpring就是其中的典範。而此次的更新則意味着在語言層次上Java將變得更加“職能”,更加適合實現面向業務的應用,而不再是一切需要依賴令人望而生畏的類庫去實現也許不算複雜的應用。語言的“輕量化”的結果就是帶來開發生產力的提高,同時依賴於Java世界目前擁有的強大資源,我想對於Java而言是一個新時代的開始,從1.5起,Java更加輕便,也不再陽春白雪高高在上,通過核心類數據共享,通過註解(Annotation)的支持,通過多線程的改進,Java也逐漸走入桌面應用市場。

 

       .NET:有一點可以肯定,C#語言的革新絕對不是.NET 2.0新功能的全部,按照微軟一貫的作風,從語言到類庫再到開發工具的全線支持纔是.NET 2.0的全部,從這個角度而言,前些日子公佈的代號爲“Whidbey”的Visual Studio 2005 Beta1才彰顯微軟的“狼子野心”,除了C#中泛型、匿名方法、迭代程序和局部類的引入,對於VB.NET也不例外,通過My命名空間極大的簡化了對於系統資源的訪問。一直備受非議的Managed C++也返璞歸真,除了保留了傳統C++的功能之外,對於託管應用程序的編寫也終於可以使用令人賞心悅目的代碼去完成,而不是C++程序員深惡痛絕的“__gc”關鍵字。而類庫方面的改進纔是真正讓開發人員欣喜若狂,ASP.NET 2.0加入了門戶開發的框架——WebPart的支持,也加入了針對用戶個性化的支持,比如SkinPassword Recover等等。

 

有對手總是一件不算壞的事情,這個世界不需要“獨孤求敗”,商業規則也不允許“獨孤求敗”的出現,因爲那樣會打破競爭格局的平衡,而Java.NET這兩個平臺的紛爭纔算剛剛開始,而較量的結果則是有利於整個軟件世界。發展到現在,兩個平臺在技術架構的目標上已經趨近相同,如果說要比較出一個大概,那麼我想在語言層次上因爲C#或者VB.NET是後來者,就註定了比Java更加先進,在類庫框架方面同樣因爲是遲到者,目前還無法在大型應用方面和Java抗衡,這兩個相互較量的平臺同樣的比較在相互學習中攜手前進,誰是受益者呢?我想還是廣大的用戶。

 

 

 

J2SE 5.0.NET 2.0部分技術參照

 

Java

.NET

說明

泛型Generic

3.5

4.5

.NET中的泛型保持了非常好的效果,幾乎能夠完成所有事情,然而,J2SE 5.0卻採用的是不完全的“擦拭法”泛型,很多功能不能完全實現。

元數據Metadata

4

4.5

Annotation以及Attribute的對比在前文中能夠看出,.NET在這個方面仍然略佔優勢。

虛擬機VM

4.5

4

虛擬機方面,J2SE 5.0作了相當大的改進,將原來的虛擬機進行了大規模改進,這個部分Java略佔上風。

垃圾收集GC

4

4

兩個平臺的垃圾收集算法上區別不大,效率也非常接近,只是.NETWindows平臺的一些支持,因此兩方面有細微差別。

語法機制

4.5

4

語法機制上,已經沒有太多比較的餘地,不過Java在此次大規模版本升級上,還是對語法機制作了比較積極的修改。

多線程Treading

4.5

3.5

J2SE 5.0中,在多線程方面又進一步做了很多基礎性工作,尤其是在類庫方面進行了很多基礎性工作的提高,加上本身在企業級系統架構上的優勢,在線程上有了比較大的優勢。

類庫

4

4.5

這次的版本升級中,.NET類庫有了很大的提高,在很多方面,尤其是客戶端類庫方面比之Java又有了更大的進步。

可移植性和開放性

5

3

Java的可移植性和開放性一直就是非常優秀的。程序的開放性,系統移植的方便性等各個方面,Java都勝出.NET很遠。因此,目前各個領域的開發中,如服務器端、嵌入式、

企業級系統架構

5

3.5

這個部分一直以來都是Java最強大的地方。企業級架構所關注的幾個領域都是Java的優勢所在,如何滿足業務需求、儘量保持結構的簡單清晰,生產率的要求和可測試性都是企業級開發關注的重點所在,Java在新版本中依然表現不俗。

 

發佈了61 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章