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的文档以及官方的开发指导。
分享到:
相关推荐
3. **Axis2 安装**: 解压 Axis2 包(如 `axis2-1.4`),并设置 `AXIS2_HOME` 环境变量指向 Axis2 的根目录。 **Eclipse 配置** 1. **Eclipse 设置**: 打开 Eclipse IDE,选择 `Window > Preferences`,配置 Server ...
Ajax领域的库和框架众多,例如Echo、Dojo、DWR、Google Web Toolkit (GWT)等,它们为开发者提供了不同级别的抽象和功能,简化了Ajax应用的开发。然而,选择合适的库和框架往往需要考虑项目的具体需求和团队的技能集...
基于的手势识别系统可控制灯的亮_3
untitled2.zip
S7-1500和分布式外围系统ET200MP模块数据
anaconda配置pytorch环境
高校教室管理系统,主要的模块包括查看首页、个人中心、教师管理、学生管理、教室信息管理、教师申请管理、学生申请管理、课时表管理、教师取消预约管理、学生取消预约管理等功能。
半挂汽车列车横向稳定性控制研究:基于模糊PID与制动力矩分配的联合仿真分析在典型工况下的表现,半挂汽车列车在典型工况下的横向稳定性控制研究:基于模糊PID与制动力矩分配的联合仿真分析,半挂汽车列车4自由度6轴整车model,横向稳定性控制,在低附着系数路面,进行典型3个工况,角阶跃,双移线,方向盘转角。 采用算法:模糊PID,制动力矩分配,最优滑移率滑膜控制。 以上基于trucksim和simulink联合仿真,有对应 p-a-p-e-r参考 ,关键词: 1. 半挂汽车列车 2. 4自由度6轴整车model 3. 横向稳定性控制 4. 低附着系数路面 5. 典型工况(角阶跃、双移线、方向盘转角) 6. 模糊PID算法 7. 制动力矩分配 8. 最优滑移率滑膜控制 9. Trucksim和Simulink联合仿真 10. P-A-P-E-R参考; 用分号隔开上述关键词为:半挂汽车列车; 4自由度6轴整车model; 横向稳定性控制; 低附着系数路面; 典型工况; 模糊PID算法; 制动力矩分配; 最优滑移率滑膜控制; Trucksim和Simulink联合仿真; P-A-P-E-R参考
路径规划人工势场法及其改进算法Matlab代码实现,路径规划人工势场法及其改进算法Matlab代码实现,路径规划人工势场法以及改进人工势场法matlab代码,包含了 ,路径规划; 人工势场法; 改进人工势场法; MATLAB代码; 分隔词“;”。,基于Matlab的改进人工势场法路径规划算法研究
本文介绍了范德堡大学深脑刺激器(DBS)项目,该项目旨在开发和临床评估一个系统,以辅助从规划到编程的整个过程。DBS是一种高频刺激治疗,用于治疗运动障碍,如帕金森病。由于目标区域在现有成像技术中可见性差,因此DBS电极的植入和编程过程复杂且耗时。项目涉及使用计算机辅助手术技术,以及一个定制的微定位平台(StarFix),该平台允许在术前进行图像采集和目标规划,提高了手术的精确性和效率。此外,文章还讨论了系统架构和各个模块的功能,以及如何通过中央数据库和网络接口实现信息共享。
三菱FX3U步进电机FB块的应用:模块化程序实现电机换算,提高稳定性和移植性,三菱FX3U步进电机换算FB块:模块化编程实现电机控制的高效性与稳定性提升,三菱FX3U 步进电机算FB块 FB块的使用可以使程序模块化简单化,进而提高了程序的稳定性和可移植性。 此例中使用FB块,可以实现步进电机的算,已知距离求得脉冲数,已知速度可以求得频率。 程序中包含有FB和ST内容;移植方便,在其他程序中可以直接添加已写好的FB块。 ,三菱FX3U;步进电机换算;FB块;程序模块化;稳定性;可移植性;距离与脉冲数换算;速度与频率换算;FB和ST内容;移植方便。,三菱FX3U步进电机换算FB块:程序模块化与高稳定性实现
光伏逆变器TMS320F28335设计方案:Boost升压与单相全桥逆变,PWM与SPWM控制,MPPT恒压跟踪法实现,基于TMS320F28335DSP的光伏逆变器设计方案:Boost升压与单相全桥逆变电路实现及MPPT技术解析,光伏逆变器设计方案TMS320F28335-176资料 PCB 原理图 源代码 1. 本设计DC-DC采用Boost升压,DCAC采用单相全桥逆变电路结构。 2. 以TI公司的浮点数字信号控制器TMS320F28335DSP为控制电路核心,采用规则采样法和DSP片内ePWM模块功能实现PWM和SPWM波。 3. PV最大功率点跟踪(MPPT)采用了恒压跟踪法(CVT法)来实现,并用软件锁相环进行系统的同频、同相控制,控制灵活简单。 4.资料包含: 原理图,PCB(Protel或者AD打开),源程序代码(CCS打开),BOM清单,参考资料 ,核心关键词:TMS320F28335-176; 光伏逆变器; 升压; 逆变电路; 数字信号控制器; 规则采样法; ePWM模块; PWM; SPWM波; MPPT; 恒压跟踪法; 原理图; PCB; 源程序代码; BOM
centos9内核安装包
昆仑通态触摸屏与两台台达VFD-M变频器通讯实现:频率设定、启停控制与状态指示功能接线及设置说明,昆仑通态TPC7062KD触摸屏与两台台达VFD-M变频器通讯程序:实现频率设定、启停控制与状态指示,昆仑通态MCGS与2台台达VFD-M变频器通讯程序实现昆仑通态触摸屏与2台台达VFD-M变频器通讯,程序稳定可靠 器件:昆仑通态TPC7062KD触摸屏,2台台达VFD-M变频器,附送接线说明和设置说明 功能:实现频率设定,启停控制,实际频率读取等,状态指示 ,昆仑通态MCGS; 台达VFD-M变频器; 通讯程序; 稳定可靠; 频率设定; 启停控制; 实际频率读取; 状态指示; 接线说明; 设置说明,昆仑通态MCGS与台达VFD-M变频器通讯程序:稳定可靠,双机控制全实现
研控步进电机驱动器方案验证通过,核心技术成熟可生产,咨询优惠价格!硬件原理图与PCB源代码全包括。,研控步进电机驱动器方案验证通过,核心技术掌握,生产准备,咨询实际价格,包含硬件原理图及PCB源代码。,研控步进电机驱动器方案 验证可用,可以生产,欢迎咨询实际价格,快速掌握核心技术。 包括硬件原理图 PCB源代码 ,研控步进电机驱动器方案; 验证可用; 可生产; 核心技术; 硬件原理图; PCB源代码,研控步进电机驱动器方案验证通过,现可生产供应,快速掌握核心技术,附硬件原理图及PCB源代码。
高质量的OPCClient_UA源码分享:基于C#的OPC客户端开发源码集(测试稳定、多行业应用实例、VS编辑器支持),高质量OPC客户端源码解析:OPCClient_UA C#开发,适用于VS2019及多行业现场应用源码分享,OPCClient_UA源码OPC客户端源码(c#开发) 另外有opcserver,opcclient的da,ua版本的见其他链接。 本项目为VS2019开发,可用VS其他版本的编辑器打开项目。 已应用到多个行业的几百个应用现场,长时间运行稳定,可靠。 本项目中提供测试OPCClient的软件开发源码,有详细的注释,二次开发清晰明了。 ,OPCClient_UA; OPC客户端源码; C#开发; VS2019项目; 稳定可靠; 详细注释; 二次开发,OPC客户端源码:稳定可靠的C#开发实现,含详细注释支持二次开发
毕业设计
三菱FX3U六轴标准程序:六轴控制特色及转盘多工位流水作业功能实现,三菱FX3U六轴标准程序:实现3轴本体控制与3个1PG定位模块,轴点动控制、回零控制及定位功能,结合气缸与DD马达控制转盘的多工位流水作业模式,三菱FX3U六轴标准程序,程序包含本体3轴控制,扩展3个1PG定位模块,一共六轴。 程序有轴点动控制,回零控制,相对定位,绝对定位。 另有气缸数个,一个大是DD马达控制的转盘,整个是转盘多工位流水作业方式 ,三菱FX3U;六轴控制;轴点动控制;回零控制;定位模块;DD马达转盘;流水作业方式,三菱FX3U六轴程序控制:转盘流水作业的机械多轴系统
在 GEE(Google Earth Engine)中,XEE 包是一个用于处理和分析地理空间数据的工具。以下是对 GEE 中 XEE 包的具体介绍: 主要特性 地理数据处理:提供强大的函数和工具,用于处理遥感影像和其他地理空间数据。 高效计算:利用云计算能力,支持大规模数据集的快速处理。 可视化:内置可视化工具,方便用户查看和分析数据。 集成性:可以与其他 GEE API 和工具无缝集成,支持多种数据源。 适用场景 环境监测:用于监测森林砍伐、城市扩展、水体变化等环境问题。 农业分析:分析作物生长、土地利用变化等农业相关数据。 气候研究:研究气候变化对生态系统和人类活动的影响。