February 2006 Archives

使用SWT开发WEB应用

出處:developerWorks 中国使用SWT开发WEB应用

黄林榕 ,软件工程师

2006 年 2 月 20 日

Eclipse SWT(标准部件工具包)发展迅速,以其良好的性能和漂亮的外观,已逐渐成为JAVA桌面应用开发的首选控件包。一直以来SWT都是用来开发桌面应用的,那这个优秀的工具包能否直接用于开发WEB应用呢?如今SmartSWT技术可以让这个想法成为现实,这对SWT来说,无疑又多了一个用武之地。

SmartSWT简介

为了提高传统WEB应用的界面表现能力,RIA技术应时而生,各种RIA平台通过各种手段来提高丰富的图形界面。如Bindows,它使用动态HTML技术模拟Windows控件,还有Flex,直接使用Flash做为WEB应用的表现层,以弥补DHTML技术的不足。

而SmartSWT 则是基于SWT的RIA发布平台。它可以将普通的SWT的应用直接发布成为一个可通过客户端浏览器访问的WEB应用,这样就使通过SWT直接开发富UI的WEB应用成为了现实。不仅如此,基于SWT扩展的许多扩展包也大都可以直接使用,如JFace、GEF等。

SmartSWT和 SmartClient不一样,它并不是将SWT应用程序下载到客户端来运行,而是和B/S模式的WEB应用一样,整个应用程序是运行在服务端的,只是运行过程中将图形界面实时显示于客户端的浏览器中,并将客户端的操作事件自动实时返回服务端,触发服务端原SWT应用的事件处理代码进行处理。服务端的 SWT应用所进行的数据库操作和文件操作都是相对于服务器端进行的,而不像C/S应用那样,需要客户端自己将数据按自定义的通讯协议传回服务端再进行处理。

SmartSWT底层的通讯是加密而且高效的,在内网的客户端打开服务端的SWT应用,和原来直接在本机使用相比相差不多。相当于将您机器的CPU降一档后运行应用程序的感觉。

SmartSWT目前测试版本是3.1,表示支持SWT3.1的兼容应用程序。

下图是一个SWT应用(SWT Control Example)在SmartSWT平台部署后,客户端通过IE浏览器访问的效果:

1.jpg

安装运行

SmartSWT 的测试版仅支持Windows系统,根据其用户手册的说明,它的服务端正式版将支持Linux、Unix等系统。SmartSWT安装运行非常简单,从 www.smartswt.com下载SmartSWT31压缩包并解压,在解压目录下有三个子目录SmartSWTClient、 SmartSWTServer和WEB。

1. 打开SmartSWTClient目录,运行Setup.exe安装客户端,该程序将在客户端安装一个定制的小型JAVA虚拟机。

2. 打开SmartSWTServer目录,运行Startup.bat,将运行SmartSWT服务端,SmartSWT使用自带的JAVA虚拟机,所以您不用预先准备它。

3. 如果您的客户端和服务端都在同一台机器,则直接进入WEB子目录,用IE打开index.htm文件,大约15秒钟左右即可在IE浏览器中启动SmartSWT桌面,您这时可以通过Start菜单,启动内置的DEMO程序体验一番。

开发SmartSWT应用

开发SmartSWT应用基本上和开发普通的SWT应用相同。您可以使用Eclipse的SWT可视化插件来帮助创建一个SWT应用程序,比较好的有Designer及Eclipse的VisualEditor等。

用于部署到SmartSWT服务器的SWT应用在开发时有些小的限制,幸好这些通常都只是举手之劳:

1. Display的获取必须统一使用Display display = Display.getDefault()方法,不能使用new Deisplay()创建,SmartSWT目前尚不支持多Display的应用,对大多数应用来说这不是问题;

2. 创建的Shell最好必须调用shell.setSize()对其尺寸进行初始化,否则在SmartSWT将默认呈最小化状态;

3. 尽量不要使用非公开的API,因为有少量非公开API,可能SmartSWT并没有实现它;

4. 尽量不要使用其它JNI技术和ActiveX控件,不要使用SWING和AWT等非基于SWT的控件;

