還有人真的在乎案頭Java嗎?

來源:互聯網
上載者:User

Does Anyone Really Care About Desktop Java?

July 17, 2008

 

    要是我沒記錯的話,在JavaOne大會上今年被定為“JavaFX年”。我們本該會歎服JavaFX的智能和簡練性。然而在Blog圈子裡卻顯得震耳欲聾的安靜(意為不同意或缺乏熱誠 –譯者注)。

Java UI的曆史無不充斥著極其糟糕的決定。首先是AWT(Abstract Windowing Toolkit),由於語言設計者們並沒有計劃將UI(使用者介面)作為Java一個重要組件考慮進去(不必驚訝),它是在最後一秒鐘才誕生的。據說AWT從產生概念到完成只用了一個月時間。而AWT的結果—Bug成堆且在所有平台表現平平—重創了所有人在Java UI上的信心。後來的Swing,曆經年複一年的考驗,也只是挽回了一些丟掉的顏面。而懷有這樣長久的第一印象,使用者們當然仍將Java和劣質的使用者介面畫上等號。因此對他們來說,熱氣騰騰的咖啡杯裡似乎有別的什麼東西在冒著熱氣。

之後,Java又堅決拒不支援組件和事件模型。Java Beans也不例外,它的出現只是為了彌補這個缺陷而作的一次嘗試。真正的組件和事件模型可不是需要程式員或環境實現大量代碼來效仿它的。如果它能解決所有問題,我們就不必需要抽象(abstractions)概念了,更可以說一個基本的圖靈機就能解決所有問題。

Swing程式設計不但不簡單,還很淩亂、複雜。雖然時不時會出現讓Java UI編程變得和Visual Basic一樣簡單的聲音,在這一點上Sun甚至也提出了VB引入計劃,但最後都擱淺了。沒有底層基礎架構的支援這些都不可能實現。最終你還是會產生大量UI代碼的。

Java的UI編程基本上都是“馬後炮”,不情願地接受卻又從未真正支援過。因此如今人們對Java FX所持有的觀望態度也就不足為怪了。

著名的Java傳統型程式有哪些呢?恩,Eclipse,一個開發環境,由於那時Java還不能滿足使用者需要,它就成為了建立自己的UI庫的工具。NetBeans,另一個開發環境,使得Swing如今依賴於任務了。還有Intelli J,也是一個開發環境。可是我還不知道有哪個通用傳統型程式是Java寫的,即使是付費的也沒有。

人們不用Java來建立個人或商用傳統型程式的原因也許就是它在UI上的失敗。

我已經斷斷續續學了幾年Flex,仍認為它是UI的最佳解決方案,特別是在後台邏輯上未局限於使用一種語言的時候。Flex是完全作為一種使用者介面語言而設計,並且在作為多種語言的UI解決方案上將繼續大有作為,因為人們一直在為他們鐘愛的語言建立AMF(ActionScript訊息格式)橋。

AMF由於其非同步性而成為一種理想格式,和UI樣式表也有良好的相容性。總之你不會看到執行需要多長時間,非同步方法呼叫可以保證你的UI在任何情況下總是處於響應狀態。

我在這篇文章裡給出了PyAMF的一個例子。PyAMF項目總是看起來十分活躍且勢頭良好,還為Python傳統型程式提供了一個建立UI的簡單方法。

RubyAMF也是一個很活躍的項目。它為Ruby on Rails程式提供了Flex使用者介面。但在最近的RailsConf大會上出現了有關“Rails下的AIR程式”的報告。因此看來它還將支援傳統型程式。

還有一個基於PHP的AMFPHP項目,儘管並不是案頭解決方案。

Java-Flash remoting的OpenAMF項目也似乎中止了。它最近的一次1.0版本發布還是在06年4月份。它的產品並沒有使用更近一點的Java版本,更不用說維護了。有意思的是理論上講Java應該有更廣泛的基礎且有一群人在支援它。而且由於開源的BlazeDS包含了建立JavaAMF的核心代碼(BlazeDS本身只是為Java的web程式服務的)也更凸現了這一點。

雖然不很確信,但我想從某種角度上說在基於BlazeDS串連Java和Flex上Adobe向Sun伸出了橄欖枝。可通常Sun會本著“非此處發明(not invented here)” 的態度(即不願意用外人發明的東西–譯者注)將其拒絕並建立“更好”的東西出來。所以現在看大家都在觀望著,想看看JavaFX到底是否會成為“期待中的又一個世界上最好的語言”(或許在和微軟的無數次較量中Sun已經學會了太多的營銷方面實踐技巧了)。

我所希望看到的是Adobe能夠為傳統型應用程式建立並維護一個Java-AMF橋。但也許Adobe認為Java只是一個伺服器上的工具,無論什麼時候Java支援的案頭應用似乎永遠不會出現(我對此十分驚訝)。他們所重視的是與Silverlight的競爭(我對Silverlight也確實持觀望態度。微軟做出的允諾不少,實際做到的卻常常大相徑庭—看看Vista吧)。

所以如果人們真的對案頭Java感興趣,馬上嘗試一下吧。找出開源BlazeDS上實現過的代碼,建立一個案頭Java-AMF橋,這樣我們就可以在Java代碼開頭輕鬆地加入AIR使用者介面。通過此方法現在就能很容易地建立UI而不必等待JavaFX成功與否了。

 

(原文連結網址:http://www.artima.com/weblogs/viewpost.jsp?thread=234900

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.