我对Flex只有基本的了解,但已经使用GWT工作多年。几年前我们也需要做出类似的决定(Flash vs GWT),但原因不同。最终我们看到了GWT相对于Flash的许多优势(其中许多也适用于Flex):
并非所有客户都拥有Flash,Adobe提供的渗透率数据没什么用,你需要自己的数据(我们有)来查看客户实际拥有的情况。在企业和教育市场中,渗透率实际上远低于Adobe所称的高达90%以上。
GWT是真正跨浏览器和平台兼容的(Linux、Mac、Windows、Android、iPhone等等),而Flash永远无法做到。你可能不关心这个问题,但我们很在意。
Flex是专有的Adobe技术,而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 无法与其竞争。当涉及到流畅度和光滑度时,您无法与 Flash 相比。
* 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。