5. 避免初始化时一次创建几十上百个控件,这样会造成启动时间较长,应在需要显示时创建控件。

部署SmartSWT应用

SmartSWT 的部署一样很简单,只需将调试通过的SWT程序的类文件,按包名目录结构原封不动拷贝至SmartSWTServer的swtapps目录,然后在 SmartSWTServer.xml文件中按以下格式注册一下,最后重启SmartSWTServer,你就可以通过客户端浏览器启动SmartSWT 桌面,在Start->Programs菜单里启动它:
 



mainClass="org.eclipse.swt.examples.controlexample.ControlExample">
false
ControlExample Application

SmartSWT: RIA平台的强有力竞争者

SmartSWT 同其它RIA平台比较有一些独特的优势。首先它是基于SWT的RIA平台,依托强大的Eclipse阵营,有许多扩展技术可用,如JFace、GEF、 EMF等,像UML设计器、报表、动画这样的复杂图形应用都可以通过SWT实现后,发布到SmartSWT,从而在WEB上很轻松地使用这些桌面应用独有的表现技术。还有OpenGL、RCP这类应用也有可能在将来得到支持,而且Eclipse不断发展中,SWT相关技术的不断成熟,都将以最快的速度同时运用于WEB应用。而且多年来用积累的用SWT开发的软件,不需要修改,或只需少量的修改,即可同时拥有WEB版本。

其次,很多JAVA应用开发者往往只对JAVA服务端的技术感兴趣,而对表现层采用的HTML、JS、JSP这类标签语言和脚本技术并不喜欢。而事实上兼通JAVA技术、 HTML和脚本技术的程序员也是少之又少。这也是造成许多传统J2EE应用的界面表现不佳的原因。由于SmartSWT直接采用了SWT,使的整个应用的开发完全是纯JAVA技术的开发过程,开发者不再需要与非面向对象的HTML、JS、JSP等标签语言和脚本技术打交道,整个开发过程完全是桌面应用的开发模式,基于事件驱动。这使得应用开发在技术人员的配备上要容易得多。

此外,发布到SmartSWT的SWT应用,客户端通过浏览器使用时,仍然具有和原SWT一样的具有Windows本地风格的界面,具有和真正桌面应用一样的表现能力和事件机制,其表现能力和功能是Bindows以及Flex等技术无法真正模拟的。

SmartSWT的局限性

尽管SmartSWT有诸多好处,但也存在一些局限性。 由于技术实现的原因,对网络传输速度要求较高。SmartSWT在内网内访问时,其使用效果和本机上直接使用相差不多,但在外网上却几乎不具可用性。这决定了SmartSWT只能用于开发企业内网应用。

另外,和Flex类似,Flex要求客户端的浏览器安装一个Flash ActiveX控件,SmartSWT也有类似要求。SmartSWT客户端需要在浏览器中实时表现服务端SWT应用的图形界面,并对用户操作做出响应,这就需要在客户端安装一个特制的小型JAVA虚拟机,并以ActiveX控件的形式在IE中使用。某些政府机关的敏感部门对这种方式 可能比较反感。

选择SmartSWT,还是...

是否选择SmartSWT,取决于您的软件应用范围和客户。如果您的软件是内网的企业应用,您的用户日常办公使用的是Windows系统,而且对客户端安装一个小小的虚拟机不介意的话,选择SmartSWT无疑是上佳选择。它将使您的WEB应用开发充分享受SWT开发的各种便利性和各方的丰富技术支持,完成普通WEB无法完成的功能。SWT界面的表现力和操作便利性,也会使客户满意度大大提高。

参考资料

* 您可以通过http://www.smartswt.net获得进一步的SmartSWT资料和试用软件。

* http://www.eclipse.org/swt/这里是Eclipse SWT的基地,可以得到最新的SWT开发包和开发资料。

* http://www.eclipse.org/上还有很多SWT相关的扩展项目,如GEF、EMF等。

* 您可以通过http://www.swt-designer.com/获得SWT应用开发的可视化Eclipse插件。

