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