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是一件很麻烦的事情。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python淘宝抢购脚本_Python 实现毫秒级淘宝、京东、天猫等秒杀抢购脚本「建议收藏」

    python淘宝抢购脚本_Python 实现毫秒级淘宝、京东、天猫等秒杀抢购脚本「建议收藏」本篇文章主要介绍了Python通过selenium实现毫秒级自动抢购的示例代码,通过扫码登录即可自动完成一系列操作,抢购时间精确至毫秒,可抢加购物车等待时间结算的,也可以抢聚划算的商品。该思路可运用到其他任何网站,京东,天猫,淘宝均可使用,且不属于外挂或者软件之类,只属于一个自动化点击工具。#!/usr/bin/envpython#-*-coding:utf-8-*-#2019/0…

    2022年4月30日
    50
  • Kubernetes部署Dashboard(WEB UI管理界面)

    Kubernetes部署Dashboard(WEB UI管理界面)

    2021年5月30日
    134
  • 深入理解Java类加载器(ClassLoader)[通俗易懂]

    深入理解Java类加载器(ClassLoader)[通俗易懂]【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)http://blog.csdn.net/javazejian/article/details/73413292出自【zejian的博客】关联文章:深入理解Java类型信息(Class对象)与反射机制深入理解Java枚举类型(enum)深入理解Java注解类型(@Annotation)深入理解

    2022年9月6日
    3
  • 用sql创建索引_sqlserver索引的建立与使用

    用sql创建索引_sqlserver索引的建立与使用index_mode自定义索引名cn_name表名car_mode列名1.创建普通索引SQLCREATEINDEX语法在表上创建一个简单的索引。允许使用重复的值:注释:“column_name”规定需要索引的列。2.创建唯一索引SQLCREATEUNIQUEINDEX语法在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。3.实例CREATEINDEX实例本例会创建一个简单的索引,名为“PersonIndex”,在Person表的Las

    2022年9月3日
    21
  • java键值对_Java 读写键值对

    Properties类(读入写出键值对)是Map子类Map方法都能用publicstaticvoidmain(String[]args)throwsIOException{//读出Propertiespro=newProperties();FileInputStreamfis=newFileInputStream(“F:\\Demo.properties”);//Fi…

    2022年4月8日
    186
  • Html引入百度富文本编辑器ueditor[通俗易懂]

    Html引入百度富文本编辑器ueditor[通俗易懂]在日常工作用,肯定有用到富文本编辑器的时候,富文本编辑器功能强大使用方便,我用的是百度富文本编辑器,首先需要下载好百度编辑器的demo,然后创建ueditor.html文件,引入百度编辑器,然后在h

    2022年8月5日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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