GWT vs Flex vs?
我的公司正试图从.NET应用程序迁移到纯粹基于Web的东西,而非常“ajaxy”。 就用户交互而言,原始的.NET应用程序具有相当的交互性,大致等同于Google Maps(缩放,平移,注释vector地图上的要素)。
我们的.NET开发人员是真正采用Flex2 。 我承认有一个非常强大的Java偏见。 我也有大约一年的GWT经验,可以很快完成任务。 我们的代码基本上是J2EE ,所以GWT看起来很适合我。 我没有使用Flex的经验,所以我真的不能推荐或反对
我们在select框架方面的主要兴趣如下:
- 面向未来
- 适用于所有主stream浏览器
- 快速响应用户体验
- 代码应该是单元可testing的
- 代码必须是可维护的
- 速度和易于发展
- 支持某种types的vectorgraphics(SVG a plus)
小心衡量这两种技术的利弊,甚至推荐第三种方法?
我对Flex只有一点熟悉,但是与GWT合作了很多年。 几年前,我们必须做出一个非常类似的决定(Flash vs GWT),但是原因不同。 最后,我们看到了GWT相对于Flash的许多优点(其中许多适用于Flex):
-
不是所有的客户都有Flash,Adobe的渗透数据是无用的,你需要你自己的(我们有)来看看你的客户实际上有什么。 在企业和教育市场上,渗透率实际上远低于Adobe引用的90年代的高点。
-
GWT是真正的跨浏览器和平台兼容的(Linux,Mac,Windows,Android,iPhone等),而闪光永远不会。 你可能不在乎,但是我们做到了。
-
Flex是专有的Adobe技术,而GWT是完全开放源代码和可定制的
-
GWT与DOM集成,并且页面上的其他内容比Flash和Flex更容易。
-
GWT是用Java编写的,我们都非常了解Java
要解决您的具体问题:
* futureproof
没有什么是真正的未来的certificate,但我觉得GWT和Flex都是未来的certificate。 也许GWT更多,因为它是开源的。
* works on all major browsers
GWT适用于Firefox(以及所有的壁虎浏览器),Safari(以及所有的Webkit浏览器),IE和Opera。 Flex适用于所有的浏览器,但只有Flash支持,所以我会说GWT出现在那里。
* fast & responsive user experience
在支持它的平台上,Flex将会为了用户体验而杀死GWT。 当光滑和光滑时,您无法与闪光灯竞争。
* code should be unit testable
两者都很容易进行unit testing
* code must be maintainable
编码好的时候都可以维护
* speed & ease of development
只要你熟悉他们,我会说这是多么的重要。
* supports vector graphics of some sort (SVG a plus)
我不能说Flex,但GWT支持vectorgraphics通过SVG,通过第三方库。
我不熟悉GWT,但我对Flex很熟悉。 尽pipeGWT是基于Java的(听起来你基本上是一个Java商店),但我会根据你列出的兴趣推荐Flex:
-
面向未来 – Flash为YouTube和networking上的多媒体提供了巨大的比例……他们已经将其构build到video游戏控制台中,英特尔正在将其构build到机顶盒中。 这将会持续很长时间,Adobe一直保持与Flash播放器的100%向后兼容性。
-
适用于所有主stream浏览器 – 是的。 而Flash Player 10也包含Linux系统。 而在pipe理员头痛的情况下(在我看来,这种方式比Javaless很多)。
-
快速响应的用户体验 – 是的,尽pipe在某些情况下Java可以更快。 Flash针对vector渲染进行了优化,所以既然这是您的目标,那么可能会给您比Java更好的性能。
-
代码应该是单元可testing的 – 是的,请参阅FlexUnit。
-
代码必须是可维护的 – 当然。 AS3是一种严肃的语言,而不是玩具脚本语言。 C#或Java的用户将会非常熟悉。
-
快速和易于开发 – 为了您所做的,您将能够find几十个您所描述的示例:缩放和平移Google地图式vector图像。 运行时的核心是一个devise良好的graphics引擎,所以构build一个交互式graphics应用程序是很自然的事情。
-
支持某种types的vectorgraphics(SVG a plus) – 显然,Flash本身就是这样做的。 编译阶段支持SVG(可以在SVG中编译,但是不能在运行时parsingSVG)。 有工具链可以在运行时将SVG转换为SWF。
我所看到的使用GWT的唯一原因就是让你的商店Java保留在服务器和客户端上……但是再一次,你正在寻找最适合的工作,对吧? 在这种情况下,我会说Flash(特别是Flex框架)最适合你想要完成的任务。
还有一点要注意的是iPhone和Android目前都不支持Flash。 更多的人希望在手机上访问networking应用程序。
我是一个使用GWT的项目的一部分,我喜欢它,特别是因为Java是我select的主要编程语言。 我还没有使用Flex,所以我只给你关于GWT的经验。 评论你的一些要求
* futureproof – GWT已经在那里已经有几年了,并且不断得到Google的支持。
*适用于所有主stream浏览器 – 如果您使用GWT,跨浏览器编程从未如此简单。 GWT为你做这个!
*代码应该是unit testing – 是的,你可以unit testingGWT,它也很容易debuggingGWT。
*快速和易于开发 – 由于GWT,Ajax变得简单得多。 只有这一点可以加快你的RIA发展。
除了这些,我只需要说,我喜欢他们的Google Group! 这是非常活跃的,你可以find很多人,可以帮助你,如果你遇到困难。
自从2000年以来,我一直在做Flash / Flex的开发,所以我偏向于Flex。我想回答你的问题,但是这真的归结为你想要实现的交互性和复杂性。
Flex可以让你在JavaScript环境(ASP.NET AJAX,jQuery,GWT)中做几乎不可能的事情,比如简单的3Dgraphics。 在Flex中构build复杂的交互性实际上是微不足道的。 而且速度非常快,可以同时处理大量的animation对象。 Flex可以使用Web服务无缝地与.NET或Java通信。 使用Flex的不利之处在于它感觉就像是一个embedded式应用程序,而不是紧密集成的东西。
如果你要坚持JavaScript的方法,通常我会build议使用像jQuery这样的语言不可知论者。 但是既然你已经有了GWT的经验,那么你的项目可能会有效。 不利的一面是,GWT最终仍然是JavaScript,所以你将受到浏览器中可能的速度和交互性的限制。
Sun最近为这类RIA推出了一项名为JavaFX的新技术。 你可能想检查一下(javafx.com)。 这是假设运行在Java 5或更好的,但绝对不会有Flash那样的客户端渗透。 不过,我认为,鉴于您对testing的要求,目前这项技术可能不合适。
另外,我想特洛伊·吉尔伯特在他的职位上犯了一个错误。 具体来说,他似乎指出一个GWT应用程序将运行(由客户端)在Java中。 我几乎可以肯定的是,一个GWT应用程序首先在Java中编写,然后GWT将编译成客户端运行的JavaScript库。
我已经使用了两种技术一段时间了。
未来的保障 – 他们都会成功,我猜,但每种技术将在不同的情况下,首选。 例如,在大型(大多数是内联网)的企业,如ui(Flex可以在任何服务器平台(jvm,.Net,php,ruby,coldfusion)的顶部使用Flex)。 GWT否则将在传统的jvm后端(tomcat + spring等)的中小型应用中占据主导地位。
适用于所有主stream浏览器 – 这两种方式都没有问题。 Flex绝对优秀,当安装Flash插件时,不需要解决任何跨浏览器的兼容性(当然,浏览器是被动的,当Flash应用程序运行:)。 我记得我们在GWT和传统麻烦制造者IE6方面有一些小问题,但没有什么可怕的。
快速响应的用户体验 – 都是同类产品中的佼佼者。 Flex我认为绝对是所有RIA解决scheme(也许silverlight,java fx只能是最丰富的竞争对手)的顶级,特别是与LCDS集成,具有诸如数据pipe理,真正的服务器端数据推送等很酷的function。GWT是顶级之一在ajax框架类别。 你需要的最丰富和最复杂的用户界面,使用flex的理由更多。 在任何情况下,parsingJavaScript不能更快和响应,然后编译的动作/瑞士法郎。
代码应该是单元可testing的 – 是的,它们是可testing的。
代码必须是可维护的 – 如果您使用良好的IDE(例如Flex Builder),则优秀的维护动作与Java(gwt)相当。
速度和易于开发 – 如果你了解你的员工,这两者都是完美的。 一切都取决于你的背景。 对于典型的java开发人员来说,flex的学习曲线可能会有点困难(你需要学习一个新的compliler / runtime,可能是新的IDE或者至less新的eclipse IDE插件:)。 Flash的一些知识是+,但不是必需的,通常只有像构build自己的组件等特定的任务。
支持某种types的vectorgraphics(SVG a plus) – 我记得没有什么问题,我没有太多的经验,但是在将来FXG将会被完成时,我将会看到它。
开发和部署成本 – 胜利者在这里是清楚的。 GWT。 Flex是为了获利而开发的。 虽然self是开源的,但最好的工具(Flex Builder,新的Flash Builder / Catalyst)和框架(LCDS)是商业化的,而且根本不便宜。 看每个CPU价格表LCDS,你会知道我在说什么。 使用GWT,大多数质量工具/框架至less是开源或免费的。 除了像ext gwt和smartgwt EE这样的高级组件。 显然你可以没有他们的生活。
这真的是一个苹果/桔子的问题。 通过GWT,您可以获得以Java编写所有内容的纯粹内容。 具有讽刺意味的是,最终的结果永远不会像网站以外的其他任何东西。
使用Flex,你可以写一些感觉像应用程序的东西。 而且,也许最重要的是,对于Flex来说,没有什么是编程式的,无论是function还是graphics。
如果您正在开发针对特定用户群的应用程序,则Flex将以英里为单位获胜。 如果你正在build立一个大众社交网站,GWT肯定是一个更好的select。
未来的certificate更多是关于架构而不是关于特定的技术。 有了正确的架构,您可以轻松地换出演示技术。 我喜欢Silverlight / MVVM,虽然这种模式确实需要一些计划来支持HTML5。
尽pipeiPhone和Android不支持Flash YET,但您还应该注意到,Google会创build针对手机的应用程序。 他们这样做是因为移动设备上的屏幕比典型的笔记本电脑/台式机小得多。 因此,缺乏闪光灯支持是一个非问题,因为有针对性的应用程序提供了更好的用户体验。
一年前我的公司面临着同样的决定。 你有没有听说过GXT http://extjs.com/products/gxt/ ? 我们最终select了GXT。 作为一名.NET开发人员,从.NET转换到GXT非常棒。 我们用GXT / GWT开发了一个全公司的pipe理程序。 缺点是,与Flex相比,GXT是由一个更小的团队开发的,而社区并不是那么大。 但是,它提供了令人印象深刻的浏览器内体验。 一探究竟。
我喜欢kirushik的评论,声称“GWT有3D支持”。 不是那么快, 让我们在这里完全诚实 。 你需要一个特殊的插件来做到这一点:“需要谷歌O3D插件下载”OOPS!
对不起,这不是一个直接的评论/回应,但我觉得这是一个重要的观点,不应该简单地忽略,特别是当那么多的JavaScript粉丝在外面嚎叫不要使用“邪恶”插件…(他们为这个非问题而哭泣的真正原因,特别是当公司完全控制在他们的私人networking上部署Flash的简单任务时,他们认为这对Flex或Silverlight来说是一个轻松的打击,可以帮助他们提升自己的技能套)。
我知道你问过关于GWT和Flex的问题,但是如果你对最终决定有发言权,你应该认真考虑是否要从AJAX和ASP.NET中移走。 尽pipeAdobe,Microsoft和Sun说了什么,RIA(富互联网应用程序)还没有准备好黄金时段的浏览器体验,除了有限的forms(如video播放器)。
为浏览器编写的全面的应用程序, 使用本地浏览器技术 ,将为用户提供最好的体验,同时拥有最多的开发资源来维护它。
ASP.NET不会去任何地方。 Java或Flex也不是。 但是,为了达到最佳的用户体验和可维护性(由于存在更多可用的编程资源),您无法打败基于本机的基于浏览器的应用程序。
ASP.NET MVC纯粹是基于Web的,而且非常Ajaxy。 你可能会检查出来。 它类似于Ruby on Rails(没有Rails),开发人员(甚至是新开发的ASP.NET开发人员)都相当喜欢它。