SmartSWT?/h2>
Z提高传统WEB应用的界面表现能力,RIA技术应时而生Q各URIAq_通过各种手段来提高丰富的囑Ş界面。如BindowsQ它使用动态HTML技术模拟Windows控gQ还有FlexQ直接用Flash做ؓWEB应用的表现层Q以弥补DHTML技术的不?/p>
而SmartSWT则是ZSWT的RIA发布q_。它可以普通的SWT的应用直接发布成Z个可通过客户端浏览器讉K的WEB应用Q这样就佉K过SWT直接开?富UI的WEB应用成ؓ了现实。不仅如此,ZSWT扩展的许多扩展包也大都可以直接用,如JFace、GEF{?/p>
SmartSWT和SmartClient不一P它ƈ不是SWT应用E序下蝲到客L来运行,而是和B/S模式的WEB应用一P整个应用E序是运行在服务端的Q只是运行过E中图形界面实时显CZ客户端的览器中Qƈ客L的操作事件自动实时返回服务端Q触发服务端原SWT应用的事件处理代码进行处理。服务端的SWT应用所q行的数据库操作和文件操作都是相对于服务器端q行的,而不像C/S应用那样Q需要客L自己数据按自定义的通讯协议传回服务端再q行处理?/p>
SmartSWT底层的通讯是加密而且高效的,在内|的客户端打开服务端的SWT应用Q和原来直接在本Z用相比相差不多。相当于您机器的CPU降一后q行应用E序的感觉?/p>
SmartSWT目前试版本?.1Q表C支持SWT3.1的兼容应用程序?/p>
下图是一个SWT应用QSWT Control ExampleQ在SmartSWTq_部v后,客户端通过IE览器访问的效果Q?/p>
安装q行
SmartSWT的测试版仅支持WindowspȝQ根据其用户手册的说明,它的服务端正式版支持Linux、Unix{系l。SmartSWT安装q行非常单,从www.smartswt.com下蝲SmartSWT31压羃包ƈ解压Q在解压目录下有三个子目录SmartSWTClient、SmartSWTServer和WEB?/p>
1. 打开SmartSWTClient目录Q运行Setup.exe安装客户端,该程序将在客L安装一个定制的型JAVA虚拟机?/p>
2. 打开SmartSWTServer目录Q运行Startup.batQ将q行SmartSWT服务端,SmartSWT使用自带的JAVA虚拟机,所以您不用预先准备它?/p>
3. 如果您的客户端和服务端都在同一台机器,则直接进入WEB子目录,用IE打开index.htm文gQ大U?5U钟左右卛_在IE览器中启动SmartSWT桌面Q您q时可以通过Start菜单Q启动内|的DEMOE序体验一番?/p>
开发SmartSWT应用
开发SmartSWT应用基本上和开发普通的SWT应用相同。您可以使用Eclipse的SWT可视化插件来帮助创徏一个SWT应用E序Q比较好的有Designer及Eclipse的VisualEditor{?/p>
用于部v到SmartSWT服务器的SWT应用在开发时有些的限制Q幸好这些通常都只是D手之劻I
1. Display的获取必ȝ一使用Display display = Display.getDefault()ҎQ不能用new Deisplay()创徏QSmartSWT目前不支持多Display的应用,对大多数应用来说q不是问?
2. 创徏的Shell最好必调用shell.setSize()对其寸q行初始化,否则在SmartSWT默认呈最化状?
3. 量不要使用非公开的APIQ因为有量非公开APIQ可能SmartSWTq没有实现它;
4. 量不要使用其它JNI技术和ActiveX控gQ不要用SWING和AWT{非ZSWT的控Ӟ
5. 避免初始化时一ơ创建几十上百个控gQ这样会造成启动旉较长Q应在需要显C时创徏控g?/p>
部vSmartSWT应用
SmartSWT的部|一样很单,只需调试通过的SWTE序的类文gQ按包名目录l构原封不动拯至SmartSWTServer的swtapps目录Q然后在SmartSWTServer.xml文g中按以下格式注册一下,最后重启SmartSWTServerQ你可以通过客户端浏览器启动SmartSWT桌面Q在StartQ?gt;Programs菜单里启动它Q?/p>
<!-- Configuration of each SWT Application
name: the name of the SWT Application
mainClass: the main class to start the SWT Application
startup: will it start just after the smartswt desktop started(haven't supported)
description: the description of the SWT Application
-->
<Application name="ControlExample"
mainClass="org.eclipse.swt.examples.controlexample.ControlExample">
<startup>false</startup>
<description>ControlExample Application</description>
</Application>
<!-- Configuration of each SWT Application name: the name of the SWT Application mainClass: the main class to start the SWT Application startup: will it start just after the smartswt desktop started(haven't supported) description: the description of the SWT Application --> <Application name="ControlExample" mainClass="org.eclipse.swt.examples.controlexample.ControlExample"> <startup>false</startup> <description>ControlExample Application</description> </Application>
SmartSWT: RIAq_的强有力竞争?/h2>
SmartSWT同其它RIAq_比较有一些独特的优势。首先它是基于SWT的RIAq_Q依托强大的Eclipse阵营Q有许多扩展技术可用,如JFace、GEF、EMF{,像UML设计器、报表、动画这L复杂囑Ş应用都可以通过SWT实现后,发布到SmartSWTQ从而在WEB上很LC用这些桌面应用独有的表现技术。还有OpenGL、RCPq类应用也有可能在将来得到支持,而且Eclipse不断发展中,SWT相关技术的不断成熟Q都以最快的速度同时q用于WEB应用。而且多年来用U篏的用SWT开发的软gQ不需要修改,或只需量的修改,卛_同时拥有WEB版本?/p>
其次Q很多JAVA应用开发者往往只对JAVA服务端的技术感兴趣Q而对表现层采用的HTML、JS、JSPq类标签语言和脚本技术ƈ不喜Ƣ。而事实上兼通JAVA技术、HTML和脚本技术的E序员也是少之又。这也是造成许多传统J2EE应用的界面表C佳的原因。由于SmartSWT直接采用了SWTQ的整个应用的开发完全是UJAVA技术的开发过E,开发者不再需要与非面向对象的HTML、JS、JSP{标{语a和脚本技术打交道Q整个开发过E完全是桌面应用的开发模式,Z事g驱动。这使得应用开发在技术h员的配备上要Ҏ得多?/p>
此外Q发布到SmartSWT的SWT应用Q客L通过览器用时Q仍然具有和原SWT一LhWindows本地风格的界面,h和真正桌面应用一L表现能力和事件机Ӟ其表现能力和功能是Bindows以及Flex{技术无法真正模拟的?/p>
SmartSWT的局限?/h2>
管SmartSWT有诸多好处,但也存在一些局限性?׃技术实现的原因Q对|络传输速度要求较高。SmartSWT在内|内讉KӞ其用效果和本机上直接用相差不多,但在外网上却几乎不具可用性。这军_了SmartSWT只能用于开发企业内|应用?/p>
另外Q和FlexcMQFlex要求客户端的览器安装一个Flash ActiveX控gQSmartSWT也有cM要求。SmartSWT客户端需要在览器中实时表现服务端SWT应用的图形界面,q对用户操作做出响应Q这需要在客户端安装一个特制的型JAVA虚拟机,q以ActiveX控g的Ş式在IE中用。某些政府机关的敏感部门对这U方?可能比较反感?/p>
选择SmartSWTQ还?..
是否选择SmartSWTQ取决于您的软g应用范围和客戗如果您的Y件是内网的企业应用,您的用户日常办公使用的是WindowspȝQ而且对客L安装一个小的虚拟Z介意的话Q选择SmartSWT无疑是上佳选择 。它您的WEB应用开发充分n受SWT开发的各种便利性和各方的丰富技术支持,完成普通WEB无法完成的功能。SWT界面的表现力和操作便利性,也会使客h意度大大提高?/p>