我一直在與JSF + Primefaces自從一年前,當我開始這個項目士管理 ,Web應用程序設想來管理用戶群體或社區集中于知識,某個域的成員都在不斷分享信息和參加社會和教育事件。 JSF是一個標準Java框架,用于使用完善的開發模式為Web應用程序構建用戶界面,并基于許多先前存在的Java Web開發框架的經驗構建。 它是基于組件和服務器端用戶界面的呈現,將經過預處理的基于Web的內容(例如HTML,JavaScript和CSS)發送給客戶端(Web瀏覽器)。 我對這項技術的經驗可在java.net上公開獲得。
同時,我有機會創建了一個概念驗證(PoC)來比較JSF和Vaadin,以幫助開發人員和建筑師在其中之一之間做出決定。 Vaadin是RIA的Web應用程序框架,與其他Javascript庫和基于瀏覽器插件的解決方案相比,它提供了可靠的服務器端體系結構。 業務邏輯在服務器上運行,同時基于Web瀏覽器完全呈現基于Google Web Toolkit(GWT)的更豐富的用戶界面,從而確保流暢的用戶體驗。
PoC的結果令人驚訝地有趣:)最終提出了兩種技術,而不是淘汰其中一種。 我發現,在瀏覽可用的書籍,文章,博客和網站時,盡管能夠實現各種Web應用程序,但是每種技術都具有針對特定類型的應用程序進行了優化的特殊功能。 實際上,如果我們發現JSF對于某種類型的應用程序更好,那是因為使用Vaadin花費相同的時間和代碼。 反邏輯也是正確的。 為了理解這一點,我們必須訪問對Web應用程序有直接影響的兩個基本概念:
- 使用情境認為誰將會運行的應用程序,用戶插入的環境 ,以及用戶與交互設備的用戶 。
- 信息體系結構再次考慮應用程序的用戶 ,他或她所從事的業務領域以及該領域中管理的內容 。
在下面的圖中注意,在這兩個概念中,用戶始終是關注的焦點。 這是因為我們正在評估對用戶與Web應用程序交互方式有直接影響的兩個框架。

訪問上面的概念,我們有:
環境
某些應用程序僅供內部使用,例如Intranet上可用的那些,其他應用程序由外部用戶使用,例如公司網站。
內部應用程序的用戶更為同質且數量有限,這意味著UI可能會稍微復雜一些,以允許更快的用戶交互。 這就解釋了Microsoft Office與Google Docs之爭。 在辦公室環境中,最后一個功能尚不完全可以接受,因為它的功能少于Microsoft Office。 另一方面,它更復雜且更昂貴。 但是,使用有限數量的用戶使用大量功能使培訓部分有一些額外的成本可以從生產力功能中獲利,這是可以接受的。
公司網站針對無限制環境中的異構用戶。 不可能對所有這些人進行培訓,因此需要具有簡短且不言自明的交互作用的更簡單的用戶界面。
考慮到環境,我們建議Vaadin用于有限環境中的同類用戶,而JSF建議用于無限環境中的異構用戶。
設備
不同的設備會分解多套UI組件,這些組件旨在從小屏幕到大屏幕都看起來不錯。 幸運的是,這兩個框架都有支持從常規臺式機到移動設備的所有屏幕尺寸的組件。 問題在于,不同的設備帶來了不同的連接能力,應用程序應準備好應對短帶寬和降低的傳輸速率。 在這種情況下, Vaadin似乎更適合于多種設備,只要設備的種類不是那么廣泛,因為用戶界面是使用JavaScript在本地呈現的,并且具有更豐富的Ajax支持以優化應用程序的交換。服務器上的數據。
業務領域
原則上,高質量的UI框架(例如JSF和Vaadin)可以實現任何業務領域。 問題是團隊對技術的經驗如何,或者掌握技術的學習曲線有多小。 業務與時機有關,提供最佳生產力的技術必將獲勝。 如果您的團隊以前有過Swing的經驗,那么Vaadin是自然的選擇。 如果以前的經驗是更多面向Web的,可以處理HTML,CSS和Scripts,那么建議使用JSF。
內容
內容是在Vaadin和JSF之間進行選擇的非常相關的標準。 如果應用程序需要處理任何類型的大量內容,例如較長的文字描述,視頻,演示文稿,動畫,圖形,圖表等,那么建議使用JSF而不是Vaadin,因為JSF使用Web內容呈現策略來獲利從網絡瀏覽器支持的所有內容類型中提取,而無需其他插件或標簽 。 只有通過使用插件才能在Vaadin上獲得對多種內容的支持,在使用前必須對其進行單獨評估。
用戶
最后,但并非最不重要的是,我們有了用戶,這是選擇UI框架時最重要的標準。 我們將強調兩個方面:
- 用戶數量 :最大的是目標人群,最大的是對應用程序兼容性的關注。 它必須處理幾種版本和類型的瀏覽器,操作系統,具有不同內存容量和監視器分辨率的計算機。 所有這些都沒有故障或安全問題。 對于較大的人群,最合適的技術是跨平臺環境中最兼容的技術(例如JSF),因為它使用了HTML,JavaScript和CSS的平衡組合,而Vaadin僅依賴JavaScript和CSS。 但是,較短的人群使用Vaadin會獲得更好的收益,因為跨瀏覽器的兼容性一直是并且將仍然是Vaadin的開發團隊在幕后要做的非常艱巨的工作。
- 用戶的任務 :如果應用程序是由用戶集中操作的,那么它有望實現更多的用戶任務。 另一方面,如果該應用程序很少使用或間隔使用很短,則用戶任務的集中度較低。 根據PoC的說法, Vaadin是一種技術,由于其快速的視覺響應,它在提供具有更豐富的用戶交互性的用戶任務方面提供了最佳支持。 JSF在涉及用戶交互方面沒有進行優化 。
總而言之,不是丟棄這些框架之一,而是在公司的體系結構選擇中同時考慮兩者,而是訪問上述標準,以確保您使用正確的技術來實現預期的解決方案。 應用這些標準的一種簡單方法是根據項目的特征為每個標準分配權重。 設定哪種技術適合每個標準; 并總結每種技術的權重。 權重最高的項目選擇了要使用的技術。
參考: Hildeberto博客上的JCG合作伙伴 Hildeberto Mendonca在Vaadin和JSF之間進行選擇 。
翻譯自: https://www.javacodegeeks.com/2012/02/choosing-between-vaadin-and-jsf.html