Silverlight 使用Google Web Toolkit(GWT)的主要缺点是什么

Silverlight 使用Google Web Toolkit(GWT)的主要缺点是什么,silverlight,apache-flex,gwt,jquery,extjs,Silverlight,Apache Flex,Gwt,Jquery,Extjs,在许多RIA/Ajax框架之间进行了长时间的争论之后,我们决定使用GWT。当阅读有关它的文章时,这个框架似乎可以很容易地把每件事都做好。但和任何技术一样,总是有不利的一面,我们通过艰苦的方式学习它们 使用Google Web Toolkit(GWT)的主要缺点或问题是什么 (例如:后退/前进按钮支持、响应速度慢、布局定位、JavaScrit错误等) 到目前为止,我从回复中得到以下信息: 许多简单用户界面的代码 慢编译 谢谢不久前我用GWT做了一个原型应用程序,我发现将java编译成javas

在许多RIA/Ajax框架之间进行了长时间的争论之后,我们决定使用GWT。当阅读有关它的文章时,这个框架似乎可以很容易地把每件事都做好。但和任何技术一样,总是有不利的一面,我们通过艰苦的方式学习它们

使用Google Web Toolkit(GWT)的主要缺点或问题是什么

(例如:后退/前进按钮支持、响应速度慢、布局定位、JavaScrit错误等)

到目前为止,我从回复中得到以下信息:

  • 许多简单用户界面的代码
  • 慢编译

谢谢

不久前我用GWT做了一个原型应用程序,我发现将java编译成javascript需要很长时间。更值得注意的是,我们编写的每一行代码都增加了编译时间

我只是对代码不满意,编译测试阶段越来越慢


关于编译器的另一个问题:

我认为主要的缺点是GWT通常需要编写大量代码来完成简单的任务(但随着每个版本的发布,它变得越来越好)。另一方面,在开发复杂的定制小部件时,它非常出色。
在两个项目中,GWT的性能已经证明非常好,并且没有太多的bug——在跨浏览器支持方面,它非常好。

我已经使用GWT将近2年了。虽然我可能被称为GWT的狂热者,但有一些问题是大家应该知道的

  • 正如其他人所说,JavaScript编译速度很慢。我的应用程序需要将近4分钟的核心i7 CPU和8GB内存。生成的JavaScript的总大小约为5MB。但由于开发模式的原因,不需要经常编译到JavaScript

  • GWT RPC在开发模式中非常慢。它比托管模式慢100倍。这对我们来说是一个很大的问题。因为这个原因,我们考虑放弃GWT。在开发模式下GWT RPC性能缓慢的原因是序列化。在开发模式下,字符串以外的类型的序列化速度慢得令人难以置信。我们实现了自定义序列化,它比GWT内置序列化快近30倍

  • 声称编写GWT应用程序只需要Java知识只是一种错觉。您应该有关于CSS和DOM的可靠信息。如果不这样做,您将花费太多时间调试用户界面

  • 您应该考虑您只能使用JDK的一小部分来实现GWT应用程序。反射不可用;您应该使用第三方库,例如,或编写自己的库进行反射

    >P>另一个应该考虑的警告是GWT编译器生成的JavaScript的大小。大多数GWT应用程序由一个网页组成,而不是多页的传统web应用程序。因此,加载应用程序需要大量的时间。虽然可以通过使用多模块方法和代码拆分来缓解,但使用这些技术并不总是简单的

  • 对服务器的所有调用都是异步的。您应该适应编写异步代码。异步代码的缺点是它比等效的同步代码更复杂,可读性也更低


  • 以下是我对衰退的观察:

    • 由于与GWT相关的大量高级约定,如果想要在中有效地使用GWT,学习曲线将非常陡峭。
      • 范例-事实上,GWT站点上提出了两种不同的MVP方法
      • 概念
      • 汽车人
    • 在设计整个应用程序时,异步请求需要不同的思维方式
    • 编译时间长,不会像完整构建那样影响开发模式(所有浏览器和语言的所有排列都是编译的,对于大型项目可能需要几个小时)。可以稍微降低开发模式重启的要求
    • 单元测试的问题-GWTTestCase启动时间太长,无法用于单元测试。不过,多亏了GWTTestSite,它可以很好地用于集成测试。多亏了保持MVP的清洁,它也可以(见我的答案)
    • 它需要一些经验来决定具体的逻辑应该在客户端(编译成JS)还是服务器端实现
    • 当然还有一些小错误,特别是在编辑器和RequestFactory等新功能中。这些问题通常会在新版本中很快得到解决,但是当您遇到一些GWT问题时,这可能会很烦人。无论如何,最后的失败适用于我迄今为止使用的任何Java框架
    • 客户端缺乏反思,这可以通过解决,但这是另一个需要学习的惯例
    如果我要开始新的GWT项目,我会:

    • 添加对库的依赖(不幸的是,目前它不能与GWT2.2一起工作,但很快就会兼容)
    • 设计总平面布置图
    • 根据场所和活动的概念构造应用程序“流程”
    • 将所有位置放入单独的GWT模块(通用导航参考)
    • 将每个活动放在自己的GWT模块中(以后可能会有所帮助)
    • 将活动视为胶水代码,其中视图和演示者提供程序注入了GIN
    • 设计与RequestFactory兼容的数据实体
    • 使用UiBinder、MVP和编辑器框架创建所有数据编辑器
    • 在演示者和活动中使用RequestFactory(获取要显示的初始数据)
    • 使用GIN注入每个已识别的通用组件,如标准日期格式等
    该工具可以为sta生成大量基于GWT的代码