关于作者

黄林榕,J2EE软件工程师,多年的J2EE项目开发经验和Eclipse应用开发经验,目前从事RIA技术研究。

微軟採用開原碼描述語言-Python

出處:Taiwan CNET微軟採用開原碼描述語言
微軟已經釋出其.Net Python版的測試軟體。
微軟表示,上週釋出的IronPython 1.0 Beta 1,與其他.Net程式編製架構良好整合,Python程式設計師也能「輕鬆地」存取所有.Net的應用程式。
Unix Python程式開發員Salim Fadhley表示,微軟支援Python是為了吸引Unix開發員轉至Windows平台,因為這是Unix平台上普遍使用的描述語言。
Fadhley說:「如果微軟擁抱Python,對Unix開發員是一大誘因 – 如果我們最愛用的語言成為主要軟體商率先支援的語言,對Window也是一大利多。目前大多數Python開發員使用Mac和Linux, IronPython可替微軟在傳統Unix敘述的領域大舉攻城掠地。」
但微軟不是唯一嘗試將.Net支援帶往其他平台的單位,開放原始碼Mono計畫的主要目標,就是將.Net支援帶入其他包括Unix在內的非微軟作業系統。
微軟尚未宣佈IronPython支援是否會加入其Visual Studio工具組,但許多人相信這只是時間問題。去年12月傳出軟體商ActiveState準備放棄支援其Visual Studio外掛軟體Visual Python後,類似謠言更甚囂塵上。
同時為開放原始碼Plone內容管理系統和Zope應用伺服器計畫擔任開發員的Fadhley表示,若有Python支援,開放原始碼開發員比較有可能考慮使用Visual Studio。他說:「我的看法是,此舉可以吸引通常對微軟非常猜疑的開放原始碼支持者。平常我絕不會用微軟的Visual Studio,不過,這或許會降低其他產品,如IBM Eclipse的優勢。但在可見的未來,我還是會繼續在Linux或Mac上使用Eclipse,因為那是非常成熟的Python平台。」
微軟尚未透露IronPython 1.0的正式推出日期,但該計畫團隊表示,測試版應該不會超過10個。
IronPython測試版可至微軟網站下載。(陳智文)

使用過Python,覺得目前主流3P(Perl、PHP、Python)的描述語言,就屬Python最靈活,也最Powerful,除了用Java實做出Python語法的Jython,還能編譯成單純執行檔,對於影像處理的陣列也比其他描述語言方便,加上目前又推出支援.NET平台的IronPython,蠻建議大家玩看看Python這描述語言。
Perl 和Python 的比較研究
專訪Java之父:Java會愈老愈俏嗎?(下),談到JAVA對面描述語言的競爭。

抗噪音的BOSE耳機

| Comments

bose_QuietComfort2.jpg
春假期間參觀101的BOSE專賣店,看到一只神奇的耳機,具有噪音消除技術(Acoustic Noise Cancelling),其前方螢幕正說明此耳機是從軍用設備所演進,包括飛行員及坦克駕駛的耳機。在視聽過程,旁邊家用視聽音響正播放音樂,戴上後還是聽到旁邊音樂,但當耳機開始播放,卻完全聽不到周遭聲音,包括旁人的對話。
其噪音消除原理,在科學人雜誌有介紹,主要是"運用破壞性干涉,抵消外界的噪音",高頻的噪音可以透過耳機外殼和邊封襯墊才消除,但是低頻卻容易穿透,所以透過反向產生相同聲波來抵消。因iPod熱賣,導致"iPod耳"的病症,新聞「iPod損聽力 男子打官司」,就因為外部噪音干擾,使得音量加大造成聽覺損傷和耳背。所以iPod可以配上這抗噪音的BOSE耳機,但可能汽車警示喇叭也會聽不到而造成車禍吧,^_^。

February 2012

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

Archives

Powered by Movable Type 4.34-en

About this Archive

This page is an archive of entries from February 2006 listed from newest to oldest.

January 2006 is the previous archive.

March 2006 is the next archive.

Find recent content on the main index or look in the archives to find all content.