在Vaadin和JSF之間選擇

隨著最新版本的Primefaces 3.0的發布,JSF終于達到了前所未有的成熟度和實用性,使其與其他流行的Rich Internet Applications(RIA)選項如Google Web Toolkit(GWT),ExtJS,Vaadin,Flex和其他。 這個開源項目也被證明是非常活躍的,并且在不斷發展。

我一直在與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框架時最重要的標準。 我們將強調兩個方面:

  1. 用戶數量 :最大的是目標人群,最大的是對應用程序兼容性的關注。 它必須處理幾種版本和類型的瀏覽器,操作系統,具有不同內存容量和監視器分辨率的計算機。 所有這些都沒有故障或安全問題。 對于較大的人群,最合適的技術是跨平臺環境中最兼容的技術(例如JSF),因為它使用了HTML,JavaScript和CSS的平衡組合,而Vaadin僅依賴JavaScript和CSS。 但是,較短的人群使用Vaadin會獲得更好的收益,因為跨瀏覽器的兼容性一直是并且將仍然是Vaadin的開發團隊在幕后要做的非常艱巨的工作。
  2. 用戶的任務 :如果應用程序是由用戶集中操作的,那么它有望實現更多的用戶任務。 另一方面,如果該應用程序很少使用或間隔使用很短,則用戶任務的集中度較低。 根據PoC的說法, Vaadin是一種技術,由于其快速的視覺響應,它在提供具有更豐富的用戶交互性的用戶任務方面提供了最佳支持。 JSF在涉及用戶交互方面沒有進行優化

總而言之,不是丟棄這些框架之一,而是在公司的體系結構選擇中同時考慮兩者,而是訪問上述標準,以確保您使用正確的技術來實現預期的解決方案。 應用這些標準的一種簡單方法是根據項目的特征為每個標準分配權重。 設定哪種技術適合每個標準; 并總結每種技術的權重。 權重最高的項目選擇了要使用的技術。

參考: Hildeberto博客上的JCG合作伙伴 Hildeberto Mendonca在Vaadin和JSF之間進行選擇 。


翻譯自: https://www.javacodegeeks.com/2012/02/choosing-between-vaadin-and-jsf.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373354.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373354.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373354.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

20145202馬超《信息安全系統設計基礎》實驗二總結

