轉帖: C# vs. Java:相反的思維方式 (譯文)

來源:互聯網
上載者:User

C# vs. Java:相反的思維方式

作者:Malcolm Davis   發表於:September 12, 2004

我最近受邀對 C#/.NET 和 Java/J2EE 做一個對比。一開始,我比較了它們的功能特性、產品、技術,然後我發現 C# 和 Java 的戰場並不在這些表面特徵方面,而是思維方式層面的競爭。

坐在辦公電腦前,開發人員腦袋中按兩種相反的思維方式看問題:

1.接受案頭上已有的工具並以此為標準。
2.經常的搜尋能夠提高工作效率的機會。

接受主義與探尋主義是兩個社區的主要思維方式差異。什麼是對開發人員有益的,接受主義者放棄了對工具的控制,接受經理和賣主的選擇。探尋主義者搜尋、尋找正好對他們工作有用的工具。兩種思維方式都有其正面因素和反面因素。

工具的探尋(包括 IDE,組件,工具等)是正常的、預想的、首選的行為。作為開發人員,應該尋找適當的途徑,比如新的程式、自動產生重複的代碼以及組件重用等途徑,提高工作效率。可是,這對於一個 IT 公司來說,可能是一個不好的兆頭。很多的 IT 公司限制隨意安裝新的軟體,很多公司限制對外部網站訪問,有的還限制對新聞群組和 blog 網站的訪問。(當然,很難想象有些 IT 公司甚至不允許訪問 weblogs.java.net。)這些 IT 公司有很多適當的理由,比如對病毒、木馬軟體傳播的擔憂,以及由於缺少許可證而導致的法律問題,很多程式員並不清楚也並不關心引進新軟體可能帶來的這些後果。

四年前,我向一家 IT 公司引進了 Ant,Tomcat 和 JUnit,這些工具簡化並加快了 web 編程、測試以及製造的過程,極大的提高了公司的生產效率。現在幾乎每一個 Java 開發人員都已經掌握了這些技術。

NAnt 和 NUnit 是僅有的一些開源的、對 Java 工具集的 .NET 移植。然而,Microsoft 並不是採納這些已有方案、加以改進、並將它們整合到生產線中,而是自己重新建立了類似的產品 Visual Studio Team System。停下來想象一下,會不會有哪家 Java IDE 會聲稱“我們將不會支援 JUnit 或者 Ant,我們將推出我們自己的產品。”這簡直是不可想象的!你現在知道 Java 和 .NET 之間的思維差異了吧:一個採納社區已有的成熟工具,另一個則重新創造一套整合的方案。因為商業 IT 公司偏愛整合的解決方案,Microsoft Team System 給人感覺不錯。可是,Team System 只是一個落後時代大約 5 年的產品。

商業世界的人們已經開始使用 Jakarta 項目上發布的 Ant 和 Tomcat。思維方式凸現了商業運作和 IT 開發的主要差異。如果商業軟體能夠遵守和 IT 開發相同的規則,它們將壓縮競爭者的空間,同時失去他們最好的開發人員。

由於 IT 公司需要以應用程式供應商(Application Service Provider, ASP)的等形式採用外部資源,Java 以及 Open Source 將成為 IT 的主流。Microsoft 的做法最終會傷害他們。ASP 的商業模式,將帶領我們進入一個商業軟體開發的新時代。Industrial strength development techniques, cutting edge technology, 以及經常性的探尋提高生產效率的機會,將成為標準,我們將看到“小魚吃大魚”的一幕,我們將看到 Java 吃掉 .NET 的午餐。

大家都看到了 Malcolm Davis 剛剛發表的那篇“C# vs. Java:相反的思維方式”了吧?你也注意到:sourceforge 上 Lucene.NET 的主持者關閉了項目,帶著他們的玩具回家去了吧?我接著 Malcolm 的話題,說說這兩件事之間的關係。

大體而言,.NET 社區的參與者總是在談論 Microsoft 推出的最新的、最強大的東西:MapPoint Location Server,SQL Server,Longhorn,ASP.NET 2.0,Visual Studio,所有來自雷德蒙(Redmond,微軟總部所在地)的產品。相反的,Java 社區的程式員在那裡談論 JBoss,Hibernate,Struts,Eclipse,這些東西沒有一個來自矽谷。

Malcom 的文章說,.NET 開發人員接受 Microsoft 提供的工具和服務,我想這在很大程度上是對的。.NET 開發人員很少花時間,開發持續層方案(persistence layers),web 應用程式架構(web application frameworks)或者緩衝解決方案(caching solutions),因為 Microsoft 已經為這些問題提供了 Microsoft 解決方案。但是僅僅是因為 Microsoft 提供了這些工具嗎?那為什麼 JSF,JDO,NetBeans 不能成為 Java 技術 Blog 網站的主流聲音呢?拿 ASP.NET 和 JSF 作一個細緻的比較,它們並沒有太多的不同,但 ASP.NET 和 Visual Studio 一起被廣泛應用,而 JSF 卻很少人用並且飽受嘲弄。我認為 Malcom 是對的,的確是思維方式的差異早就了這一切。

回過頭來看看 Lucene.NET 的那群人吧:他們為什麼關閉了開源的項目,他們為什麼不再繼續為這個很優秀的想法貢獻他們的時間和精力呢?或許 .NET 社區對他們工作的反響,讓他們無法繼續維持下去了吧!使用 google 在 weblogs.asp.net 上搜尋“lucene”只得到了 17 項結果,而在 jroller.com 得到了 2570 項結果。Lucene 已經存在很長時間了,但 Lucene.NET 的那群人們把東西包起來另起門戶,其中一個原因可能就是:幾乎沒有人關注他們的工作:大家都在忙著研究 SQL Server 的全文檢索索引,這才是 Microsoft 提供的解決方案(當然,需要為每個處理器花費成千的美元購買許可)。在 Java 世界,Lucene,Struts,Tomcat 之所以繁榮,也是因為為一個大的開源項目工作,給開發人員帶來了足夠的威望。而當你投身於一個開源項目,卻很少人注意時,沮喪的你也許也要尋找另外的動力。在 Lucene.NET 這個案例中,money 是他們的動力,所以他們關閉了項目,轉而販賣他們的個人版本和商業版本。他們或許能得到雙倍的美元吧,但我打賭一年以內,不會有多少人談論 seachblackbox.com 的。

那麼我的觀點是什麼呢?是說 .NET 開發人員很貪婪,不關心社區嗎?不是這樣的。我認為,這兩個社區有不同的司機:.NET 開發人員盯著 Microsoft,關心 Microsoft 提供的解決方案,如果他們在車窗外看到了好東西並拿來使用,Microsoft 可能會最終進入這個領域,並發布產品或者提出解決方案,這樣,以前的工作就完全被否定了。Microsoft 是 .NET 社區的司機。Java 開發人員們看了看 Sun 推出的產品和語言規範,扭頭去開發他們自己的工具、架構、應用程式。Sun 推出的東西,Java 社區的開發人員只有他們確實喜歡才會去使用。Struts 的門庭若市,與 JSF 的門庭冷落,印證了這一點。在 Java 社區,開發人員自己是司機。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.