Java和.NET繼續(xù)爭斗的四大相關(guān)問題
原創(chuàng)【51CTO精選譯文】在本篇文章中,著名程序員Justin James討論了Java的未來,以及Java與.NET的開發(fā)成本對(duì)比,和Java是否能夠取代.NET。Justin在文中總結(jié)了四大要點(diǎn),重點(diǎn)關(guān)注了兩個(gè)運(yùn)行時(shí)在性能和成本上的異同之處。
1、Java SE 7遭遇.NET CLR會(huì)發(fā)生什么?
從Java SE 7的功能列表中可以看出,它相比以前版本有了長足提高。那么,它是一個(gè)游戲改變者嗎?我認(rèn)為不會(huì)是這樣。在過去數(shù)年中,JVM和.NET CLR都發(fā)生了眾多改進(jìn);過去那些只有技術(shù)非常高超的程序員才能完成的許多事情,現(xiàn)在借助于JVM和.NET CLR的增強(qiáng)功能,普通程序員也能夠做得到。
盡管JVM和.NET CLR并非在同一個(gè)時(shí)間實(shí)現(xiàn)相同的想法,但是如果在一方出現(xiàn)了某個(gè)好的想法,另一方也會(huì)迅速跟進(jìn),這一點(diǎn)不僅僅體現(xiàn)在運(yùn)行時(shí)層面上。舉例來說,對(duì)于Java來說,Hibernate項(xiàng)目取得了巨大成功后,.NET也迅速推出了NHibernate。而.NET的閉包(closures)功能深受眾多開發(fā)者的歡迎,Java似乎不久也將實(shí)現(xiàn)它們(51CTO編者注:Sun在Devoxx大會(huì)上宣布了這個(gè)消息),當(dāng)然,這是一個(gè)語言功能,而非運(yùn)行時(shí)功能。
.NET閉包大受好評(píng),Java也將迅速跟進(jìn)
2、在可以預(yù)見的未來,一個(gè)運(yùn)行時(shí)是否會(huì)徹底擊敗另一個(gè)?
盡管從技術(shù)層面上JVM和.NET CLR非常相似,但它們都有自己的市場(chǎng),兩者的靈活性都不是很強(qiáng)。如果一個(gè)人已經(jīng)圍繞.NET服務(wù)器和IIS創(chuàng)建了他們的基礎(chǔ)架構(gòu),他不可能第二天醒來把所有這些遷移到Java,反過來也是這樣。甚至如果一個(gè)公司決定切換自己的開發(fā)平臺(tái),那它可能需要替換整個(gè)開發(fā)團(tuán)隊(duì),或者從頭開始對(duì)他們進(jìn)行培訓(xùn)。即使培訓(xùn)完成后,在技能上還是存在嚴(yán)重的不足;畢竟,一個(gè)高級(jí).NET開發(fā)者不可能在經(jīng)過3個(gè)月培訓(xùn)后突然變成一個(gè)高級(jí)Java開發(fā)者。
另外,公司需要保留現(xiàn)有技術(shù)人員來維護(hù)已有的代碼。你認(rèn)為這些員工會(huì)坐視他們的職位被取消,或者他們的技能將變得無用或貶值嗎?當(dāng)然不會(huì)。對(duì)一個(gè)公司來說,完全從Java轉(zhuǎn)向.NET或完全從.NET轉(zhuǎn)向Java,都是一種自殺行為。最多是通過一個(gè)多年期項(xiàng)目來對(duì)員工進(jìn)行重新教育。自從.NET發(fā)布以來,從VB6到.NET的遷移都已經(jīng)花了8年時(shí)間。
程序員和項(xiàng)目的轉(zhuǎn)型需要時(shí)間
3、Java開發(fā)的成本是否比.NET開發(fā)更具經(jīng)濟(jì)性,如果是這樣,人們是否會(huì)轉(zhuǎn)向Java來節(jié)省投資?
如果你僅僅著眼于工具,我的答案是“既對(duì)也錯(cuò)。”的確,只要你愿意,你可以在一個(gè)完全開源的組合上運(yùn)行Java。你可以采取Linux/Tomcat/MySQL/Java組合,或者在服務(wù)器方面使用SpringSource組合(51CTO編者注:對(duì)于SpringSource服務(wù)器組合,有人卻是表示不滿的,可以參考這篇文章),在開發(fā)者的計(jì)算機(jī)上使用Eclipse或NetBeans。但是需要指出的是,無論出于什么原因,你都不會(huì)是開源替代產(chǎn)品的狂熱支持者,我并非說替代產(chǎn)品就不好;如果是那樣的話,與.NET工具相比,Java工具的價(jià)格相當(dāng),在很多情況下甚至更貴。而且從甲骨文和IBM等公司正在進(jìn)行的業(yè)務(wù)來看,很明顯許多公司認(rèn)為有必要付費(fèi)購買專有Java工具。就價(jià)格而言,在任一指定市場(chǎng)領(lǐng)域,微軟幾乎總是價(jià)格最低的企業(yè)類廠商。
另外,你必須考慮到如果沒有切換成本公司將會(huì)省下多少錢。一個(gè)Visual Studio副本的成本要遠(yuǎn)低于一個(gè)中等收入開發(fā)者的周薪和保險(xiǎn)金(51CTO編者注:作者Justin是美國人)。而且同一個(gè)開發(fā)者學(xué)會(huì)Java并且達(dá)到他擅長.NET的水平,所需要的時(shí)間要遠(yuǎn)遠(yuǎn)大于一周時(shí)間。
#T#出于公平考慮,這種分析也同樣適用于從Java轉(zhuǎn)向.NET。相比于平臺(tái)切換的痛苦,開發(fā)工具成本實(shí)在微不足道。當(dāng)然也有兩種例外情況。第一種情況是新建公司,那么不存在遷移成本的問題。在這種情況下,Java依然不具有成本優(yōu)勢(shì),因?yàn)槲④浺惨呀?jīng)推出了免費(fèi)版本的Visual Studio(Express版),而且如果你的公司是新創(chuàng)公司的話,通過BizSpark計(jì)劃,你可以免費(fèi)獲得三年MSDN和微軟許可,它們還不錯(cuò)。另外一種例外情況是,一個(gè)公司具有非常高的服務(wù)器-開發(fā)者比例,例如谷歌或雅虎。此類公司可能有許多開發(fā)者研發(fā)運(yùn)行在數(shù)千臺(tái)服務(wù)器上的一個(gè)應(yīng)用。在這種情況下,開發(fā)者工具并非節(jié)省成本的主要因素,但服務(wù)器空間是。對(duì)于面臨這種情形的公司,Java(和其它開源技術(shù))可以具有一個(gè)決定性的成本優(yōu)勢(shì)。
4、一個(gè)Java開發(fā)者需要了解多少腳本語言,才能實(shí)現(xiàn).NET中的效率?
首先,你是否在進(jìn)行Web開發(fā)工作?如果是這樣,你可能需要了解一些JavaScript知識(shí),并熟悉相應(yīng)的框架。對(duì)于后端工作來說,知道一門動(dòng)態(tài)語言或腳本語言不是強(qiáng)制性或必需的。盡管如此,在Java領(lǐng)域存在許多此種用途的不錯(cuò)選擇。對(duì)于目前還不是一名Java開發(fā)者的人來說,我沒有這方面的任何實(shí)際經(jīng)驗(yàn)來介紹,但是我聽到很多關(guān)于Groovy和Scala不錯(cuò)評(píng)價(jià)。如果你希望選擇某些更主流的技術(shù),JRuby和Jython是不錯(cuò)的選擇。
在過去數(shù)年中,JVM已經(jīng)開始大量支持非Java語言,開發(fā)者現(xiàn)在擁有眾多選擇。學(xué)會(huì)其中一種肯定有助于你成為一個(gè)更好的開發(fā)者(即便你并不在實(shí)際產(chǎn)品項(xiàng)目中使用它們),可以讓你在項(xiàng)目陷入困境時(shí)提供另一種方向。
Java是否會(huì)取代.NET?言之尚早。同時(shí).NET也不會(huì)消滅Java。兩者都有自己的優(yōu)勢(shì)和劣勢(shì)。我認(rèn)為,你最終選擇它們兩個(gè)中的哪一個(gè),這要取決于個(gè)人喜好和當(dāng)?shù)芈殬I(yè)機(jī)遇。
原文:Why Java and .NET will continue to compete 作者:Justin James