[實驗二](http://www.cnblogs.com/nizaikanwoma/p/6131778.html) 轉載于:https://www.cnblogs.com/tuolemi/p/6131987.html

java 連接ldap_ldap java 連接demo

public class LDAPHelper {/*** LDAP可以理解為一個多級目錄,這里,表示要連接到那個具體的目錄*/private final String baseDn "ouPeople,dcchangyeyi,dccom";private LdapContext ctx null;private final Control[] connCtls null;private…

flask開發restful api系列(1)

在此之前,向大家說明的是,我們整個框架用的是flask sqlalchemy redis。如果沒有開發過web,還是先去學習一下,這邊只是介紹如果從開發web轉換到開發移動端。如果flask還不是很熟悉,我建議先到這個網站簡單學習一下&am…

Apache Commons Lang StringUtils

因此,認為最好談論我喜歡的另一個Java庫。 它已經存在了一段時間,也許不是最令人興奮的庫,但是它非常有用。 我可能每天都使用它。 org.apache.commons.lang.StringUtils StringUtils是Apache Commons Lang( http://commons.apac…

JEE7:展望新時代

計劃于2012年下半年發布的Java EE 7預計的JSR都已啟動并正在運行。 Java EE 7發行版是日期驅動的,它將反映該行業遷移到云中時不斷變化的需求:任何未準備就緒的內容將推遲到Java EE 8中使用 。 這是Java EE 7平臺中不同規范的關鍵功能的更新和摘要。 1。…

Cocos2d-JS項目之UI界面的優化

測試環境: iphone4、iOS6.1.2、chrome 37.2062.60,Cocos2d-js 3.6 之前寫了不少,實際項目也按這個去優化了,也有效果,但到最后才發現,尼瑪,之前都搞錯了,之所以有效果是歪打正著。。…

java數_java大數

java大數還是很好用的!基本加入:import java.math.BigInteger;import jave.math.BigDecimal;分別是大數和大浮點數。首先讀入可以用:Scanner input new Scanner(System.in);BigInteger a input.nextBigInteger();這樣讀還是很方便的當然還有…

【Qt之Quick模塊】6. QML語法詳解_2類型系統

描述 在QML文檔中對象層次結構的定義中可能使用的類型可以來自各種來源。它們可能是: 由QML語言原生提供通過QML模塊通過c注冊由QML模塊作為QML文檔提供 此外,應用程序開發人員可以通過直接注冊c類型,或者通過在QML文檔中定義可重用的組件(然后可以導…

JS顯示當前時間(包含農歷時間)

時間格式: JavaScript代碼: var sWeek new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");var dNow new Date();var CalendarData new Arra…

Maven原型創建技巧

我最近需要為姜黃SOA項目創建一些Maven原型。 對于不了解的人來說, Maven原型是一種基于一些預先罐裝的項目模板生成項目的方法。 對于當前的姜黃SOA原型,它將創建一個多模塊Maven項目,該項目包含Interface和Service項目以及基本的WSDL和適當…

MyBatis操作指南-與Spring集成(基于注解)

轉載于:https://www.cnblogs.com/weilu2/p/mybatis_spring_integration_basic_on_annotation.html

Windows mysql boost_Win7下Boost庫的安裝

Boost庫是C領域公認的經過千錘百煉的知名C類庫,涉及編程中的方方面面,簡單記錄一下使用時的安裝過程1.boost庫的下載boost庫官網主頁:www.boost.org2.安裝將下載的壓縮包解壓到指定的目錄3.建立編譯工具bjam.exe在源碼目錄下執行bootstrap.ba…

5.2與終端進行對話

Linux提供了一個特殊的設備 /dev/tty ,該設備始終是指向當前終端或者當前的登錄會話。 FILE* output fopen("/dev/tty", "w"); //向終端寫入字符串 fprintf(output, "%s\n", "world"); FILE* input fopen("/dev/tty…

JVM:如何分析線程轉儲

本文將教您如何分析JVM線程轉儲,并查明問題的根本原因。 從我的角度來看,線程轉儲分析是掌握Java EE生產支持的任何個人最重要的技能。 您可以從線程轉儲快照中獲取的信息量通常遠遠超出您的想象。 我的目標是與您分享我在過去10年中積累的有關線程轉儲分…

極光推送JPush的快速集成

首先到極光推送的官網上創建一個應用,填寫對應的應用名和包名。 創建好之后下載Demo 提取Sdk里面的圖片和xml等資源文件放自己項目的相應位置,然后要注意的是.so文件的放置位置: 在main目錄下新建一個jniLibs文件夾,放在這個文件夾…

c遺傳算法的終止條件一般_Matlab2 :Matlab遺傳算法(GA)優4~-r-具箱是基于基本操作 聯合開發網 - pudn.com...

Matlab2所屬分類:matlab例程開發工具:PDF文件大小:115KB下載次數:76上傳日期:2007-09-07 20:04:29上 傳 者:錢廣說明: :Matlab遺傳算法(GA)優4~-r-具箱是基于基本操作及終止條件、二…

用程序輸出表格

做應用程序的時候經常需要輸出excel表格,除了不同語言接口完善程度不同的麻煩以及要添加各種外部引用的麻煩之外還要考慮應用環境不同的office版本的問題,實在麻煩 當只需要輸出數據,不管顏色什么的的話,有個避免上述麻煩的辦法就…

elk系列1之入門安裝與基本操作

preface 我們每天都要查看服務器的日志,一方面是為了開發的同事翻找日志,另一方面是巡檢服務器查看日志,而隨著服務器數量以及越來越多的業務上線,日志越來越多,人肉運維相當痛苦了,此時,參考現…

Java 7 –反編譯項目硬幣

大家好,該是從2012年開始寫作的時候了。正如您在其他博客中可能已經看到的那樣,有一些更改可以使您使用Java編程時的開發人員生活變得更加輕松:Diamond運算符,Switchs中的Strings,嘗試使用資源,多次捕獲等 …

git安裝后找不見版本_無法安裝最新版本的Gitlab

這個問題不是代碼,而是Gitlab的安裝.我現在試圖安裝Gitlab幾天沒有成功.實際上,很久以前,他們提出了使用wget的方法非常好,但由于我們必須使用Curl的方法,所以不可能比下載更進一步.在Ubuntu 14.04機器上,以下命令有效:curl https://packages.gitlab.com/install/re…