GWT一个可以使用Java代码开发具有Ajax功能的应用框架

本文将结合 GWT Designer,以一个小型 Web ">应用系统为例,对基于 GWT 的 Web 应用开发进行完整的介绍。包括开发环境的搭建、数据通信以及应用部署等方面。

Ajax 及基于 Ajax Web 应用程序开发简述

Ajax 即“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),是一种创建交互式网页应用的网页开发技术。通过此技术,软件开发人员可以在最短的时间内开发出更小,更快的,更友好的 Web 应用系统。在传统的 web 应用中,用户填写并提交表单 (form),在提交表单时就向 web 服务器发送一个处理请求。服务器接收用户请求并处理传来的表单,并将结果以一个新的页面返回给用户。这种处理方式浪费了许多带宽,因为在前后两个页面中的大部分 HTML 代码往往是相同的。另外,由于每次交互都需要向服务器发送请求,交互的响应时间就依赖于服务器的响应时间,从而导致了用户界面的响应比本地应用程序慢得多。通过 Ajax 技术,使用 JavaScript 可以创建 XMLHttpRequest 对象来直接与服务器进行通信,在不重载页面的情况下完成与 Web 服务器的数据交换。由于在通讯的过程中传输的数据是开发人员可控制的有用数据,消除了冗余的 HTML 代码,减少了带宽占用,在很大程度上提高了 Web 应用系统的响应速度。另外,由于使用 XMLHttpRequest 对象作为后台通讯工具,页面不需要全部刷新,只需要刷新局部改变的数据,从而实现类似于桌面应用的效果。

使用 GWT 进行 Ajax Web 应用程序开发的优势

Google Web Toolkit(GWT)是 Google 公司推出的一款基于 Java 的 Ajax Web 应用程序开发框架。在此框架上,开发人员可以轻松的创建 Ajax Web 应用程序,而不必关注 JavaScript 的编写和调试,实现在浏览器中轻松地构建类似桌面应用般的程序。

使用面向对象的 Java 代替 JavaScript,大幅度提高了开发效率。

JavaScript 是一种脚本语言,它可以用来制作与网络无关的,用户交互复杂软件。它是一种基于对象 (Object Based) 和事件驱动 (Event Driver) 的编程语言。但是 JavaScript 无法实现真正的继承关系(注:使用放在 prototype 对象里,虽然可以实现两个实例对象中的数据共享,模拟继承,但这其实并不是真正的继承,更无法实现多层继承关系)。因此,使用 JavaScript 来完成 Ajax 开发,非常耗费时间,代码重复使用率低,难以调试,后期维护工作量巨大。

相比之下,Java 是一种真正的面向对象的语言。基于 Java 这一面向对象的语言,GWT 将真正的软件工程方法带入到 Ajax 应用程序开发当中。GWT 中提供了丰富的的基础组件,使开发人员从繁杂而又重复的 Ajax 构建工作中解放出来,更加专注于业务层和程序性能的优化。开发人员通过使用 GWT 可以快速地构建和维护复杂的、高性能的 JavaScript 应用程序。

GWT 提供了友好的界面,减少了 Web 应用程序的美化工作

由于通用的组件不够友好,导致 Web 开发的同时有大量的美化工作需要处理,所以以往的 Web 开发,都需要专业美工来协助完成。GWT 提供的丰富的组件库使用户可以很容易的开发出极具视觉享受的 UI 界面。如图 1 所示。

图 1. GWT 消息框

上图中为 Ext GWT 提供的消息框,下面为原始的消息框。通过比较可以看到,Ext GWT 的消息框明显更加友好。按照传统的 Web 开发方式要实现具有 Ext GWT 样式的消息框,还要付出相当一些额外的美化工作。而这只是一个非常简单的示例, GWT 所带来的具有友好界面体验的组件远不止此。

时间: 2024-08-03 00:04:47

GWT一个可以使用Java代码开发具有Ajax功能的应用框架的相关文章

敏捷开发中高质量Java代码开发实践

概述 Java 项目开发过程中,由于开发人员的经验.代码风格各不相同,以及缺乏 统一的标准和管理流程,往往导致整个项目的代码质量较差,难于维护,需要较 大的测试投入和周期等问题.这些问题在一个项目组初建.需求和设计均具有不 完全可预期性和完备性的全新项目中将尤为突出.本文将结合敏捷开发周期短, 变化快等特点,介绍如何通过在开发过程中采取一系列步骤来保证和提高整个开 发团队的代码质量,并阐述了每一步可以利用的工具和最佳实践,从而使开发过 程更加规范化,成就高质量的代码,减少测试的投入,并促进整个团

