vaadin

随着最新版本的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内容呈现策略来获利从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

vaadin

vaadin_在Vaadin和JSF之间选择相关推荐

  1. 在Vaadin和JSF之间选择

    随着最新版本的Primefaces 3.0的发布,JSF终于达到了前所未有的成熟度和实用性,使其与其他流行的Rich Internet Applications(RIA)选项如Google Web T ...

  2. php 时间选择,PHP-在学说2中的日期之间选择条目

    PHP-在学说2中的日期之间选择条目 我将因这个无法修复的最小错误而发疯. 我想在两天之间选择条目,下面的示例说明了我所有的失败: 选择1. $qb->where('e.fecha > ' ...

  3. python go rust_一个 Python 初学者应该如何在 Rust 和 Go 之间选择?

    已经学了一段Python,喜欢他的风格.像库概念,变量定义,编程风格都喜欢. 对指针概念不太理解,C++停留在大一上的VC6.0时代. 想再学一门快速编译型的语言.哪位能比较一下Rust和Go,根据以 ...

  4. vue和react选择_如何在角度React和Vue之间选择,并且每次都正确

    vue和react选择 If you're like me, you absolutely love developing web applications and I am also 100% su ...

  5. vaadin_学习Vaadin了

    vaadin 就是这个! 经过10个月的工作之后,我的第一本书问世了: Packt和Amazon现在提供" Learning Vaadin". 首先,什么是Vaadin? Vaad ...

  6. vaadin_学习Vaadin

    vaadin Vaadin是Java中的Rich Internet Application框架,可让开发人员以非常有效的方式对应用程序进行编码. 有关Vaadin的更多信息,请访问其网站. 当人们想学 ...

  7. vaadin_为什么我仍然爱Vaadin

    vaadin 事情按顺序出现很有趣. 最近,在三个不同的场合,我偶然发现了一些问题,询问人们使用哪些前端技术. 每次,我的答案都是Vaadin . 不幸的是,某些地方( 例如 Twitter)太局限了 ...

  8. [转:作者: 出处:javaresearch ]选择JSF不选Struts的十大理由

    总的来说,我建议在新项目中优先考虑JSF.虽然常常有一些商业上的因素迫使我们为现有的项目选择了Struts,而且那些解决方案还有待考验 ,但是,让我们面对一个事实:JSF比Struts好多了. 下面是 ...

  9. 跨语言RPC框架Hessian、Thrift、Protocol Buffer之间的选择

    为什么80%的码农都做不了架构师?>>>    总结在几者之间选择的考量: 1. 如果你不需要很多语言相互调用, 希望保持清晰的java接口代码(无任何业务不相关的接口继承和方法,属 ...

最新文章

  1. Android 自定义实现switch开关按钮
  2. jsp连接mysql显示404,SpringBoot+jsp项目启动出现404的解决方法
  3. 王者荣耀进不去服务器维护中,王者荣耀苹果版更新后进不去 王者荣耀iOS版服务器维护怎么办...
  4. 【NOIP模拟】开車【回退贪心】【multiset】
  5. 人类跌落梦境显示无法连接服务器,人类跌落梦境手游进不去闪退怎么办 人类跌落梦境无法进入解决方法...
  6. VMWare的The network bridge on device VMnet0 is not running故障解决
  7. 关键系统的JVM参数推荐
  8. GridView控件与DataList控件DataKeyNames、DataKeysField、DataKeys用法
  9. 如何解决“呈现控件时出错”的问题(转)
  10. mycat基础实验之主从配置读写分离和分表
  11. php 接口安全性,开发者,服务提供商
  12. git 小乌龟 配置_Git-TortoiseGit完整配置流程
  13. 通达信登录服务器文件夹,我也搞定了通达信交易系统多帐号登录交易!
  14. 如何通过API接口,获取拼多多商品详情数据
  15. USACO 土地购买
  16. 移动通信基础(12)分集
  17. python语言的实验心得体会范文_关于实验的心得体会范文5篇
  18. Linux内核模块编程指南(一)(转)
  19. Mac VMware Fusion提示物理内存不足
  20. 手机文件管理ftp服务器,ftp工具手机版(ftp文件传输管理工具)V1.0.2 手机版

热门文章

  1. Safari浏览器不支持……
  2. 《走遍中国》珍藏版(二)
  3. SpringCloudConfig(了解)
  4. Ajax判断用户名是否可用
  5. JS生成x到y的随机数
  6. idea初始化git 初始化git仓库
  7. HDU1231(DP)
  8. java 谓词_谓词::不适合Java
  9. jdk8 获取上一个月时间_JDK 10:FutureTask获取一个toString()
  10. junit数据驱动测试_使用Junit和Easytest进行数据驱动的测试