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作為一個平臺,而不是想一次性地解決所有問題。
相關文章
- .NET6 平臺系列1 .NET發展史之.NET Framework簡介Framework
- O2O上門服務發展趨勢及平臺之爭
- .NET 平臺系列6 .NET Core 發展歷程
- 可與asp.net相比的java web開發平臺, IntraWeb for java/jbuilderASP.NETJavaWebUI
- 顏值線上,功能完善的JAVA&.NET快速開發平臺Java
- 從 .NET 和 Java 之爭談 IT 行業Java行業
- 什麼是平臺化?平臺化是如何發展的?
- LeaRun快速開發平臺,快速開發.net/java專案Java
- 中國無程式碼開發平臺的發展趨勢與未來
- 又一入口之爭:淺析智慧路由器的發展與趨勢路由器
- .NET平臺常用的開發元件元件
- 低程式碼開發平臺的競爭優勢
- 騰訊與華為資料之爭談物聯網大資料發展之困大資料
- 社交平臺的現狀及發展方向
- .net平臺與axis之間的互操作問題,急等高手
- java和.net 雙語言開發框架,開源的PaaS平臺Java框架
- 從.NET和Java之爭談IT這個行業Java行業
- .Net Core與跨平臺時區
- Java語言與平臺的區別Java
- 現在低程式碼開發平臺的發展分析
- .NET之全平臺一體化的體驗
- 平臺與應用之爭:這次是Facebook和Zynga
- asp.net的發展與其屬性ASP.NET
- 分析遊戲平臺生命週期的發展特點遊戲
- 網易上線PC遊戲發行平臺“發燒遊戲”,它將如何與騰訊和Steam競爭?遊戲
- 請教banq,關於java和.net平臺Java
- JAVA平臺是最偉大的發明!Java
- .NET快速開發平臺核心優勢
- 將死的平臺:.Net
- Line推出中小企業推廣平臺 與微信競爭
- .NET平臺系列10 .NET統一平臺願景
- .NET平臺系列13 .NET5 統一平臺
- 零程式碼開發平臺的未來發展前景好嗎
- 快速開發平臺對中小企業的發展有何助力
- 淺談移動跨平臺開發框架的發展歷程框架
- FInClip開放平臺:淺談輕應用的發展
- 七牛雲彭垚:智慧平臺的創新和發展
- 谷歌與ChatGPT展開直接競爭谷歌ChatGPT