JavaFX預(yù)覽版弱點明顯 恐難扭轉(zhuǎn)Sun劣勢
無論是在傳統(tǒng)的桌面應(yīng)用領(lǐng)域,還是在如今的新興瀏覽器應(yīng)用領(lǐng)域,Sun公司都面臨著來自對手的強(qiáng)大競爭。不過,Sun公司也在想盡辦法重現(xiàn)昔日輝煌,近日Sun公司發(fā)布了JavaFX預(yù)覽版開發(fā)工具包,人們稱這是Sun扭轉(zhuǎn)劣勢的最后一個王牌,但是根據(jù)這個預(yù)覽版工具的表現(xiàn)來看,顯然還難當(dāng)大任。
對于JavaFX來說,最大的問題是憑借什么讓人們來接受它,畢竟人們現(xiàn)在已經(jīng)擁有了Adobe公司的Flex和微軟的Silverlight,而后者在2008北京奧運(yùn)會中已經(jīng)向人們展示了它的優(yōu)秀。
從理論上來說,JavaFX最具競爭力的功能恰恰是Sun最難放棄的一塊領(lǐng)土:無需改變即可在Java SE和Java ME平臺上運(yùn)行同一個JavaFX應(yīng)用。
效仿Laszlo實現(xiàn)多平臺支持
為了實現(xiàn)這個功能,Sun正在采取一種類似Laszlo項目的方法。Laszlo允許相同的程序可以同時運(yùn)行在使用JavaScript技術(shù)或Flash技術(shù)的瀏覽器中。JavaFX可以分為JavaFX Script和JavaFX Mobile兩部分,分別用戶實現(xiàn)在不同平臺上的JavaFX應(yīng)用。例如,Java SE平臺使用Swing組件來實現(xiàn)圖形呈現(xiàn)。
如果相同的JavaFX應(yīng)用無需改變就可同時運(yùn)行在你的手機(jī)和桌面計算機(jī)上,這無疑是Sun真正的一個突破。
至于這種虛假的多平臺實現(xiàn)方法從長期角度來看是否可行,那是另一回事。任何一個大型的程序必將不屬于JavaFX,它們一般會選擇使用核心的Swing和Java API,鎖定在你的桌面應(yīng)用中。在Java ME支持出現(xiàn)以前,我們不會發(fā)現(xiàn)Sun的雄心壯志能實現(xiàn)多少,而Java FX的支持估計最早也要到明年春天。
開發(fā)工具的改進(jìn)和不足
對于這個預(yù)覽版,工具依然是JavaFX優(yōu)缺點并存的一部分。具有JavaFX插件支持的NetBeans 6.1,再加上Java 6;update;10,Sun為開發(fā)者提供了非常有競爭力的富客戶端應(yīng)用開發(fā)和部署平臺。
NetBeans插件具有一個漂亮的即時預(yù)覽功能,任何代碼改變都可以讓applet重新編譯和重新顯示。這個功能雖然看起來不錯,但是我認(rèn)為大多數(shù)開發(fā)者在新鮮感過去后會關(guān)掉這功能。
JavaFX預(yù)覽版中在工具方面存在的不足是,在明年春天以前還沒有圖形編輯器供開發(fā)者可用,這很可能成為開發(fā)者在Flex和JavaFX之間做出選擇的決定性因素。
除了NetBeans可視化開發(fā)工具外,Sun公司表示它正在與第三方緊密合作,以提供一個快速應(yīng)用開發(fā)(RAD)工具,顯然我們還能具有一個Eclipse插件,至于具體的發(fā)布時間我還沒有從Sun哪兒得到答案。對于未來要增加的功能遮遮掩掩,這顯然不是贏得開發(fā)者之心的好辦法。
相形見絀的demo
在預(yù)覽版中新增的還包括一個天氣應(yīng)用的示例:很高興JavaFX終于開始關(guān)注這部分內(nèi)容。但是不幸的是這個示例有些讓人失望,只是一些數(shù)字與幾個云形動畫的拼湊而成,如果你讓這個程序運(yùn)行幾分鐘以后,你會發(fā)現(xiàn)它還會變得像蝸牛一樣慢。而且“今天/明天”天氣的切換操作也有點問題。
圖1、JavaFX示例
網(wǎng)上看到的其它演示也同樣不能令人眼前一亮。javafx.com網(wǎng)站本身的設(shè)計就比較差勁,顯然這個網(wǎng)站并未遵循可用性原則而設(shè)計。在找它的演示頁面的時候我就廢了半天勁,最后找到了這個右邊灰色背景灰色文本的鏈接。
費(fèi)勁力氣找到這個鏈接后,展現(xiàn)在你眼前的不過是兩個最不起眼的演示程序。第一個范例就是簡單的讓一些方框?qū)崿F(xiàn)旋轉(zhuǎn),這種東西Flash很多年前就可以做了。第二個demo是股票價格程序,看上去有些意思,但是經(jīng)過使用你會發(fā)現(xiàn)它只是一些靜態(tài)的圖和令人討厭的白色背景的組合,在使用之前我曾經(jīng)期望里面的表格可以進(jìn)行分類,或者表格的列可以實現(xiàn)拖拽,但是這些都沒有,僅僅是一個簡單的表。
你把它與Adobe的Flex 3 的Dashboard相比一下的話,你會迅速發(fā)現(xiàn)Sun的處境真的非常危險。
Flex在與瀏覽器的集成方面也已經(jīng)領(lǐng)先一步。人們對早期的Java applet的主要批評之一是它們不能與所在的頁面非常好的融合。一個改變了視覺風(fēng)格(字體、線條粗細(xì)、顏色等)的Web設(shè)計器可以對樣式表進(jìn)行修改,但是applet依然看上去和以前一樣,依然要求重新編程、重新編譯和重新部署。
很明顯的答案是為Swing增加對外部樣式的支持,這是Flex所采取的方式。由此帶來的結(jié)果是非常顯著的,這會把應(yīng)用程序外觀控制權(quán)交到Web開發(fā)者的手中。
我曾經(jīng)問過Sun負(fù)責(zé)JavaFX的高級產(chǎn)品經(jīng)理Jacob Lehrbaum,將來是否會在JavaFX中增加對樣式表(stylesheet)的支持。盡管他看上去真的希望給我一個肯定的答案,但是至今為止未能實現(xiàn)。在這一點上與Sun在JavaFX上所做的工作很相似:看上去潛力很大,但卻總是只許下一些美好的承諾,而不去在現(xiàn)在來兌現(xiàn)。
客觀評價
OK,讓我們寬容一點。這只是一個測試版,而且demo僅僅是demo。我們希望正式版要好很多。JavaFX可以而且一定會表現(xiàn)的更好,因為它有機(jī)會讓應(yīng)用程序無需改變就可以同時運(yùn)行在桌面和手機(jī)上。
但是,根據(jù)迄今為止我所看到的,JavaFX目前還不足以在競爭中勝出,它還有很長的路要走。在擁有自己的GUI編輯器以前,JavaFX不是一個可行的選擇。我們希望Sun和JavaFX應(yīng)該開始加速實現(xiàn)這一功能。
相關(guān)文章:
