论文部分内容阅读
21世纪初,异步JavaScript技术成为Web技术发展的一个转折点,它消除了Web应用程序中繁杂的反复页面加载和刷新这一可用性问题。通过这种技术,Javascript异步的向服务器发送数据请求,而且更新网页也不会导致刷新。以前不流畅的Web应用越来越像是完全一体化的桌面应用程序,操作中不会出现停顿或者整体性的界面刷新。随着JavaScript应用日益增多,开发者们也越来越多的编程逻辑放在了应用程序的客户端,进而减轻了服务期的负担;数据只在必要时进行加载,而且客户端应用程序也能保留以前在服务器上处理的状态信息。作为一种附加价值,可用性的改进也带来了性能的改进。而Ajax也得到了用户和开发者的广泛认可。采用Ajax的应用程序越来越多,竞争性和复杂性也不断增加,使得Ajax应用程序的开发面临可扩展性的考验。针对此类问题,其它应用程序开发技术是通过面向对象和强大的开发工具来处理的,然而,从技术中发展而来的Ajax并不是用来构建应用程序的,更不必说构建大型的应用程序。而且,也不存在类似辅助桌面应用程序的工具,来辅助JavaScript来构建大型的应用程序。这种支持是以框架的形式出现的,框架为构建应用程序提供了更好的基础(比如Dojo社区)。但是无论为构建Ajax应用程序开发的库有多少,Ajax的用途正日益与设计它的初衷背道而驰。通过解释型脚本语言——JavaScript,来编写Ajax应用程序的代码逻辑,使得开发者很难象桌面的开发语言一样,灵活的处理应用程序的规模和复杂性。同时JavaScript也缺少能显著提高构建复杂程序能力的语言特性,包括可以肯定地面向对象变成的结构和在编译时捕获错误的能力。很多公司都认识到了Ajax的成功和局限性,参与并拿出了Ajax的替代解决方案,包括Flex,SilverLight和JavaFx,这一些都可以被归类于RIA。同时Google发布了Web Toolkit以替代JavaScript辅助程序员进行RIA的程序开发,GWT进行Ajax的程序开发,可以充分利用高水平的软件工程工具如JUnit,进行测试驱动的开发,充分利用象Eclipse这样的IDE提供的高级调试支持和动态编译的错误检测功能。GWT包含了很多能够辅助构建Ajax应用程序的工具,比如由不见和面板组成的用户界面库,通过HTTP和RPC执行异步服务器通信的各个库、同其他使用JavaScript,JSON和XML应用程序交互的工具,以及访问成熟的软件工程开发环境的能力。构建基于GWT框架的桌面式系统得意义在于,形成一种用户熟悉的Window界面,同时能够对各类应用进行分别的管理。以任务栏的方式进行处理。本文着眼于使用GWT工具和部件,并考虑应用程序设计技术——包括容器应用程序模式、抽象工厂模式、MVC(模型—视图—控制器)架构模式,来构建一个桌面式的软件系统。程序界面通过GWT的用户界面库创建。就是用面板实现布局,用部件和事件实现行为,用CSS和图形实现外观。同时创建一个即时通讯系统,实现浏览器的客户端与服务器端的开发。