37

我的公司正试图从.NET应用程序迁移到纯粹基于 Web且非常“ajaxy”的应用程序。最初的 .NET 应用程序具有相当的交互性,就用户交互而言,大致相当于 Google 地图(缩放、平移、在矢量图上标注特征)。

我们的 .NET 开发人员非常喜欢Flex2。我承认我对 Java 有很强的偏见。我也有大约一年的GWT经验,并且可以用它很快完成工作。我们的代码库主要是J2EE,所以 GWT 似乎很适合我。我对 Flex 的经验为零,所以我真的无法推荐或反对它

我们选择框架的主要兴趣如下:

  • 面向未来
  • 适用于所有主要浏览器
  • 快速响应的用户体验
  • 代码应该是可单元测试的
  • 代码必须是可维护的
  • 开发速度和易用性
  • 支持某种矢量图形(SVG 加分)

是否愿意权衡这两种技术的优缺点,甚至推荐第三种选择?

4

12 回答 12

32

我对 Flex 只是稍微熟悉,但与 GWT 合作多年。几年前,我们不得不做出非常相似的决定(Flash 与 GWT),但原因不同。最后,我们看到了 GWT 相对于 Flash 的许多优势(其中很多都适用于 Flex):

  • 并非我们所有的客户都有 Flash,Adobe 的渗透率数字毫无用处,您需要自己的(我们拥有)来查看您的客户实际拥有什么。在企业和教育市场,渗透率实际上远低于 Adob​​e 引用的 90 年代高位。

  • GWT 是真正的跨浏览器和平台兼容(Linux、Mac、Windows、Android、iPhone 等),而 flash 永远不会。你可能不在乎,但我们做到了。

  • Flex 是专有的 Adob​​e 技术,而 GWT 是完全开源和可定制的

  • GWT 与 DOM 集成,页面上的所有其他内容都比 flash 和 Flex 容易得多。

  • GWT 是用 Java 编写的,我们都非常了解 Java

要解决您的具体问题:

*  futureproof

没有什么是真正的未来证明,但我认为 GWT 和 Flex 都将是相当未来的证明。也许 GWT 更是如此,因为它是开源的。

* works on all major browsers

GWT 适用于 Firefox(和所有 gecko 浏览器)、Safari(和所有 Webkit 浏览器)、IE 和 Opera。Flex 适用于所有浏览器,但前提是支持 Flash,所以我会说 GWT 是最重要的。

* fast & responsive user experience

在支持它的平台上,Flex 会为了用户体验而扼杀 GWT。在平滑度和光滑度方面,您无法与闪光灯竞争。

* code should be unit testable

两者都易于单元测试

* code must be maintainable

当编码良好时,两者都是可维护的

* speed & ease of development

只要您熟悉它们,我会说这很重要。

* supports vector graphics of some sort (SVG a plus)

我不能代表 Flex,但 GWT 通过 SVG 和第三方库支持矢量图形。

于 2009-01-08T23:21:05.947 回答
15

我不熟悉 GWT,但我对 Flex 非常熟悉。尽管 GWT 是基于 Java 的(听起来您主要是一家 Java 商店),但我还是会根据您列出的兴趣推荐 Flex:

  • 面向未来 - Flash 为 YouTube 和网络上的大量多媒体提供支持……他们已将其内置到视频游戏机中,而英特尔正在将其内置到机顶盒中。它将在这里存在很长时间,并且 Adob​​e 始终保持 100% 向后兼容其 Flash 播放器。

  • 适用于所有主要浏览器 - 是的。Flash Player 10 也包括 Linux 系统。并且管理的麻烦非常小(在我看来,比 Java 少得多)。

  • 快速且响应迅速的用户体验 - 是的,尽管 Java 在某些情况下可能更快。Flash 针对矢量渲染进行了优化,因此既然这是您的目标,它可能会为您提供比 Java 更好的性能。

  • 代码应该是可单元测试的——是的,请参阅 FlexUnit。

  • 代码必须是可维护的——绝对是。AS3 是一种严肃的语言,而不是玩具脚本语言。C# 或 Java 的用户会非常熟悉它。

  • 速度和易于开发 - 对于您正在做的事情,您将能够找到数十个与您所描述的完全一致的示例:缩放和平移类似 Google 地图的矢量图像。运行时的核心是精心设计的图形引擎,因此构建交互式图形应用程序是其自然的苦差事。

  • 支持某种矢量图形(SVG 是一个优势)——显然,Flash 本身就是这样做的。在编译阶段支持 SVG(您可以在 SVG 中编译,但不能在运行时解析 SVG)。有一些工具链可以在运行时为您将 SVG 转换为 SWF。

