XAML或JavaFx?
這是使用XAML和JavaFx構(gòu)建應(yīng)用程序的快速,主觀, 無權(quán)且非常不科學(xué)的比較。 比較是基于我與每個(gè)人合作的個(gè)人經(jīng)驗(yàn)。 在XAML方面,這意味著WPF和Win8存儲(chǔ)應(yīng)用程序 。 在JavaFx方面,這意味著Windows 7應(yīng)用程序。
JavaFX
JavaFx被Oracle(以及當(dāng)時(shí)的Sun)吹捧為構(gòu)建UI的新方法。 它專注于支持現(xiàn)代UI所需的靈活性和圖形精美性。 JavaFx可以在瀏覽器內(nèi)外運(yùn)行,也可以在各種操作系統(tǒng)上運(yùn)行。
我在JavaFx方面的經(jīng)驗(yàn)是構(gòu)建僅針對(duì)Windows 7的外觀美觀且非常現(xiàn)代的桌面應(yīng)用程序。我們選擇在ScalaFx(Scala中的聲明性JavaFx DSL)中編寫視圖代碼。 效果很好:該應(yīng)用程序看起來不錯(cuò),運(yùn)行良好,并且代碼庫很干凈。 但是有幾件事困擾著我:
- UI代碼并不像我希望的那樣聲明。 總的來說,我們發(fā)現(xiàn)內(nèi)置控件不適合我們的需求,因此大多數(shù)UI是從.pngs構(gòu)建的,這些控件附加了鼠標(biāo)事件。 這些事件會(huì)將.png更改為懸停,單擊等。 盡管這很好用,但是這意味著視圖中的邏輯比我想要的更多。
- 由于上述原因,在某種程度上很難創(chuàng)建XAML數(shù)據(jù)模板之類的東西,然后將數(shù)據(jù)綁定到其中。 再次,這導(dǎo)致視圖中更命令式的邏輯。
我真正喜歡的東西是:
- 在我看來,與Java同行相比,我們可以在視圖中使用Scala的事實(shí)確實(shí)減少了視圖代碼中的噪音。 例如,使用函數(shù)是一等公民的語言,附加鼠標(biāo)事件處理程序要容易得多。
- 從測(cè)試中以無頭模式運(yùn)行視圖代碼是相當(dāng)容易的。 盡管視圖代碼的TDD工作流程稍微慢了點(diǎn),但這仍可以使它看起來不錯(cuò)。
XAML
XAML用于一系列Microsoft的UI技術(shù)中,包括WPF和Win8商店應(yīng)用程序(以前稱為Metro)和Silverlight。 XAML UI框架還專注于支持現(xiàn)代UI的需求,并且還可以在瀏覽器內(nèi)外運(yùn)行。
我對(duì)XAML的經(jīng)驗(yàn)來自WPF和Win8商店應(yīng)用程序,在這些應(yīng)用程序中,我們遵循MVVM方法,沒有任何特定框架,但受Caliburn.Micro啟發(fā),采用了一些自定義的約定,以簡化XAML中的某些重復(fù)-特別是在綁定方面。
這也工作得很好,產(chǎn)生了不錯(cuò)的應(yīng)用程序,但是同樣有些事情困擾著我:
- 首先,我討厭用XML編寫代碼。 因此,我根本不喜歡XAML語言。 您可能會(huì)在此時(shí)說XAML是由工具生成的,而不是由人類編寫的。 你可能是對(duì)的。 盡管如此,我的經(jīng)驗(yàn)是您確實(shí)需要手工編寫大多數(shù)XAML。 我發(fā)現(xiàn)這樣做比使用Blend或Visual Studio編輯XAML更快,更易于維護(hù)。
- 我不喜歡背后的代碼。 在我從事的項(xiàng)目中,我們一直將它們保持在很小的范圍內(nèi),但是它們?nèi)匀辉谡T人的狀態(tài)下在脆弱的時(shí)刻隱藏?zé)o法測(cè)試的代碼。
我真正喜歡的東西是:
- 與JavaFx一樣,無頭運(yùn)行視圖進(jìn)行測(cè)試非常簡單。 同樣,這將啟用可接受的TDD工作流程。 再次,盡管有點(diǎn)慢。
- 數(shù)據(jù)綁定效果很好。 尤其是有一些慣例可以減少樣板代碼。
- 數(shù)據(jù)模板尤其可以使視圖保持聲明性。
結(jié)論?
嗯,我認(rèn)為這里沒有足夠的數(shù)據(jù)來得出很多結(jié)論。 我將得出的結(jié)論是,對(duì)于構(gòu)建Windows應(yīng)用程序,我的經(jīng)驗(yàn)是JavaFx和XAML都可以完成工作,但是使用XAML的速度更快,因?yàn)閿?shù)據(jù)綁定更容易,數(shù)據(jù)模板有很多幫助,而且似乎更少手動(dòng)滾動(dòng)控件。
但是要當(dāng)心:我比較的項(xiàng)目并不相同,因此比較蘋果和Oragnes的過程是有一定水平的。 也這個(gè)很主觀。 YMMV。
更新– 2012-12-21
根據(jù)反饋,我認(rèn)為上述結(jié)論過于模糊。 需要澄清的是:根據(jù)我的經(jīng)驗(yàn),兩種技術(shù)都可以使用,但是XAML可以更快(因此更便宜,并且可以更快地投放市場(chǎng))使用。
參考: XAML或JavaFx? 從我們的JCG合作伙伴 Christian Horsdal在Horsdal博客上獲得。
翻譯自: https://www.javacodegeeks.com/2012/12/xaml-or-javafx.html
總結(jié)
以上是生活随笔為你收集整理的XAML或JavaFx?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring MVC:使用基于Java的
- 下一篇: 安卓倒数软件(倒数安卓)