Java的RIA技术实在多的很。光比较就需要很多的时间。当然了,没有防止四海而皆准的框架,每个框架都是基于特定的目的产生出来的,他们都有适合的工作场所。 不过底层的东西都一样。
GWT是用Java代码生成js和html,然后发给客户端使用,当需要和服务器交互时,就发送数据到服务器,然后等待服务器的回复。因此对服务器的压力相当的小。这就是它的特点了。不过开发时非常的昂贵,需要好点的电脑,它编译时需要耗费高昂的内存,需要花费很多的时间。做个对比,甚至比开发EJB都耗费资源。
最基本的GWT不能满足需求,必须做组件的扩展开发,或使用第三方组件
ECHO 正好相反,开发时相当节约资源和时间,和开发jsp基本一样的开销。不过实际运行时显然高昂的多。我在GWT文章中的最后写了些echo的特点,以3.0来说的,现在粘贴如下(最后给出):
这里,我只说echo组件都可以拿来就用,但是严格来说,每个组件都是半成品,需要你自己做成需要的组件,包括组合和扩展。即尽量把在客户端的处理放到客户端。它提供了面向对象的js框架做这些工作。
比较扩展机制:
GWT扩展是灵活的,简单的扩展需要很少的知识,只需继承相应的基础组件以及实现你需要的接口,比如按键监听器、改变监听器等。可以说就是需要一个简单的Java类,至于多复杂完全取决于你的需求,因为如果你想和extjs一起用,当然需要更复杂的知识了。
这里是一些扩展组件的代码可以看看:http://gwt.components.googlepages.com/
ECHO扩展是固定的。你必须看下官方的扩展说明,需要大概2个小时的学习时间,并具备js基础 和一定的Java基础。
做个echo组件需要固定的格式以及固定的几个Java类与之对应。 因此它是固定的。方法以及需要继承的类都是固定的,你仅仅需要在相应的方法里写你自己的核心处理代码,至于注册组件以及关联上下文都是上层抽象类自动完成的。
总结起来:
1 做一个完全客户端的js,即通过html里直接调用的那种,需要1个js文件
继承它的js组件基类,然后在你需要的方法内完成你的业务逻辑,比如焦点获得失去、按钮按下。在你的代码中,你可以调用echo提供的布局组件以及小部件。因此可以说是面向对象的类似swing的那种js开发。
2 上述js只能在html、jsp等传统页面中使用,如果需要在echo应用里使用你需要:
2.1 客户端的呈现器类,负责呈现的,并与服务器端同步状态。
2.2 服务端的与之对应的组件类, 用于服务器端产生一个单例,然后保存它的字段数据到与之对应的用户上下文。
2.2 服务器端的呈现器 负责接收用户端的状态数据等,以及向客户端发出新的状态,然后客户端的呈现器去呈现新状态。
2.3 把这些关联起来,格式是固定的,就是在上述类中加上特定的注册代码。还有一个属性文件,用于关联组件和呈现器类。
具体过程,参考官网的开发指南。
从这里看出echo的扩展过程还是比较繁琐的。但是echo3支持纯js开发,并且提供了面向对象的js框架以及组件。
但是开发可以重用的组件还是需要上升到服务器的协同开发,需要共5个文件,而且是最少就需要5个,其他的你可以添加
js库作为客户端的js功能的实现,比如jquery protype等等库,随便用。还有js框架提供了和服务器通信的机制,俨然一个ajax框架。
具体哪个方案,你可以根据需要来使用,可见echo的应用范围(echo3),其实比gwt要广,因为echo框架自己处理生命周期,包括资源的分步下载,比简单的使用js应该有很多优势。框架能把组件上升到Java类,以达到富客户交互能力,尤其数据量很大的交互,用它来写非常方便,因为echo提供了客户端-服务端数据间同步的基础设施,我们仅仅需要注册下就行了,这里注意一点:样式的变量是自动关联的,不需要注册。
我在gwt一文提到的与echo相关的内容:
1 首先echo是由servlet生成一个Java类,当然他们是单例的,这个Java类保存在服务器上,并通过固定的接口方法把js文件发给请求的客户端,这样就建立了对应关系。只有客户端请求到某些类时,相应的js才会发给客户端。
2 有人说,echo耗费服务器,说是靠服务器生成swing图形,然后响应客户端,这是大错特错的,它只是保存一个javabeans对象,然后与客户端的js组件对应,js组件通过事件代码,把一些值发到服务端,这些值保存在用户上下文中,而对应的组件只有一份。如果使用消息队列,那么客户端会周期地询问服务端,默认是500毫秒。因此,只要js组件产生事件,而这个事件中改变的属性值做了服务器端的关联,那么就需要与服务器端连接,所有才耗费服务器的。
因此,可以多安装几个服务器,比如tomcat就应该行了,因为它需要的连接太频繁。
之所以说它比GWT耗费资源,我觉得2点: 1 连接频繁 2 session(用户上下文:app实例及相关实例)需要保存很多用户数据。当然按照它的说法,session不活动时(钝化)会把用户数据移到硬盘上把内存留出来给其他用户使用。
所以,我们不能说它是因为使用了类似swing的组件才耗费服务器的,因为它只有一份,任何动态网站都需要服务器储存数据,echo肯定是多了东西,但是这不是决定因素。
3 客户端的js框架和服务端的Java组件 API是一样的。因此js是面向对象的语法,如果做对比的话,有点像javafx、flex等的形式。服务端的组件和js组件一样用。因此,如果注重性能,可以多做客户端的组件,而少做关联,即少与服务器通信。
上面提到,js组件和服务端Java组件API是一模一样的,因此,每个动作都要与服务器端通信的。正是这样,echo的组件都是具备必须的事件。 可以看下API,Java组件都没有鼠标的移动事件,否则的话,自己想象下就有意思了。
要想做到这些,你想要继承现有组件(这里是指客户端js组件),添加你感兴趣的事件,不需要和服务器关联的就不关联,只在客户端运行。比如客户端js验证,这个你总需要吧。
总结:echo组件都不应该拿来就用,一般最好的实践就是扩展他们。echo的架构思想也是围绕这些展开的。
希望本文能够为刚刚接触这两个框架的新手,提供一个指路灯。减少摸索时间。
当然,如有不当之处,敬请指出。同时我也强调,我也是才刚刚读完echo的文档以及官方的开发指导。
分享到:
相关推荐
【GWT与Spring整合】是现代企业级应用开发中的一个重要话题。Google Web Toolkit (GWT) 是一个由Google开发的开源工具包,它允许开发者使用Java编写富互联网应用(RIA),然后自动将其编译为高效的JavaScript代码。...
3. **Java到JavaScript编译**:GWT的编译过程将Java源代码转化为优化的JavaScript,这个过程叫做"编译优化",分为开发模式和生产模式两种。 4. **UI设计**:GWT提供了Widget库,包含许多常见的UI元素,如按钮、...
GWT,全称为Google Web Toolkit,是Google推出的一款开源JavaScript开发框架,允许Java开发者使用Java语言来编写Web应用。...在实际学习过程中,应结合实际项目需求,理论与实践相结合,以达到最佳的学习效果。
3. **开发工具**:GWT提供了一个强大的集成开发环境(IDE)插件,如Eclipse,使得开发者可以享受到诸如代码提示、调试和重构等强大的功能。 4. **模块化**:GWT应用是模块化的,这使得代码组织更清晰,便于维护和...
#### 二、GWT的安装与配置 1. **下载GWT**: - 访问官方网址: [http://code.google.com/webtoolkit/](http://code.google.com/webtoolkit/) - 下载最新版本的GWT开发工具包。 2. **安装GWT**: - 不需要传统的...
3. **设计视图**:提供图形化的用户界面设计工具,方便开发者直观地布局和设计GWT应用的用户界面。 4. **本地与模拟运行**:插件内置了GWT开发者服务器,可以快速启动本地服务器运行应用,并支持模拟不同浏览器的...
3. **客户端-服务器通信**:GWT提供异步RPC(Remote Procedure Call)机制,使得客户端和服务器之间的通信变得简单且高效。 4. **UI组件**:GWT包含一套完整的用户界面组件库,如按钮、文本框、表格等,方便构建...
Gwt中文手册,GWt入门Gwt中文手册,GWt入门Gwt中文手册,GWt入门
GWT入门与经典实例解析源码提供了一个学习和实践GWT开发的宝贵资源,下面将详细介绍GWT的关键概念、核心特性以及通过实例解析来深入理解其工作原理。 1. **GWT的安装与设置**: 在开始GWT项目之前,你需要安装Java...
8. **编译与部署**:完成开发后,使用GWT编译器将Java代码编译为JavaScript,然后将生成的文件部署到Web服务器上供用户访问。 ### GWT的主要特性 1. **跨浏览器兼容**:GWT自动处理JavaScript的差异,使得应用能够...
在这个"smartgwt最新版本GWT的DEMO"中,我们可以深入学习SmartGWT如何与GWT结合,创建功能强大的Web应用。 Google Web Toolkit (GWT) 是一个由Google开发的开放源代码Java SDK,它允许开发者使用Java语言编写客户端...
3. **异步通信 (RPC)**:GWT 支持异步远程过程调用(RPC),使得客户端与服务器之间的通信变得简单而高效。通过XMLHttpRequest,客户端可以发送异步请求到服务器,处理结果后更新UI,提供流畅的用户体验。 4. **...
GWT支持数据绑定,使得UI组件的状态能自动与后台模型同步。此外,MVP(Model-View-Presenter)模式是GWT中推荐的架构模式,它分离了用户界面、视图逻辑和业务逻辑。 **5. RPC通信** GWT提供了Remote Procedure Call...
3. **国际化支持**:GWT提供了一套完整的国际化解决方案,使得开发者可以轻松地创建多语言应用,只需提供不同的语言资源包即可。 4. **事件驱动和异步通信**:GWT使用类似于Java Swing的事件模型,简化了用户交互...
3. **安装Google Plugin SDK**:在Eclipse中,通过“Help” > “Install New Software”菜单,输入GWT插件的更新站点地址来安装。安装完成后,你可以在Eclipse的“Preferences”中看到GWT的相关设置。 4. **配置GWT...
115提供的那个不知道怎么回事,我一直下不下来,后来在论坛找到了但是书签很乱,重新整理了一个书签,顺手删除了一个广告页。...12. GWT与Flex整合 13. 图片缓存 CSS Sprite 14. 本地化 15. 其他高级功能
3. **GWT API**: 提供的“GWT-API.chm”和“GWT-API.chw”文件很可能是GWT的API帮助文档,包含了GWT框架的所有类、接口、方法和注解的详细信息。这些文档是开发者学习和查找GWT相关功能的重要参考,比如Widget库...