.NET的閉包(closures)功能深受眾多開發者的歡迎,Java似乎不久也將實現它們,當然,這是一個語言功能,而非運行時功能。我認為,你最終選擇它們兩個中的哪一個,這取決於個人喜好和當地職業機會。 .NET的閉包(closures)功能深受眾多開發者的歡迎,Java似乎不久也將實現它們,當然,這是一個語言功能,而非運行時功能。我認為,你最終選擇它們兩個中的哪一個,這取決於個人喜好和當地職業機會。
1.Java SE 7遭遇.NET CLR會發生什麼?
從Java SE 7的功能清單中可以看出,它相比以前版本有了長足提高。那麼,它是一個遊戲改變者嗎?我認為不會是這樣。在過去幾年中,JVM和.NET CLR都發生了眾多改進;過去那些只有技術非常高超的程式設計師才能完成的許多事情,現在藉助於JVM和.NET CLR的增強功能,普通程式設計師也能夠做得到。
雖然JVM和.NET CLR並非在同一時間實現相同的想法,但是如果在一方出現了某個好的想法,另一方也會迅速跟進,這一點不僅僅體現在運行時層面上。舉例來說,對Java來說,Hibernate專案取得了巨大成功後,.NET也迅速推出了NHibernate。而.NET的閉包(closures)功能深受眾多開發者的歡迎,Java似乎不久也將實現它們,當然,這是一個語言功能,而非運行時功能。
.NET閉包大受好評,Java也將迅速跟進
2.在可以預見的未來,一個運行時是否會徹底擊敗另一個?
儘管從技術層面上JVM和.NET CLR非常相似,但它們都有自己的市場,兩者的靈活性都不是很強。如果一個人已經圍繞著.NET伺服器和IIS創建了他們的基礎架構,他不可能第二天醒來把所有這些遷移到Java,反過來也是這樣。甚至如果一個公司決定切換自己的開發平台,那麼它可能需要替換整個開發團隊,或從頭開始對他們進行培訓。即使培訓完成後,在技能上還是存在嚴重的不足;畢竟,一個高級.NET開發者不可能在經過3個月培訓後突然變成一個高級Java開發者。
另外,公司需要保留現有技術人員來維護現有的程式碼。你認為這些員工會坐視他們的職位被取消,或者他們的技能將變得無用或貶值嗎?當然不會。對一家公司來說,完全從Java轉向.NET或完全從.NET轉向Java,都是一種自殺行為。最多是透過一個多年期專案來對員工進行重新教育。自從.NET 發布以來,從VB6到.NET的遷移都已經花了8年時間。
程式設計師和專案的轉型需要時間
3.Java開發的成本是否比.NET開發更具經濟性,如果是這樣,人們是否會轉向Java來節省投資?
如果你只是著眼於工具,我的答案是「既對也錯。」的確,只要你願意,你可以在一個完全開源的組合上運行Java。你可以採取Linux/Tomcat/MySQL/Java組合,或是在伺服器方面使用SpringSource組合,在開發者的電腦上使用Eclipse或NetBeans。但要指出的是,無論出於什麼原因,你都不會是開源替代產品的狂熱支持者,我並非說替代產品就不好;如果是那樣的話,與.NET工具相比,Java工具的價格相當,在很多情況下甚至更貴。而且從甲骨文和IBM等公司正在進行的業務來看,很明顯許多公司認為有必要付費購買專有Java工具。就價格而言,在任一指定市場領域,微軟幾乎總是價格最低的企業類廠商。
另外,你必須考慮到如果沒有切換成本公司將會省下多少錢。一個Visual Studio副本的成本遠低於一個中等收入開發者的周薪和保險金。而且同一位開發者學會Java並且達到他擅長.NET的水平,所需的時間遠大於一週時間。
出於公平考慮,這種分析也同樣適用於從Java轉向.NET。相較於平台切換的痛苦,開發工具成本實在微不足道。當然也有兩種例外情況。第一種情況是新建公司,那麼不存在遷移成本的問題。在這種情況下,Java仍然不具有成本優勢,因為微軟也已經推出了免費版本的Visual Studio(Express版),而且如果你的公司是新創公司的話,透過BizSpark計劃,你可以免費獲得三年MSDN和微軟許可,它們還不錯。另外一種例外情況是,一個公司具有非常高的伺服器-開發者比例,例如Google或雅虎。這類公司可能有許多開發者研發運作在數千台伺服器上的一個應用程式。在這種情況下,開發者工具並非節省成本的主要因素,但伺服器空間是。對於面臨這種情況的公司,Java(和其它開源技術)可以具有一個決定性的成本優勢。
4.一個Java開發者需要了解多少腳本語言,才能實現.NET中的效率?
首先,你是否在進行網頁開發工作?如果是這樣,你可能需要了解一些JavaScript知識,並熟悉相應的框架。對於後端工作來說,知道動態語言或腳本語言不是強制性或必要的。儘管如此,在Java領域存在許多此種用途的不錯選擇。對於目前還不是Java開發者的人來說,我沒有這方面的任何實際經驗來介紹,但是我聽到很多關於Groovy和Scala不錯評價。如果你希望選擇某些更主流的技術,JRuby和Jython是不錯的選擇。
有各種方式可以提升Java應用的效能
在過去數年中,JVM已經開始大量支援非Java語言,開發者現在擁有許多選擇。學會其中一種肯定有助於你成為一個更好的開發者(即便你並不在實際產品項目中使用它們),可以讓你在專案陷入困境時提供另一種方向。
Java是否會取代.NET?言之還早。同時.NET也不會消滅Java。兩者都有自己的優勢和劣勢。我認為,你最終選擇它們兩個中的哪一個,這取決於個人喜好和當地職業機會。