我看到使用 GWT的唯一原因是将您的商店 Java 保留在服务器和客户端上……但话又说回来,您正在寻找最适合这项工作的技术,对吧?在这种情况下,我会说 Flash(尤其是 Flex 框架)最适合您想要完成的任务。

于 2009-01-08T17:16:25.743 回答
8

需要注意的另一点是 iPhone 和 Android 目前都不支持 Flash。越来越多的人希望在手机上访问网络应用程序。

于 2009-02-11T01:28:24.410 回答
3

我参与了一个使用 GWT 的项目,我很喜欢它,特别是因为 Java 是我选择的主要编程语言。我没有使用过 Flex,所以我只向您提供有关我使用 GWT 的经验的信息。评论您的一些要求

*面向未来 - GWT 已经存在了几年,并且一直受到 Google 的支持。

*适用于所有主要浏览器 - 如果您使用过 GWT,跨浏览器编程从未如此简单。GWT 为您做到这一点!

*代码应该是可单元测试的——是的,你可以对 GWT 进行单元测试,它也很容易调试 GWT。

*速度和易于开发 - 多亏了 GWT,Ajax 变得不那么复杂。仅此一项就可以加快您的 RIA 开发。

除了这些,我只想说,我喜欢他们的 Google Group!它非常活跃,您可以在那里找到很多可以帮助您的人,以防您遇到问题。

于 2009-04-15T14:25:10.103 回答
2

Sun 最近为这类 RIA 推出了一种称为 JavaFX 的新技术。您可能想检查一下 (javafx.com)。假设它可以在 Java 5 或更高版本上运行,但绝对不会像 Flash 那样具有客户端渗透性。但是,我认为鉴于您对测试的要求,该技术目前可能不合适。

另外,我认为特洛伊吉尔伯特在他的帖子中犯了一个错误。具体来说,他似乎表明 GWT 应用程序将(由客户端)在 java 中运行。我几乎可以肯定 GWT 应用程序首先是用 Java 编写的,然后 GWT 会将其编译成客户端运行的 javascript 库。

于 2009-01-08T17:58:51.853 回答
2

自 2000 年以来我一直在进行 Flash/Flex 开发,因此我偏向于 Flex。不过,我认为要回答您的问题,这实际上归结为您想要实现的交互性和复杂性水平。

Flex 将让您完成在 JavaScript 环境(ASP.NET AJAX、jQuery、GWT)中几乎不可能的事情,例如简单的 3d 图形。在 Flex 中构建复杂的交互性真的很简单。它也非常快,一次可以处理很多动画对象。Flex 可以使用 Web 服务与 .NET 或 Java 无缝通信。使用 Flex 的缺点是它感觉就像是网站上的嵌入式应用程序,而不是紧密集成的东西。

如果您要坚持使用 JavaScript 方法,通常我会建议使用与语言无关的东西,例如 jQuery。但是由于您已经拥有 GWT 经验,这可能对您的项目很有效。缺点是 GWT 最终仍然是 JavaScript,因此您将受到浏览器中可能实现的速度和交互性的限制。

于 2009-01-08T17:25:09.643 回答
2

我已经使用这两种技术有一段时间了。

面向未来 - 我想它们都会成功,但在不同的情况下,每种技术都会受到青睐。例如,在具有所需桌面(如 ui)的大型(主要是 Intranet)企业中使用 flex(Flex 可以在任何服务器平台(jvm、.Net、php、ruby、coldfusion)的顶部使用)。否则 GWT 将在具有传统 jvm 后端(tomcat+spring 等)的中小型应用程序中占主导地位

适用于所有主要浏览器 - 以这种方式都没有问题。Flex 绝对出色,安装 flash 插件后无需解决任何跨浏览器兼容性问题(当然……浏览器是被动的,当 flash 应用程序运行时:)。我记得我们在使用 GWT 和传统的麻烦制造者 IE6 时遇到了一些小问题,但没有什么可怕的......

