新聞中心
Java 8即將正式發(fā)布,從早期版本中,我們已經(jīng)可以領(lǐng)略到一些令人興奮的特性。但是開(kāi)發(fā)者Andrew C. Oliver表示,盡管如此,Java語(yǔ)言在某些特性上還是落后于.Net。比如,Java 8中最令人期待的Lambda表達(dá)式,在2007年發(fā)布的.Net 3.5中已經(jīng)存在了。他認(rèn)為,.Net已有的和即將到來(lái)的特性要比Java 8優(yōu)秀得多,如果Java 9再不做一些大的改進(jìn),那么Java落后于.Net就不止一點(diǎn)點(diǎn)了。

關(guān)于更新速率
微軟有能力做出更快的改進(jìn)。我記得在很早期的時(shí)候,微軟能做到每周都更新數(shù)據(jù)庫(kù)API:從ODBC、RDO、ADO到OLEDB等。自從出現(xiàn)了.Net之后,微軟便達(dá)到了一種前所未有的更新速度。
但是Java為什么落后這么遠(yuǎn)?在早期的時(shí)候,Java的發(fā)展也是非常快速的,從Java 1.0.2 到 Java 1.1,僅僅一年時(shí)間,我們就看到了Java徹底地改變。從Java 1.1到Java 1.2只用了一年半時(shí)間,而Java 1.2.2只用了7個(gè)月的時(shí)間(這是一個(gè)重要的版本,只是使用了一個(gè)小版本號(hào))。而在10個(gè)月之后,具有關(guān)鍵意義的Java 1.3問(wèn)世,這也正是Java發(fā)行的第一個(gè)帶有垃圾回收的版本。
Java 1.4為我們帶來(lái)了NIO和正則表達(dá)式,但在之后不到兩年的時(shí)間里就被取消了。Java 1.4.2版本帶來(lái)了用于多核環(huán)境的垃圾回收器。Java 1.5帶來(lái)了可用于生產(chǎn)環(huán)境的并行和并發(fā)GC(垃圾回收)特性,它還添加了更重要的并發(fā)和NIO功能,不過(guò)這一過(guò)程花了一年多的時(shí)間。
總的 來(lái)說(shuō),Java還是有不錯(cuò)的表現(xiàn)的,Java 6使鎖變得更廉價(jià),但其在本質(zhì)上和Java 1.5是一樣的,還是讓用戶(hù)多等了2年時(shí)間。Java 7是第一個(gè)對(duì)底層VM技術(shù)做出重大改變的版本,同時(shí)還給用戶(hù)帶來(lái)了invokedynamic特性——用于在JVM上更好地連接其它語(yǔ)言,但是在兩個(gè)大版 本的更新之間用了大概5年時(shí)間,這個(gè)進(jìn)度著實(shí)有些太慢了。
為什么Java進(jìn)展緩慢?
對(duì)于這個(gè)問(wèn)題有一個(gè)簡(jiǎn)單的解釋?zhuān)篠un并不是一個(gè)實(shí)力超群的公司。Java創(chuàng)造于互聯(lián)網(wǎng)繁榮時(shí)期,而那個(gè)時(shí)候Sun正在出售Sparc業(yè)務(wù)。
之后,互聯(lián)網(wǎng)經(jīng)濟(jì)不景氣,Sun決定持續(xù)加大其在硬件業(yè)務(wù)中的投入。Sun比較擅長(zhǎng)創(chuàng)建生態(tài)系統(tǒng),但它就是無(wú)法創(chuàng)造出用戶(hù)需要的產(chǎn)品。Oracle是Sun的后繼者,擅于徹底毀壞生態(tài)系統(tǒng),最終吞并/摧毀圈內(nèi)的同行,還會(huì)開(kāi)發(fā)出高利潤(rùn)的產(chǎn)品來(lái)取代同行。
Oracle曾在一份簡(jiǎn)潔的公開(kāi)聲明中稱(chēng):“我們都知道,由于各種商業(yè)和政治原因,該版本(Java 7)花費(fèi)了不少時(shí)間?!?/p>
當(dāng) 然,在分析Java的問(wèn)題上,我們還必須考慮Sun公司的財(cái)政困難以及Java系統(tǒng)周邊的東西。Sun公司違背了其提交Java進(jìn)行標(biāo)準(zhǔn)化的初衷,它創(chuàng)造 了自己的“標(biāo)準(zhǔn)”委員會(huì),即JCP(Java社區(qū)進(jìn)程)。隨著時(shí)間的推移,JCP盡管在一定程度上已經(jīng)開(kāi)放,但是無(wú)論是Sun還是現(xiàn)在的Oracle,都 擁有絕對(duì)的否決權(quán),它們可以忽略規(guī)則,做任何想要的事情。
什 么阻礙了JCP?不是開(kāi)放性,而是利益沖突。我記得當(dāng)時(shí)參與EJB3規(guī)范制定的某個(gè)供應(yīng)商,它習(xí)慣延遲規(guī)范的進(jìn)度。這是為什么呢?這些供應(yīng)商需要購(gòu)買(mǎi)或開(kāi) 發(fā)一個(gè)產(chǎn)品來(lái)集成到它們的應(yīng)用服務(wù)器中,如果下一代JavaEE規(guī)范已經(jīng)發(fā)布,那么它們也必須盡快推出產(chǎn)品,它們不希望比市場(chǎng)晚。
協(xié)調(diào)產(chǎn)品的發(fā)布,對(duì)于一個(gè)公司來(lái)說(shuō)都有些難,更不用說(shuō)幾個(gè)公司了。因此,我認(rèn)為Java最大的問(wèn)題并不是由于JCP造成的。
拋棄或分離一些東西
Sun已經(jīng)成為了過(guò)去時(shí),現(xiàn)在Oracle是“老板”,那么為什么Java版本的發(fā)布周期仍然需要這么長(zhǎng)?最簡(jiǎn)單的解釋是——Java太大。大項(xiàng)目往往意味著進(jìn)展比較緩慢,且充滿(mǎn)風(fēng)險(xiǎn)。下面我們就來(lái)看看如何將Java變得小一些。
首先,Oracle必須擺脫其“心愛(ài)”的客戶(hù)端技術(shù)。當(dāng)然,目前還沒(méi)有更好的Swing和JavaFX的替代品,但是使用這些技術(shù)意味著需要把你捆綁在Oracle的平臺(tái)上——至少目前是這樣。
我 尚不清楚,目前JavaFX或客戶(hù)端Java為Oracle帶來(lái)的戰(zhàn)略上的意義是什么,它們似乎被設(shè)計(jì)用來(lái)和VB6、Flash或一些4GL(第四代語(yǔ) 言)進(jìn)行競(jìng)爭(zhēng)的。在現(xiàn)代的、多平臺(tái)的環(huán)境中,大部分人會(huì)認(rèn)為觸摸和滑動(dòng)操作會(huì)更酷一些,而JavaFX與這種趨勢(shì)是不相匹配的。為什么我們需要使用客戶(hù)端 Java來(lái)阻礙服務(wù)器端的發(fā)展,并且還有可能伴隨著各種風(fēng)險(xiǎn),比如持續(xù)數(shù)月的Java零日漏洞安全問(wèn)題以及關(guān)于如何禁用Java的討論。
如今Java語(yǔ)言已經(jīng)不再和Java平臺(tái)一樣重要。從Java平臺(tái)中砍掉Java語(yǔ)言,并根據(jù)自己的時(shí)間表進(jìn)行發(fā)布,這對(duì)于Oracle來(lái)說(shuō)可能更容易——Oracle推出的開(kāi)發(fā)工具不是Java業(yè)務(wù)的重要組成部分,并沒(méi)有為大部分的Java開(kāi)發(fā)者所使用。
Java 平臺(tái)上有多種語(yǔ)言,比如JRuby、Scala等等。以高性能和可擴(kuò)展的方式來(lái)支持這些語(yǔ)言和技術(shù),對(duì)于云計(jì)算來(lái)說(shuō)非常重要。如果云計(jì)算是未來(lái),那么 Oracle應(yīng)該首先考慮Java平臺(tái)。而目前所支持Ruby、Scala、甚至Node.js的Java平臺(tái)似乎是一個(gè)“錨”,而不是產(chǎn)生創(chuàng)新的“引 擎”。
比起Mark Reinhold(Java SE規(guī)范領(lǐng)導(dǎo)者,目前在Oracle公司),我更希望由Charles Nutter(JRuby創(chuàng)始人,目前在Red Hat公司)和Martin Odersky(Scala創(chuàng)始人,目前在Typesafe公司)來(lái)決定在Java平臺(tái)中添加哪些特性。我并沒(méi)有不尊重Mark Reinhold的意思,但是一些證據(jù)表明,在很多與Java語(yǔ)言合作的項(xiàng)目中,Java語(yǔ)言拖慢了項(xiàng)目的進(jìn)度。
對(duì)于Oracle領(lǐng)導(dǎo)的Java來(lái)說(shuō),事情發(fā)展不會(huì)那么順利,很多Sun之前的決議現(xiàn)在仍然在困擾著我們。我的建議是,拋棄客戶(hù)端Java,獨(dú)立出JVM和Java語(yǔ)言的發(fā)布周期,致力于將Java作為一個(gè)平臺(tái),而不是想一次性地解決所有問(wèn)題。
原文鏈接:http://www.infoworld.com/d/application-development/java-faces-tough-climb-catch-net-224372
分享標(biāo)題:Java與.NET的平臺(tái)發(fā)展之爭(zhēng)
當(dāng)前路徑:http://m.fisionsoft.com.cn/article/dpjidce.html


咨詢(xún)
建站咨詢(xún)
