GWT与Spring MVC的比较

时间:2011-10-22 08:18:30

标签: java spring gwt spring-mvc

我想知道在这两种技术方面经验丰富的人是否可以在两者之间进行客观比较,假设您正在构建一个在服务器和浏览器中都非常丰富的复杂Web应用程序。

对于我来说,旧范例的一个问题是Spring MVC层的可测试性。我发现由于不可测试的注释,有很多错误可能会蔓延到您的应用程序中。此模型也会减慢开发周期,因为您必须重新启动服务器以更改注释/控制器代码...这是我个人觉得很烦人的事情。

我也不想处理javascript的复杂性。使用Java来处理和测试应用程序听起来很吸引我。我真的不想掌握另一种语言,并且学习它的所有怪癖,奇怪的设计决策,特质以及浏览器不兼容的完整历史。

因此,对于复杂的应用程序,GWT会提供更好的方法吗?这种方法是否比Spring MVC有任何严重的限制,尽管更难以使用,但它可能更灵活?是否存在构建复杂应用程序常见的问题和障碍?

我真的很感激两者之间的比较。请记住,我没有GWT的经验,但大约有10年以上的Spring经验。谢谢!

3 个答案:

答案 0 :(得分:4)

事实是,GWT也有一个学习曲线,至少在我看到它时,两年前,你没有做很多基本控制,你需要外部库,这意味着更多的学习。

在尝试学习GWT但没有取得多大成功之后,我选择了一个web服务加上jQuery或ExtJS,它还可以非常清晰地分离角色。我坐下来学习JavaScript,这并不容易,但它比使用GWT更有趣。

至于浏览器兼容性,一旦你使用现代图书馆,你将只有很少的。我的代码适用于所有浏览器,没有太多问题,包括IE 6.此外,当我太忙时,我只编写服务并外包JavaScript接口部分,这样可以提高工作效率。

无论如何,这是相当主观的,另一个精通GWT的人,可能与我有相反的观点。无论如何,我会拒绝以下原因:

  • 易于调试。不再那样了:使用FireBug调试JavaScript非常容易,而且JavaScript中没有任何业务逻辑,只有服务调用和显示。
  • 浏览器兼容性。要记住的怪癖很少,最常见的是IE不接受列表中的尾随逗号,无论如何不在标准中,但Firefox容忍它们。任何现代JavaScript库都会为您提供兼容性。
  • 速度即可。首先,我将说明JavaScript在浏览器中的任何合理计算都非常快。更慢的是DOM操作,当然还有涉及网络的任何事情,比如AJAX调用。如果您不做设计错误,例如填充太多东西或在将多个元素直接添加到DOM时可能出现的其他问题,而不是构建您的结构然后立即附加它,那么您的页面将正常运行。

据我现在所想,唯一合理的理由是,我已经了解Java,我不想学习另一种语言

关于你对Spring MVC的评论。我正在使用Spring MVC,我感觉不到重启服务器的痛苦。 Spring的重点是,一切都应该易于在容器外工作!在Spring控制器中,我只需要调用底层服务的代码非常少。我需要单元测试的是服务。

控制器只有很少的代码可以测试,我可以在JUnit中调用它们并测试它们,但是,至少现在,我的方法是通过一个带有jQuery调用的网页进行简单的外部测试来检查它们的响应(这不是单元测试,它是一个集成测试,但我觉得单元测试控制器的价值非常小,如果它写得正确的话。)

答案 1 :(得分:4)

我在一个复杂的项目中使用GWT超过一年(整个项目200 KLOC),我建议你试试GWT。

在我看来,GWT很容易学习,关于如何使用这项技术真的很好tutorials

使用GWT的优点是可以构建漂亮,快速,可维护的Web应用程序,而不需要了解很少的浏览器或JavaScript。您还可以使用Java调试器调试客户端代码,而在复杂的应用程序中,这是非常大的。

尽管GWT提供了对客户端代码进行适当单元测试的可能性,但这需要对GWT的MVP范例和仔细规划有一个很好的理解。如果你弄乱你的代码(这并不是那么难,因为GWT给你完全的自由),那么你最终会失去这个功能,但这是你的错,而不是GWT。

答案 2 :(得分:1)

我花了几个月的时间学习Spring,以创建相当基础的MVC应用程序。我花了大约一个月的时间来掌握GWT。 (这可能更容易,因为我已经使用Android三年并且它的工作方式类似。它甚至对它的一些问题也有完全相同的不明显的解决方案。)所以对我来说,GWT肯定比学习起来容易得多。弹簧。