我一直在与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