MrWeb:很多人認為.NET在對WEB的設計理念上要優於J2EE,因為.NET是專為WEB服務設計開發的。而J2EE只是一個翻版(也就是把APIs 象 JAXP 和 JAXR加入到了平台中),您認為這個觀點有價值嗎?
Jim Farley:這是個很好的問題,而且經常有人會問這樣的問題。這裡有很多實際的例子,微軟花了很大力氣來重新設計它的基礎架構,就是為了使其適用於WEB服務。作為一個公開的標準,J2EE很自然的也會長期跟蹤、升級它的一些協議、規範。但是如果你把商家和商家相比較(比如說微軟和BEA,IBM),那麼,你就會發現,在Java的領域裡,存在很多模糊的WEB服務解決方式。對於Java團體來說,如果把這些模糊概念變成規範,那麼,Java的發展必將會更好。
Al-Bandy: 在今後的幾年裡,您認為J2EE和.NET的競爭,最終會出現一個勝利者還是二者共存?
Jim Farley:我無法預測誰會是最後的贏家。微軟有其自己獨特的市場運作方式,同時,J2EE也有其強大的慣性和實力。我想它們會有效利用企業空間,在中短期內按某些方式同時存在。
Bob Rodes:在我看來,二者的主要區別好象在於標準的公開程度上,.NET更保守一些,J2EE更公開一些。有沒有橫向或縱向的交易額的比較?.NET要快一些但要受限於微軟平台,J2EE慢一些但不受平台限制。是不是由於過於簡化而是效能降低了?
Jim Farley:快慢只是一個相對概念,在衡量交易量上有很多這樣的因素需要考慮。但是無可非議的是,.NET對於Wintel環境而言是最佳的選擇。但是,在J2EE架構也沒有什麼因素妨礙商家開發類似於"Wintel-optimized"的J2EE運行環境(當然,這裡面也有許多惡意誹謗者)。
nigelk:現在在WEB服務上使用XML已經使平台或技術的概念逐漸獨立了,因此,J2EE 或.NET能否提供更好的工具或平台不應該成為主要的問題。
Jim Farley:非常正確。在理想環境下,這兩種平台在WEB服務規範和支援基礎架構上應該毫無關聯的,與"SOAP/WSDL/UDDI"相互融合應該是一個很好的機會。但是,一般商家的"value-add"問題會仍然存在(微軟就是一個最大的商家,但卻不是唯一的一傢具有保守心理的商家)。不公開化這一附加因素將會使WEB的整合會象使市場成熟那樣困難。
Fogus:就微軟認為C#即是Java這一概念,您是怎麼理解的?為什麼我們只能選其一?
Jim Farley:如果你能夠忽略平台問題,那麼嚴格上說你就要做一個人為選擇:你最喜歡用哪種文法/編程模型/物件模型?就我個人觀點來講,這幾種模型都是沒有明確界限的,但是,平台會對此作一個硬性規定,Java是J2EE的基礎,C#和一般運行環境是.NET單一平台的基礎。因此,C#同java的比較實際上又回到了J2EE 同 .NET進行比較這一問題上。
Joe:針對Java Pet Shop的應用,微軟對.NET及其效能、代碼縮減等問題作了很多改進,針對這一點您有何評價?.NET的速度真的是更快嗎?
Jim Farley:我想,很明顯這隻是一種推銷手段而已。我認為所謂的代碼縮減只是一個幌子,如果我單純只是為了易於管理而縮減代碼,這並不是明智之舉,更談不上其對基礎架構有何真正意義。如果你要對不同商家的產品進行比較的話,只能比較它們的效能,而不能把.NET的某一方面的突出特點同J2EE的整體基礎架構進行比較。
Al-Bandy:有什麼功能是.NET能夠實現而J2EE不能實現的?同時,有什麼功能是J2EE能夠實現而.NET不能實現的?這兩者之間有什麼明顯的差別嗎?
Jim Farley:如果要完整的回答這個問題可能要佔用很多時間!如果想要更多瞭解這些,可以看看我寫過的一篇文章Software Development裡面提到了這些。在這裡,我只能簡單地說.NET在XML和Wintel整合方面比較擅長而J2EE則在方便性和可選擇性上存在優勢。
David from BofA:根據您所說的在J2EE 和 .NET之間不可能存在明顯的區分界限,那麼,對於一個初學者來說,哪一個更適合初學者來學習(假設必須選其一的話)。
Jim Farley:如果從內容以外來對兩者進行比較是很困難的,這要看你為哪種類型企業工作、你的客戶喜歡什麼、你將來的技術/市場策劃是什麼等等許多因素。如果你打算只在微軟這種只使用Wintel的環境下做一些前瞻性的工作(無論是為個人還是為企業),那麼顯而易見,.NET是首選之舉。如果你認為自己不是唯一的商家,而是要考慮到來自於其他平台的競爭,或者你想把你自己的產品和客戶發展到其他平台上,那麼J2EE將是你最佳選擇。
Joe:J2EE和.NET的工具好像都是遵循W3C標準(SOAP, WSDL),那麼您認為哪一個是不標準的、自我封閉的?
Jim Farley:事實上,他們的確遵循這些標準,但是,商家也會"包含和擴充"它們的工具(例如,為封裝協議增加"value-added"的擴充,或者是定義硬碟備份的有效載荷等等)。因此,如果他們完全100%遵循SOAP/WSDL/,那麼,你就無需擔心。但是正確與否就要看微軟和J2EE了。
MrWeb:據我瞭解,.NET基礎架構並不支援持久性管理,如果真是這樣的話,這將是一個很大的缺陷
。
Jim Farley:從一定程度上來講這是事實,COM+(.NET的一個組件模型)並不支援自動持續管理。同時EJB也需要CMP,在一定意義上來說,這確實是.NET的一個缺陷(有利必有弊)。但是,也有很多人認為,利用有效"delivered value",利用EJB進行持久性管理和促使商家在J2EE平台上運行遠不如把精力集中在其他領域上,象WEB服務。我個人比較同意這種觀點。但是,從另一個方面講,我認為積極的與Java進行溝通,相互取長補短,最後必將會取得突破性的成就,因此,對於J2EE我們應該兩種態度並存。
greg: 如果這樣與微軟的CRL競爭發展下去,Java將會怎樣發展?因為對於微軟來講,CRL是一個強大的開發工具,它能夠讓開發人員不需做額外的工作即可把時間代碼應用到系統中,針對這一點,Java做何反應?
Jim Farley:我不同意在多語言環境下使用CRL來達到"不增加開發人員額外工作量"的這一觀點。你應該學習一下CRL的結構模型和".NET-ified"語言的可變文法。但是,關於Java對於這一問題的反應,我們已經看到和聽到了象ForteTM軟體等以Java為核心的多語言支援的反響。過去,儘管這些成績並不表示它已經成功了,但是已經有很多為JavaTM虛擬應用的交叉編譯器了。但是到現在為止,我還沒有看到Sun和Java團體想要在這一領域的詳細計劃,當然我沒有任何指責的意思。
nigelk:您是否有一些關於J2EE和.NET在統一市場領域內相比較的統計數字或者猜想?它們確實是在同一市場參與競爭嗎?還是說微軟有意在其傳統領域內減少自己的規模?
Jim Farley:這是一個很好的問題,現在在我身邊沒有什麼硬性的統計數字,同時我也不相信任何統計數字,因為它們都存在一定的偏見。但是現在我們所聽到的一些資訊在很大程度上是對的,微軟不是做一個選擇而是象.NET轉變-這一轉變將是更大更昂貴的轉變。.NET現在吸引了許多中小企業,因為不但成本低,而且微軟的工具也有很大優勢。但是許多典型的大企業還是擔心不同的開發環境存在需要協調不同的商家等問題,因此,對他們而言,Java就比較適用。當然,我並不是說事務不會向另一個方向發展,這隻是我個人的一些觀點。
terian3:上述許多關於反對使用.NET的討論基本上都集中在它的方便性上,那麼,你們對.NET CLI 和C#在其他平台上(象Mono project)的正常化有沒有什麼意見和想法,.NET的non-Wintel 運行環境的成功對J2EE有什麼影響?
Jim Farley:我認為.NET的non-Wintel對市場是一個強有力的衝擊,但是必須要得到微軟的支援。儘管微軟已經宣稱其公開化和參與標準化(受一定的限制),但是其基礎架構仍然在其控制之下。這樣,如果沒有微軟的支援,如此反覆,在下一個版本中將會與.NET的相容性越來越差。如果微軟同意把CLR/CLI綁釘到Linux和其它的non-Wintel平台上,那麼在今後的競爭中,將會有一個戲劇性的轉變。把一個標準同另一個標準相比較,就會正確的看待J2EE和.NET。但是,如果是那樣的話,對於微軟的發展方向將會有一個很大的轉變,結果也會十分令人驚訝(就象Sun公開其Java來源程式一樣)。
sachin:當把J2EE和.NET相比較時,從平衡現有的系統投資的WEB服務角度來講,二者之間的最大衝突在哪兒?
Jim Farley:這要看在你的概念裡"bang for the buck"具體值得是什嗎?如果你僅僅是想把產品儘快投入市場上去,而不關心其長期發展的話,那麼大多數人都會對微軟的產品感興趣(尤其是Visual Studio)。如果你指的是在現有基礎架構投資上長期發展ROI的話,那麼我認為,J2EE將會是最後的贏家。
Chris Riner:我想進一步瞭解J2EE和.NET,以便能對兩者進行更深入的比較和學習它們的相關技術,您能否就關於這方面的書或資料給我一些建議?
Jim Farley:我剛剛想起來我還沒有跟你們提到我的書,《Java Enterprise in a Nutshell》。至於.NET,現在有很多關於它的資料,象O'Reilly 和 Prentice Hall寫的,但是具體名字我想不起來了。一般來講,找一些沒有偏見的客觀的資料來學習,那些有一定主觀色彩的文章不是最佳選擇。
nigelk:J2EE與.NET之間的比較同其他舊有的平台或技術之間的比較是不同的。儘管是這種情況,但是我想,由於二者所能提供的功能非常相似,所以在具體選擇哪一種工具上並沒有明確的理由。要想做出選擇只能靠企業自身的技術或經驗。
Jim Farley:是的,我再說一遍這是正確的,我已經說過了內容就是一切-技術和經驗是一個強有力的因素,另外的因素就是企業模式、使用者需求以及市場發展趨勢等等。就我個人經驗而言,沒有任何情況象.NET那樣需要專門的平台和封閉性。因此,J2EE平台是我的選擇。但是,這樣也會出現很多情況。就象我們所提到的那樣,估計二者的特性,選取一種適合自己的。