我的团队正着手实施第一个GWT项目。我们对Swing应用程序非常强大,几乎所有的工作都涉及重要的Swing GUI。
然而,这是我们第一次远离桌面和Web,项目要求我们使用GWT。项目本身非常直接,我们唯一不知道用GWT UI替换Swing UI。
我们应该注意哪些陷阱?
答案 0 :(得分:11)
我能想到一些:
答案 1 :(得分:7)
答案 2 :(得分:3)
为了扩展Cletus关于“某些类”的内容,您在GWT客户端没有完整的JRE。 (请记住,GWT Java客户端代码已转换为JavaScript。)这意味着第三方Java API通常无法在客户端工作。他们需要移植到GWT。写一次,到处运行。有关此限制的详细信息,请参阅here。
答案 3 :(得分:2)
不同的浏览器具有完全不同的性能特征,因此即使GWT为浏览器差异生成Javascript变通方法,您也必须针对不同的浏览器进行测试。
在某些浏览器中创建DOM元素可能会非常慢。如果您经常更改大型表(数十行),则只要删除所有行并重新创建它们,浏览器就会无响应。我们必须编写一个diffing算法,以便在从服务器获取新内容时有效地更新表。
答案 4 :(得分:1)
其中大部分仍与您想要做的事情100%相关:
专门解决Swing - > GWT Transition有一个简单的规则:
答案 5 :(得分:1)
要记住的一个主要问题是测试。使用junit测试swing应用程序大多是直截了当的,但为了在gwt应用程序上获得该级别的覆盖范围,您需要扩展您的武器库。
答案 6 :(得分:0)
我遇到了一个问题,试图通过嵌套集合填充表格不起作用,大概是因为编译器不理解它(问题@ GWT list)。请注意,这是大约一年前,所以可能不再是这种情况。
第二个问题(再次,一年前,可能不再是这种情况)是不支持在64位盒子上编译64位JVM,所以我最终需要一个单独的32位jvm并包装一个特别引用GWT编译设置的ant任务。
答案 7 :(得分:0)
即使有4个内存RAM,您也可能会在编译应用程序时出现问题(在GWT 1.6和之前)。我无法使用Maven /其他任何东西在工作中编译我们的(相当大的)应用程序。托管模式工作正常,但没有设置(提高vm内存约束到2演出等)似乎解决了这个问题。