Sun一直走在開(kāi)源領(lǐng)域的前列,這次的JavaFX是一個(gè)構(gòu)建于Java技術(shù)之上完整的運(yùn)行時(shí)環(huán)境,可以用來(lái)交付到桌面、移動(dòng)設(shè)備、手持設(shè)備和電視等環(huán)境的富互聯(lián)網(wǎng)應(yīng)用(RIA)。在這些里的每一個(gè)硬件平臺(tái)上,這個(gè)新技術(shù)都提供一個(gè)腳本語(yǔ)言,以結(jié)合Java的威力用于快速開(kāi)發(fā)有Flash效果和交互式圖形用戶(hù)接口的應(yīng)用程序。但是這還遠(yuǎn)不是JavaFX所展示的全部,它還代表了Sun的一個(gè)里程碑式新商業(yè)策略和一門(mén)新前沿技術(shù)。InfoQ就此采訪(fǎng)了Sun的首席技術(shù)官Bob Brewin,他解釋了這一技術(shù)對(duì)Sun、Java開(kāi)發(fā)者以及使用者等這些JavaFX所真正關(guān)注的對(duì)象的意義。
問(wèn)到是什么驅(qū)動(dòng)了Sun在這個(gè)時(shí)候向市場(chǎng)推出這個(gè)技術(shù),Brewin沒(méi)有像常人所想的那樣回答說(shuō)是為了更豐富、更快速開(kāi)發(fā)桌面Web內(nèi)容的需要,而是表示說(shuō)JavaFX是對(duì)Flash和Ajax增長(zhǎng)的一種回應(yīng),現(xiàn)在移動(dòng)手機(jī)和電視屏幕比桌面瀏覽器離用戶(hù)更近,在他的思想里,這些才是JavaFX最重要的驅(qū)動(dòng)力。這正好印證了Sun在大會(huì)上所講的將注意力放在消費(fèi)者產(chǎn)品上的觀點(diǎn),這樣Sun就有可能為Java技術(shù)占領(lǐng)范圍的市場(chǎng)。Brewin指出,現(xiàn)在世界上大部分人在訪(fǎng)問(wèn)互聯(lián)網(wǎng)內(nèi)容時(shí)的首要選擇不是桌面計(jì)算機(jī),而是移動(dòng)手機(jī)。
根據(jù)目標(biāo)硬件平臺(tái)的不同,JavaFX或者構(gòu)建在Java SE上或者Java ME上,但是以Mobile的眼光來(lái)看,它更像是一個(gè)可以制作交互式內(nèi)容的產(chǎn)品化腳本接口——一個(gè)設(shè)備上的完整操作系統(tǒng),包括Linux內(nèi)核和本地服務(wù)等。它應(yīng)該被看作Windows Mobile、Symbian OS和其他移動(dòng)Linux平臺(tái)的競(jìng)爭(zhēng)對(duì)手。在移動(dòng)手機(jī)上運(yùn)行時(shí),JavaFX Mobile能實(shí)現(xiàn)內(nèi)嵌在大多數(shù)移動(dòng)手機(jī)里的電話(huà)服務(wù)。所以以這個(gè)觀點(diǎn)來(lái)看,你就能明白這一技術(shù)和Sun最近從SavaJe處所獲技術(shù)的關(guān)系。Linux 內(nèi)核和CDC Personal Basis Profile Java runtime的目標(biāo)是與高級(jí)智能手機(jī)一個(gè)級(jí)別的手持設(shè)備,以及電視和其他連接設(shè)備,但是Brewin說(shuō)隨著運(yùn)行時(shí)的優(yōu)化和完善,Sun也會(huì)將此應(yīng)用到 CLDC MIDP等“功能手機(jī)(Feature Phone)”。因?yàn)檎麄€(gè)JavaFX軟件系列都將會(huì)開(kāi)源,所以Sun期望能通過(guò)出售完整的設(shè)備平臺(tái)來(lái)增加許可(License)收入,而不僅僅是 Java運(yùn)行時(shí)環(huán)境。很多項(xiàng)目都在進(jìn)行之中,甚至包括Solaris內(nèi)核這一現(xiàn)在應(yīng)用在大多數(shù)移動(dòng)設(shè)備都有的ARM處理器上的簡(jiǎn)易操作系統(tǒng)。
問(wèn)到JavaFX Script的起源,Brewin回答說(shuō)這個(gè)用于腳本化交互式GUI的語(yǔ)言是由Sun工程師Chris Oliver所開(kāi)發(fā),當(dāng)時(shí)他還在SeeBeyond技術(shù)公司(2005年被Sun收購(gòu))。很多開(kāi)發(fā)者可能都熟悉它從前的名字——F3。JavaFX Script靜態(tài)類(lèi)型化并提供編譯時(shí)錯(cuò)誤檢查機(jī)制,使得它有可能被用于開(kāi)發(fā)可支持代碼完成、超鏈接、重構(gòu)等功能的強(qiáng)大工具。其他的語(yǔ)言特性包括類(lèi)型推斷(type-inference)、聲明語(yǔ)法,以及完全支持2D圖像、標(biāo)準(zhǔn)Swing組件和聲明動(dòng)畫(huà)的自動(dòng)數(shù)據(jù)綁定等。你還可以導(dǎo)入Java類(lèi),創(chuàng)建新的 Java對(duì)象,調(diào)用它們的方法,以及實(shí)現(xiàn)Java接口等。
相應(yīng)的制作工具也在開(kāi)發(fā)之中,但是在大會(huì)上Chris展示了一個(gè)由他自己開(kāi)發(fā)的可用于JavaFX腳本化的交互式GUI構(gòu)建器。這個(gè)工具包含在 JavaFX面向開(kāi)發(fā)者社區(qū)所發(fā)布的初始版本里。因?yàn)槟_本語(yǔ)言和工具在所有的目標(biāo)平臺(tái)上都保持一致,所以JavaFX看上去能實(shí)現(xiàn)Sun的“一次編寫(xiě),處處運(yùn)行”的承諾,甚至比Java自己做的還好。當(dāng)然,在JavaFX腳本里被導(dǎo)入和調(diào)用Java對(duì)象會(huì)依賴(lài)提供的Java運(yùn)行時(shí)。對(duì)于為只有有限資源和缺少Swing或者AGUI類(lèi)庫(kù)支持的CLDC設(shè)備所發(fā)布的JavaFX版本而言,它的功能某種程度上肯定會(huì)減弱。
桌面JavaFX現(xiàn)在所要考慮的一個(gè)問(wèn)題是部署。對(duì)于從前沒(méi)有安裝過(guò)JRE的用戶(hù)來(lái)說(shuō),JRE體積太大,而且現(xiàn)在從瀏覽器上進(jìn)行按需安裝的用戶(hù)體驗(yàn)也不是特別好。Brewin在演講中提出了一個(gè)可行的解決方案,在Java 6 Update 2里將會(huì)為JRE引入一種新型的部署模型,初次下載時(shí)體積非常小,只有在需要時(shí)才下載其他的JRE組件。他說(shuō)這個(gè)概念非常類(lèi)似Java 7中提到的Java Kernel項(xiàng)目。被問(wèn)到類(lèi)似的部署模型會(huì)不會(huì)用在Java ME上時(shí),Brewin說(shuō)當(dāng)然有可能,這會(huì)由Java Community Process來(lái)推進(jìn)。
讓他對(duì)JavaFX和Adobe Flash做個(gè)對(duì)比時(shí),Brewin回答說(shuō)這是一個(gè)“蘋(píng)果和橘子”的比較。Flash有很好的功能,但它永遠(yuǎn)不能交付Java類(lèi)庫(kù)的大部分功能,而 JavaFX可以。他說(shuō)更好的比較是在JavaFX和Apollo(Adobe將要為桌面RIA提供的一個(gè)運(yùn)行時(shí))之間。在這個(gè)擂臺(tái)上,他認(rèn)為 JavaFX會(huì)非常有競(jìng)爭(zhēng)力。
問(wèn)到是什么驅(qū)動(dòng)了Sun在這個(gè)時(shí)候向市場(chǎng)推出這個(gè)技術(shù),Brewin沒(méi)有像常人所想的那樣回答說(shuō)是為了更豐富、更快速開(kāi)發(fā)桌面Web內(nèi)容的需要,而是表示說(shuō)JavaFX是對(duì)Flash和Ajax增長(zhǎng)的一種回應(yīng),現(xiàn)在移動(dòng)手機(jī)和電視屏幕比桌面瀏覽器離用戶(hù)更近,在他的思想里,這些才是JavaFX最重要的驅(qū)動(dòng)力。這正好印證了Sun在大會(huì)上所講的將注意力放在消費(fèi)者產(chǎn)品上的觀點(diǎn),這樣Sun就有可能為Java技術(shù)占領(lǐng)范圍的市場(chǎng)。Brewin指出,現(xiàn)在世界上大部分人在訪(fǎng)問(wèn)互聯(lián)網(wǎng)內(nèi)容時(shí)的首要選擇不是桌面計(jì)算機(jī),而是移動(dòng)手機(jī)。
根據(jù)目標(biāo)硬件平臺(tái)的不同,JavaFX或者構(gòu)建在Java SE上或者Java ME上,但是以Mobile的眼光來(lái)看,它更像是一個(gè)可以制作交互式內(nèi)容的產(chǎn)品化腳本接口——一個(gè)設(shè)備上的完整操作系統(tǒng),包括Linux內(nèi)核和本地服務(wù)等。它應(yīng)該被看作Windows Mobile、Symbian OS和其他移動(dòng)Linux平臺(tái)的競(jìng)爭(zhēng)對(duì)手。在移動(dòng)手機(jī)上運(yùn)行時(shí),JavaFX Mobile能實(shí)現(xiàn)內(nèi)嵌在大多數(shù)移動(dòng)手機(jī)里的電話(huà)服務(wù)。所以以這個(gè)觀點(diǎn)來(lái)看,你就能明白這一技術(shù)和Sun最近從SavaJe處所獲技術(shù)的關(guān)系。Linux 內(nèi)核和CDC Personal Basis Profile Java runtime的目標(biāo)是與高級(jí)智能手機(jī)一個(gè)級(jí)別的手持設(shè)備,以及電視和其他連接設(shè)備,但是Brewin說(shuō)隨著運(yùn)行時(shí)的優(yōu)化和完善,Sun也會(huì)將此應(yīng)用到 CLDC MIDP等“功能手機(jī)(Feature Phone)”。因?yàn)檎麄€(gè)JavaFX軟件系列都將會(huì)開(kāi)源,所以Sun期望能通過(guò)出售完整的設(shè)備平臺(tái)來(lái)增加許可(License)收入,而不僅僅是 Java運(yùn)行時(shí)環(huán)境。很多項(xiàng)目都在進(jìn)行之中,甚至包括Solaris內(nèi)核這一現(xiàn)在應(yīng)用在大多數(shù)移動(dòng)設(shè)備都有的ARM處理器上的簡(jiǎn)易操作系統(tǒng)。
問(wèn)到JavaFX Script的起源,Brewin回答說(shuō)這個(gè)用于腳本化交互式GUI的語(yǔ)言是由Sun工程師Chris Oliver所開(kāi)發(fā),當(dāng)時(shí)他還在SeeBeyond技術(shù)公司(2005年被Sun收購(gòu))。很多開(kāi)發(fā)者可能都熟悉它從前的名字——F3。JavaFX Script靜態(tài)類(lèi)型化并提供編譯時(shí)錯(cuò)誤檢查機(jī)制,使得它有可能被用于開(kāi)發(fā)可支持代碼完成、超鏈接、重構(gòu)等功能的強(qiáng)大工具。其他的語(yǔ)言特性包括類(lèi)型推斷(type-inference)、聲明語(yǔ)法,以及完全支持2D圖像、標(biāo)準(zhǔn)Swing組件和聲明動(dòng)畫(huà)的自動(dòng)數(shù)據(jù)綁定等。你還可以導(dǎo)入Java類(lèi),創(chuàng)建新的 Java對(duì)象,調(diào)用它們的方法,以及實(shí)現(xiàn)Java接口等。
相應(yīng)的制作工具也在開(kāi)發(fā)之中,但是在大會(huì)上Chris展示了一個(gè)由他自己開(kāi)發(fā)的可用于JavaFX腳本化的交互式GUI構(gòu)建器。這個(gè)工具包含在 JavaFX面向開(kāi)發(fā)者社區(qū)所發(fā)布的初始版本里。因?yàn)槟_本語(yǔ)言和工具在所有的目標(biāo)平臺(tái)上都保持一致,所以JavaFX看上去能實(shí)現(xiàn)Sun的“一次編寫(xiě),處處運(yùn)行”的承諾,甚至比Java自己做的還好。當(dāng)然,在JavaFX腳本里被導(dǎo)入和調(diào)用Java對(duì)象會(huì)依賴(lài)提供的Java運(yùn)行時(shí)。對(duì)于為只有有限資源和缺少Swing或者AGUI類(lèi)庫(kù)支持的CLDC設(shè)備所發(fā)布的JavaFX版本而言,它的功能某種程度上肯定會(huì)減弱。
桌面JavaFX現(xiàn)在所要考慮的一個(gè)問(wèn)題是部署。對(duì)于從前沒(méi)有安裝過(guò)JRE的用戶(hù)來(lái)說(shuō),JRE體積太大,而且現(xiàn)在從瀏覽器上進(jìn)行按需安裝的用戶(hù)體驗(yàn)也不是特別好。Brewin在演講中提出了一個(gè)可行的解決方案,在Java 6 Update 2里將會(huì)為JRE引入一種新型的部署模型,初次下載時(shí)體積非常小,只有在需要時(shí)才下載其他的JRE組件。他說(shuō)這個(gè)概念非常類(lèi)似Java 7中提到的Java Kernel項(xiàng)目。被問(wèn)到類(lèi)似的部署模型會(huì)不會(huì)用在Java ME上時(shí),Brewin說(shuō)當(dāng)然有可能,這會(huì)由Java Community Process來(lái)推進(jìn)。
讓他對(duì)JavaFX和Adobe Flash做個(gè)對(duì)比時(shí),Brewin回答說(shuō)這是一個(gè)“蘋(píng)果和橘子”的比較。Flash有很好的功能,但它永遠(yuǎn)不能交付Java類(lèi)庫(kù)的大部分功能,而 JavaFX可以。他說(shuō)更好的比較是在JavaFX和Apollo(Adobe將要為桌面RIA提供的一個(gè)運(yùn)行時(shí))之間。在這個(gè)擂臺(tái)上,他認(rèn)為 JavaFX會(huì)非常有競(jìng)爭(zhēng)力。