快速且响应迅速的用户体验——两者都是同类产品中的佼佼者。Flex 我认为绝对是所有 RIA 解决方案中的佼佼者(也许 silverlight,java fx 可能是最丰富的竞争对手),特别与 LCDS 集成,具有数据管理、真实服务器端数据推送等酷炫功能。GWT 是顶级之一在 ajax 框架类中。您需要的 ui 越丰富和复杂,您使用 flex 的理由就越多。在任何情况下,解释的 javascript 都不能比编译的 actionscript/swf 更快和响应更快。

代码应该是可单元测试的——是的,它们是非常可测试的。

代码必须是可维护的 - 两者都很好,维护 actionscript 与 java(gwt) 相当,如果您使用一个好的 IDE,例如 Flex Builder。

速度和易于开发 - 如果您了解您的员工,两者都是完美的。一切都取决于你的背景。对于典型的 java 开发人员来说,学习曲线可能会更困难一些(你需要学习一个新的编译器/运行时,可能还有新的 IDE,或者至少是新的 eclipse IDE 插件:)。Flash 的一些知识是 +,但不是必需的,通常只用于特定任务,例如构建自己的组件等。

支持某种矢量图形(SVG 加分)——我记得没有问题,我对此没有太多经验,但我会在未来 FXG 最终确定时看看它。

开发和部署成本——赢家在这里很清楚。总重量。开发 Flex 是为了盈利。虽然 self 是开源的,但最好的工具(Flex Builder、新的 Flash Builder/Catalyst)和框架(LCDS)都是商业化的,而且一点也不便宜。查看每个 CPU 价格表的 LCDS,您就会知道我在说什么。使用 GWT,大多数质量工具/框架至少是开源的或免费的。除了一些高级组件,如 ext gwt 和 smartgwt EE。显然你可以没有他们生活。

于 2010-01-14T21:42:22.603 回答
1

面向未来的更多是关于架构,而不是关于特定技术。使用正确的架构,您可以很容易地更换演示技术。我喜欢 Silverlight/MVVM,尽管该模式确实需要一些计划来支持 HTML5。

于 2010-11-11T17:45:12.253 回答
1

这真的是一个苹果/橘子的问题。使用 GWT,您可以获得用 Java 编写所有内容的纯粹性。具有讽刺意味的是,最终结果永远不会像网站以外的任何东西。

使用 Flex,您可以编写一些感觉像应用程序的东西。而且,也许最重要的是,使用 Flex,没有什么是您不能以编程方式完成的——无论是功能性的还是图形化的。

如果您正在为特定的用户群开发应用程序,那么 Flex 绝对是赢家。如果你正在构建一个基于任何东西的大众社交网络,GWT 绝对是一个更好的选择。

于 2010-03-04T09:09:26.120 回答
0

大约一年前,我的公司面临同样的决定。你听说过 GXT http://extjs.com/products/gxt/吗?我们最终选择了 GXT。作为 .NET 开发人员,从 .NET 过渡到 GXT 非常棒。我们使用 GXT/GWT 开发了一个公司范围的管理程序。缺点是与 Flex 相比,GXT 是由一个小得多的团队开发的,而且社区也没有那么大。但是,它提供了令人印象深刻的浏览器内体验。一探究竟。

于 2009-03-16T19:36:40.727 回答
0

虽然 iPhone 和 Android 不支持 flash YET,但您还应该注意 Google 会创建针对手机的应用程序。他们这样做是因为移动设备上的屏幕比典型的笔记本电脑/台式机小得多。因此,缺少 Flash 支持不是问题,因为目标应用程序提供了更好的用户体验。

于 2009-03-12T03:48:54.863 回答
-7

我知道你问过 GWT 与 Flex,但如果你对最终决定有发言权,你应该认真考虑是否要远离 AJAX 和 ASP.NET。尽管 Adob​​e、Microsoft 和 Sun 这么说,RIA(富 Internet 应用程序)还没有为黄金时段的浏览器体验做好准备,除非是有限的形式(如视频播放器)。

使用原生浏览器技术为浏览器编写的成熟应用程序将为用户提供最佳体验,并拥有最多的开发资源来维护它。

ASP.NET 不会去任何地方。Java 或 Flex 都不是。但是对于纯粹的覆盖范围、最佳的整体用户体验和可维护性(由于可用的编程资源要多得多),您无法击败基于浏览器的原生应用程序。

ASP.NET MVC完全基于 Web 并且非常 Ajaxy。你可能会检查一下。它类似于 Ruby on Rails(没有 Rails),开发人员(甚至是 ASP.NET 的新开发人员)都非常喜欢它。

于 2009-03-16T20:38:08.067 回答