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

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


咨詢
建站咨詢
