在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.mzph.cn/news/373354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flask开发restful api系列(1)

在此之前,向大家说明的是,我们整个框架用的是flask sqlalchemy redis。如果没有开发过web,还是先去学习一下,这边只是介绍如果从开发web转换到开发移动端。如果flask还不是很熟悉,我建议先到这个网站简单学习一下&am…

JS显示当前时间(包含农历时间)

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

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

转载于:https://www.cnblogs.com/weilu2/p/mybatis_spring_integration_basic_on_annotation.html

JVM:如何分析线程转储

本文将教您如何分析JVM线程转储,并查明问题的根本原因。 从我的角度来看,线程转储分析是掌握Java EE生产支持的任何个人最重要的技能。 您可以从线程转储快照中获取的信息量通常远远超出您的想象。 我的目标是与您分享我在过去10年中积累的有关线程转储分…

极光推送JPush的快速集成

首先到极光推送的官网上创建一个应用,填写对应的应用名和包名。 创建好之后下载Demo 提取Sdk里面的图片和xml等资源文件放自己项目的相应位置,然后要注意的是.so文件的放置位置: 在main目录下新建一个jniLibs文件夹,放在这个文件夹…

elk系列1之入门安装与基本操作

preface 我们每天都要查看服务器的日志,一方面是为了开发的同事翻找日志,另一方面是巡检服务器查看日志,而随着服务器数量以及越来越多的业务上线,日志越来越多,人肉运维相当痛苦了,此时,参考现…

Java 7 –反编译项目硬币

大家好,该是从2012年开始写作的时候了。正如您在其他博客中可能已经看到的那样,有一些更改可以使您使用Java编程时的开发人员生活变得更加轻松:Diamond运算符,Switchs中的Strings,尝试使用资源,多次捕获等 …

在Excel表里面插入背景图

工作中我们会经常用到MS Excel,通常我们打开MS Excel,里面的工作表都是空白单调的背景。当然了,MS Excel可以在工作簿里面插入背景图片。那么问题来了,如果你没有安装Microsoft Office,该如何在Excel文件里面插入好看的…

实现两级下拉框的联动

1.实现两级下拉框的联动。 功能&#xff1a;实现点击年级下拉框&#xff0c;加载对应科目的下拉框。 第一步&#xff1a;首先要加载年级下拉框中的数据。 01.在GradeDAL层&#xff08;数据访问层&#xff09;写一个方法&#xff0c;查询所有年级的信息。 /// <summary>//…

python连接SQL Server取多个结果集:Pymssql模块

基本的用法可以参考&#xff1a;python连接SQL Server&#xff1a;Pymssql模块 和上一篇文章中的代码&#xff0c;只取一个结果集不同&#xff0c;这次会一次运行2个sql语句&#xff0c;然后分别取出2个结果集&#xff0c;打印输出。 代码中有详细的注释&#xff0c;一看就明白…

Xen安全架构sHype/ACM策略配置图文教程

实验要求 1. 熟悉Xen虚拟化平台部署&#xff1b; 2. Xen sHype/ACM安全架构中的Simple TE和Chinese Wall策略及事实上现机制的分析与验证。 第1章 Xen环境部署 1.1 版本号选择 因为Ubuntu使用广泛。软件包易于下载。我们选择Ubuntu系统进行Xen部署…

java弹出虚拟键盘_JS实现电脑虚拟键盘的操作

本文实例为大家分享了JS实现电脑虚拟键盘的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下需求&#xff1a;1.当输入框光标聚焦时&#xff0c;电脑虚拟键盘弹出2.在输入框输入内容时&#xff0c;键盘跟着变化具体实现代码如下&#xff1a;Html部分&#xff1a;电脑键…

JBoss Drools –入门

这篇文章是关于我如何掌握JBoss Drools的 。 其背后的原因是&#xff1a;SAP收购了我公司当前的规则引擎&#xff0c;而Drools是我们将寻找的另一种选择&#xff0c;只要有人掌握了概念验证的技能即可。 尽管似乎有大量的文档&#xff0c;但是我总是会通过示例来发现它是有帮助…

android使用bintray发布aar到jcenter

前言 这两天心血来潮突然想把自己的android library的aar放到jcenter里面&#xff0c;这样一来自己便可以在任何时间任何地点通过internet得到自己的library的引用了&#xff0c;况且现在android studio已经默认使用jcenter的repositories作为依赖来源&#xff0c;以前的mavenc…

PHP 进程详解

PHP 进程详解PHP 进程详解 如下内容从《操作系统精髓与设计原理》中总结提炼得出&#xff0c;删除了大部分对于理解进程有干扰的文字&#xff0c;对进程知识结构进行的梳理。几乎所有内容为按照书本上摘抄下来的&#xff0c;我目前还总结提炼不出像作者这么深刻的见解。那么就先…

java都要caps标点_第 1 章 管理 Java CAPS 用户

第 1 章 管理 Java CAPS 用户在此处列出的主题提供了有关如何管理 Sun JavaTM Composite Application Platform Suite (Java CAPS) 中的用户的信息。如果您有任何问题&#xff0c;请参见 http://goldstar.stc.com/ 中的 Java CAPS Web 站点。管理系统信息库用户此类别包含以下用…

基于OpenCV 的美颜相机推送直播流

程序流程&#xff1a; 1.图像采集 先从opencv&#xff08;2.4.10版本&#xff09;采集回来摄像头的图像&#xff0c;是一帧一帧的 每一帧图像是一个矩阵&#xff0c;opencv中的mat 数据结构。 2.人脸的美化 人脸美化&#xff0c;我们用的皮肤检测&#xff0c;皮肤在颜色空间是特…

Spring线程池服务

线程池对于执行同步和异步过程非常重要。 本文介绍如何使用Spring开发和监视线程池服务。 创建线程池已通过两种替代方法进行了说明。 二手技术 &#xff1a; JDK 1.6.0_21 Spring3.0.5 Maven的3.0.2 步骤1&#xff1a;建立已完成的专案 创建一个Maven项目&#xff0c;如下…

我的世界java村民繁殖_我的世界:Java19w08a更新,村民加强守卫,小狐狸背叛

虽然这句话很绕口&#xff0c;其实意思很简单&#xff0c;那就是之前的隐身药水没有什么用&#xff0c;该被打还是被打。因为这个可是害惨了流浪商人&#xff0c;不过这次好了&#xff0c;流浪商人在喝了隐身药水之后就能安全度过晚上了。NO.3 皮革马铠马铠是属于马的盔甲&…

欧莱雅眉笔banner个人设计

眉笔名称&#xff1a;眉笔大师三头塑形眉笔 &#xff0c;之所以没用吧这个商品名称放大&#xff0c;是我觉得它是一个名称&#xff0c;而我把自己想的广告词“出彩只需一笔” 放大不仅能凸显出这只笔的强大&#xff0c;还表示了一种有了我这支眉笔你会更出彩更漂亮&#xff0c…