GWT 优点和缺点「建议收藏」

GWT 优点和缺点「建议收藏」GWT 优点和缺点

大家好,又见面了,我是你们的朋友全栈君。

原文地址:http://blog.csdn.net/superhc/article/details/7223716点击打开链接

优点:

  1. 如果你以前使用JAVA开发Swing or AWT应用, 那么选择GWT是最自然的. 对这样的开发人员来说,学习曲线是最平缓的。(评论中被质疑。认为不懂得JAVASCRIPT就无法真正DEBUG使用GWT中遇到的问题)
  2. 即使你不是JAVA GUI开发的老手,多年JAVA服务器端编程的经验也会帮助你较快上手。
  3. 你创造的快速响应的web应用可以基于很少的的客户端开发和更直接的服务器开发。
  4. 虽然网络上有很多实用的JAVASCRIPT类库, 很多传统程序员并不真正理解它们的价值。铭记,像JAVASCRIPT这样强大的语言总是一把双刃剑。 如果你不知道如何正确使用它, 你会弄的更糟。(被质疑,对质疑者而言,高质量的开源的类库很难找)
  5. 你可以迭代的把传统WEB应用移植到GWT。这不是一个要么全转要么全不能转的选择。你可以使用JSNI作为去调用那些已经被移植的JAVASCRIPT函数。 但是总是越早越好。
  6. GWT的IDE支持是最好的. Java IDEs 在过去的十年中不断成长成为世界上最好的之一, 而GWT正好利用了这点。
  7. 集成的跟踪查错是开发人员梦寐以求的功能. 集成在JAVA IDE中的优秀的跟踪查错功能可以让任何人钟情于GWT。
  8. 集成在IDE中的重构JAVA代码功能可以保持代码总是保持简单,而这点JAVASCRIPT很难做到。
  9. 集成在IDE中的语法高亮,错误检查,代码完成快捷等等是无法抗拒的。
  10. GWT一直被GOOGLE积极的维护着。我们知道这个项目不会很快停滞。到现在,他们仍旧对这个项目的提出了很多承诺。(评论中,有人质疑DART项目和GWT的冲突,怀疑GOOGLE会不会逐步转移到DART)
  11. 活跃的社区支持是一个对GWT巨大的加分因素。在很多论坛,WIKI和BLOG都有讨论。一个简单查询可以帮助你找到正确的方向。(被质疑,因为和其他框架JQUERY相比,GWT的第三方组件相对少)
  12. GWT是一个设计精良的API; 不是一个为了快速发布的半成品。这帮助开发人员较容易理解GWT的抽象和更简单去应用。
  13. 你可以使用GWT自己的协议在客户端和服务器端交换数据,这样就不用关心数据打包和传输的细节。如果你需要更多的控制,你可以使用XML, JSON或者其他任意的格式。在这种情况下使用JSON,你仍旧可以抛弃难用的JAVA的JSON类库。你可以直接使用JSNI去执行直接的JAVASCRIPT。
  14. 你可以利用标准的JAVA静态代码分析工具,比如FindBugs, CheckStyle, Detangler, PMD等等, 去监控和管理代码及设计质量。这点在一个比较大的有各自分工的团队中尤其重要。
  15. 你可以使用JUnit或者Test NG进行单元测试,可以使用JMock或者其他类似类库去替代依赖。TDD的执行是很直接明了的,如果你已经开始实践了。尽管有很多JAVASCRIPT的单元测试框架,比如JSUNIT和QUNIT,请告诉我有多少人真正了解它们,或者忍不住要求使用它们。
  16. GWT编译器产生跨浏览器的JAVASCRIPT代码。如今,这已经成为WEB应用的必需品。
  17. GWT编译器优化产生的代码,删除无用代码,甚至可以混淆JAVASCRIPT代码。
  18. 尽管编译过程很长,你不需要在开发阶段经历它。GWT有一种特殊的模式可以使用浏览器插件去产生输出。
  19. 丰富的第三方组件,比如Smart GWT, Ext GWT等等。 它们有着很好的设计,并且支持主题定制。因此,如果GWT标准组件无法满足你的需求时候,这些第三方组件很有可能帮到你。就算还是没有,你还可以开发自己的定制组件。
  20. GWT 强调有状态的客户端和无状态的服务器端。这可以在多用户并发的情况下很大的减轻服务器的压力。
  21. I18N和L10N在GWT里面很容易使用. 事实上,GWT采用的是基于区域的编译器 ,而其他客户端的框架很难轻易做到I18N和L10N。
  22. GWT使用AJAX并集成浏览器BACK.的支持。如果你是一个AJAX程序员,你可以减少很多的工作量。