求关于一个用java代码画出类似水晶按钮的效果的代码

问题描述 求关于一个用java代码画出类似水晶按钮的效果的代码 最近在做个东西,但是客户要美观点,所以来求点资料,用java或者安卓的类似水晶按钮的那个功能的代码 解决方案 http://blog.csdn.net/cometnet/article/details/8464693http://www.blogjava.net/Swing/archive/2009/02/20/255676.html 解决方案二: 用ps画好图像然后加载到程序中.需要准备好正常.悬停.按下.禁用几个不同的图片,切换

求大神提供一个 用java代码写的生成长图 就是把html代码生成成图片,感激不尽!

问题描述 求大神提供一个 用java代码写的生成长图 就是把html代码生成成图片,感激不尽! 新人求帮助,感激不尽! 用java代码写的生成长图 就是把html代码生成成图片, 如果是利用截图实现的话,最好能自己控制截图的大小和位置. 解决方案 不会写--但是有思路--用js的canvas的--drawImage方法-把整个网页格式成字符串-然后画出来

MaxCompute Studio使用心得系列5——一个工具完成整个JAVA UDF开发

MaxCompute提供了丰富的内置函数,但是依然还是无法满足所有业务,所以自定义函数在所难免. MaxCompute目前支持的UDF主要是JAVA UDF,但是原来的客户端console和大数据开发套件都不支持JAVA编辑,只能先在自己机器的java环境中编辑测试好,然后输出jar包,再通过console或大数据开发套件将jar包添加成resource,最后再注册成function.整个过程需要跨工具平台,且JAVA环境还需配置好MaxCompute提供的Eclipse插件,流程长耗时多. 本

java-.net代码转成JAVA代码,求大神现身!

问题描述 .net代码转成JAVA代码,求大神现身! 接手了一个软件,之前用.net开发的,让转成JAVA代码,实现的功能主要是注册和获取网络列表,求转换的方法思路. 解决方案 都是面向对象,基于类实现的,将底层的接口什么换一下,将上层的方法重新封装一下

java怎么实现信息提示功能

问题描述 java怎么实现信息提示功能 我想做一个用java语言开发的信息提示功能,就是当数据库某一张表有新数据添加的时候,后台管理员知道有新数据添加,页面的右下角弹出一个小框,慢慢变淡,就像漂流瓶或qq一样 解决方案 这个不就是浏览器和服务器不断进行交互吗? ajax 进行服务器交互来获取数据是否添加,你这个需要不断调用服务器方法才行吧...自己见解 解决方案二: 问题涉及的面挺大的啊. DB--Server--Browser 以下是常规解决这个问题的办法 1.浏览器里面要找一个你所的右下角弹

VoltDB对Java代码使用一个内存型的、高性能的数据库

过去几年来,出现了一种称为 NoSQL 的新型数据库管理系统.设计这些数据存储是为了克服在扩展传统http://www.aliyun.com/zixun/aggregation/22.html">关系数据库来处理一些应用程序时必须处理的数据负载类型的难题,比如说 Amazon.这种可伸缩性的实现需要一定的代价:NoSQL 系统通常不符合 ACID(原子性.一致性.隔离和耐久性):它们最终一致地表明,只要给定一定量的时间,所有数据更新最终都会通过该系统传播.这不符合某些类型的应用程序的要求.

新书出版:Java Web开发技术大全——JSP+Servlet+Struts 2+Hibernate+Spring+Ajax (附源代码)

本文为原创,如需转载,请注明作者和出处,谢谢! 源代码下载 作者:李宁 图书详细信息: ISBN:9787302195757 定价:79.8元 印次:1-1 装帧:平装 印刷日期:2009-4-23 图书简介: SSH是目前最流行的Java Web开发技术.本书通过对SSH中的各种技术循序渐进地讲解,使读者尽快掌握开发基于SSH的Web程序的方法.本书内 容包括Web客户端技术.JSP/Servlet技术.Struts 2(拦截器.类型转换.输入校验.上传和下载文件.Struts 2的各种标签.

在Android开发中使用java代码的一些问题,求大神来看看。

问题描述 在Android开发中使用java代码的一些问题,求大神来看看. 1.我在MainActivity中定义一个单击事件监听器OnClickListener,这时要导入类,但是import android.view.*; 这样自己定义的OnClickListener会报错.但是 import android.view.View.*和import android.view.View.OnClickListener均不会报错.请问这是怎么回事?import android.view.*不是代表