雖然這兩種語言不是我最長用的,一般用C++,但 還是有所瞭解,畢竟這兩種語言在網路開發方法具有先天的優勢。並且在網站開發方面分別是JSP和ASP.NET的語言基礎。這兩種語言同時衍生自C++,並且具有大量相同或相似的機制。我根據自己應用的一些體驗說一下著兩種語言
1、語言定義方面
也行是企業後台炒作的原因,兩種語言不斷的提出新的概念,內部類,複製,介面,代理等等,仔細看一下,想一下,這些其實在以前都已經有過,只不過是被他們一封裝就以一種新的形式出現,不過這樣的封裝確實讓開發人員大大的提高了開發速度。不過,這些東西似乎是你學我的我學你的,封裝也都是物件導向的思路來的,不過java在使用時更多的提倡了這一點,而C#卻更加提倡採用整合式開發環境。其實個人認為物件導向和面向過程各有優缺點。
2、web開發
因為我使用這兩種語言重點還是用在web開發方面,特別是這種要求高速開發的web開發與C++比起其具有不可擬的優勢。說白了,就是每種語言都具有自己特定的開發對象和應用環境。不過好像Java和C#確實一個重疊。同時採用中間代碼的解釋機制。不管微軟說的中繼語言架構,還是sun說的虛擬機器,確切的說都是一種解釋機制。對了是比較不同,相同就不再贅述了。jsp在實現上對程式員來講更加的透明,採用ANT做系統的編譯,應該說是一種很好的思路,背景serler機制等把所以的應該讓程式員明白的都告訴了你。而微軟一個高使用者體驗的環境,把多少人當成了傻瓜,不過這也是微軟成功的原因。特別是2005的開發架構更是完全的傻瓜式的。java把物件導向交給程式員做,而微軟卻把物件導向做給給程式員(封裝,你什麼也不知道)。
3、GUI開發
確切的說,java值得稱道的是他的事件響應機制,應說我最欣賞的是QT的槽和訊號機制,其次就是java的事件響應機制了,.net的的代理機制也已經是很大的進步了,畢竟windows系統是微軟的。java把布局方式分的很細,也許這是要跨平台的原因吧,但確實做起了不是太方便,不過採用NETBEAN開發好像還是蠻方便的。C#在案頭開發方面確實有先天優勢,一般來說運行速度會略快於java。
4、runtime vs vm
C#是基於運行時的,java是基於虛擬機器的。也就是說C#是在一個機器語言的介面來運行,而java是產生了中間代碼,由虛擬機器來解釋運行。C#卻提供了很多運行時機制,本身也是一種解釋機制。跨平台的移植性方面java比C#更有優勢了,java之需要有不同平台的虛擬機器就可以了,雖然C#有MONO的跨平台支援但是也只是在源碼級的跨平台,並且圖形Gui方面在不同平台依賴於其特定的圖形庫。
個人對兩種語言瞭解有限,只是這兩天對這兩種語言的開發有一定的需要,比較了一下。最終決定在網路開發方面放棄C#改投Java。