缺点:

  1. GWT发展很快,导致了同时存在了很多版本。很多函数,接口和事件在不断推出的新版本中失效,这样会让基于GWT开发的项目不得不花费时间和精力跟上GWT的步伐。(被质疑,其他框架有同样的问题)
  2. 开始的时候有很多GWT书籍,而现在则很少了。举个例子,我没有看到很多关于GWT 2.0的书。这让我们不得不使用GOOGLE提供的文档。这些文档是高质量的和全面的,但仍旧比不上一本好书可以带来的帮助。
  3. GWT不是很容易被使用的,毕竟JAVA是一门较难的语言,而GWT基于JAVA。再加上你需要使用JAVA去构造整个布局和页面组件,你可以让一个程序员很容易头疼。在GWT 2.0中推出的UI binder似乎解决了这个问题,但你仍旧学习一种新的语法。
  4. Java to JavaScript 编译太慢了, 这是个你决定使用GWT前需要仔细考虑的问题。
  5. 我个人习惯于使用HTML和CSS来设计网页。但在GWT中, 我不得不使用GWT专有的方式. 再加上GWT对于样式和布局的不兼容性更加让网页设计变得复杂。但是在UI Binder和HTMLLayout在2.0+版本中推出后,我觉得舒坦多了。
  6. 使用GWT需要很认真的态度,因为一个客户端技术的更新可能会需要重写你整个应用。
  7. 目前还没有使用GWT的最佳实践。通常情况下,人们会把所有GWT代码放在一个模块里面直到被认定为太大而不得不拆分成多个模块。如果拆分过晚,重构也变得很困难。
  8. 在GWT 1.X中,表现层代码和逻辑代码是搅合在一起的。引入UI Binder之后,这个问题应该解决了。但是学习一门新的XML语言也是让人不爽的。
  9. 处理简单事情时,GWT通常会产生3到5倍于其他框架(比如JQUERY)的代码。(被支持,针对简单的事情,应该使用JQUERY)
  10. 你应该记住GWT对HTML的抽象是不完整的。你仍旧需要了解最终产生的DOM结构,才能够正确应用样式。然而,从GWT的代码无法很直观的看到最终产生的DOM结构。
  11. GWT对JAVA开发人员来说是优势,对.NET和PHP来说则不是。
  12. 如果你已经体会了JAVASCRIPT的能力并且知道如何使用它,你会发现使用非表述性的语言比如JAVA是一件很麻烦的事情。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106222.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • TypeScript基础入门之Javascript文件类型检查(二)「建议收藏」

    TypeScript基础入门之Javascript文件类型检查(二)「建议收藏」TypeScript基础入门之Javascript文件类型检查(二)

  • javaSocket传输模式

    javaSocket传输模式Sockets有两种主要的操作方式:面向连接的和无连接的.面向连接的sockets操作就像一部电话,他们必须建立一个连接和一人呼叫.所有的事情在到达时的顺序与它们出发时的顺序时一样.无连接的sockets操作就像是一个邮件投递,,没有什么保证,多个邮件可能在到达时的顺序与出发时的顺序不一样.到底用哪种模式是邮应用程序的需要决定的.如果可靠性更重要的话,用面向连接的操作会好一些.比如文件服务器需要他们

  • 霍金:外星人存在但别主动去寻找(组图)

    霍金:外星人存在但别主动去寻找(组图)

  • 详解 JVM Garbage First(G1) 垃圾收集器

    详解 JVM Garbage First(G1) 垃圾收集器版权声明:本文为博主原创文章,转载请联系作者并注明出处。详解JVMGarbageFirst(G1)垃圾收集器前言GarbageFirst(G1)是垃圾收集领域的最新成果,同时也是HotSpot在JVM上力推的垃圾收集器,并赋予取代CMS的使命。如果使用Java8/9,那么有很大可能希望对G1收集器进行评估。本文详细首先对JVM其他的垃圾收集器进行总结,并与G1进

  • Java Class类简介

    Java Class类简介
    一,class类有什么用?
    class类的实例表示java应用运行时的类(classansenum)或接口(interfaceandannotation)(每个java类运行时都在JVM里表现为一个class对象,可通过类名.class,类型.getClass(),Class.forName(“类名”)等方法获取class对象)。数组同样也被映射为为class对象的一个类,所有具有相同元素类型和维数的数组都共享该Class对象。基本类型boolean,byte,ch

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号