基于Java的终端仿真方法

文档序号:6585451阅读:535来源:国知局
专利名称:基于Java的终端仿真方法
技术领域
本发明涉及电通信技术,尤其涉及一种基于Java的终端仿真方法。
背景技术
Windows Server终端服务提供了通过作为终端仿真器工作的“瘦客户机”软件远程访问服务器桌面的能力,终端服务只把该程序的用户界面传给客户机,客户机返回键盘和鼠标动作,由服务器处理。
所有应用程序执行、数据处理和数据存储都发生在服务器上,应用程序和用户桌面通过网络传播,通过终端仿真软件显示出来;同样,键盘输入和鼠标单击也通过网络在服务器和终端仿真软件间传输,由服务器操作系统透明管理。
在这种模式下,应用程序完全运行于服务器上,当在WindowsServer服务器上激活终端服务时,管理员就不必在每台桌面计算机上安装Windows应用程序。取而代之的是,应用程序仅在服务器上安装一次,客户即可通过终端仿真自动获得访问新的或升级的软件包的途径。
除了Windows Server操作系统提供的终端服务之外,Unix操作系统也通过X协议也提供了远程访问服务器进程的能力,其原理也与WindowsServer终端服务大致相当,这些都是由操作系统提供的解决方案。
Windows Server终端服务是一种通用的服务,它的缺点主要是1)服务器必须采用Windows Server操作系统,Java程序必须在此操作系统上运行,Java跨平台的特性就受到了限制。
2)Windows Server终端服务是基于桌面的,也就是说终端仿真程序显示服务器的桌面而不仅仅是正在执行的程序,如果希望通过终端服务来进行系统集成,在界面上不友好。
3)终端服务运行时耗费大量系统资源,特别是运行时要进行大量的图象处理和压缩运算,对CPU和内存的要求比较高。
Java现已成为使用最普遍的计算机编程语言,特别在互联网上得到了广泛的应用。由于其跨平台的特性,Java程序非常适合开发分布式应用。随着Java应用的深入,Java不再局限于开发Applet程序,很多大型的项目也开始使用Java开发。大型的程序通过网络发布会受到网络带宽的约束,而且也带来了更多的安全性问题。参照Windows Server终端服务的思路,在服务器上安装和运行应用程序,通过网络传递用户界面和操作,既避免了通过网络发布应用程序的开销,也减少了安全隐患。
为Java语言开发的应用程序提供终端服务,可以根据Java语言本身的特点做一些简化和优化,从而提供比Windows Server终端服务更丰富的功能。如IBM公司开发RAWT,是一种专门为Java程序提供类似终端服务的软件包,能够通过终端仿真程序访问远端服务器上的Java程序。RAWT是一种语言级别的解决方案,与操作系统无关。
RAWT软件包分为两部分,运行于服务器的服务程序,以及客户机上的终端程序。通过服务程序来运行Java程序,服务程序可以动态地对Java程序进行管理,将用户界面信息传递给客户机,在终端程序上完成界面的显示并接受用户操作。
RAWT是专门Java程序开发的终端服务,它的缺点主要是1)软件规模庞大Java程序在运行时,界面控件被RAWT的服务程序用定制的控件替换,并通过这些自定义的控件将控件的创建和显示信息传递给客户机,客户机的终端程序利用这些信息将控件还原,RAWT需要对所有的Java界面控件都进行处理,实现上层次太多,过于复杂。
2)如果Java增加了新的控件类型,RAWT要做相应的更新处理,这样就难以维护和扩展。
3)除了界面控件之外,RAWT基本上对所有的Java类库都进行了改写,象Java对象序列化等方法都自行实现,且与Java的标准方法不兼容,技术难度大而且不稳定,对于复杂程序的往往引发大量的异常。

发明内容
本发明的目的在于提供一种简洁且占用系统资源小的基于Java的终端仿真方法。
本发明所采用的方法为这种基于Java的终端仿真方法,其特征在于A、为Java界面控件创建对等体,其中在服务器上创建代理对等体stub,在客户机上创建相应的实现对等体skeleton;B、代理对等体stub将界面控件的绘制请求通过网络传递给客户机上的实现对等体skeleton,由实现对等体skeleton完成实际的用户界面绘制过程;所述步骤A中创建对等体是通过设置系统参数awt.Toolkit使用指定的工具包来提供的;所述步骤B中传递的绘制请求包括绘制原语和绘制命令;所述的Java界面控件包括重量级控件和轻量级控件,其中的重量级控件存在与操作系统相关的本地对等体,轻量级控件绘制由Java控件自身完成;所述的轻量级控件通过作为容器的重量级控件获得Graphics绘图对象来完成自身的绘制;所述的Java界面控件支持双缓冲,即控件绘制首先在缓冲区中进行,等到绘制完成,再利用Graphics绘图对象将缓冲区的内容拷贝到屏幕完成显示。
本发明的原理和有益效果为终端服务主要是提供了两个方面的功能,其一是用户界面的传递,服务器进程的用户界面不在服务器上显示,而是传递到客户机上由终端程序显示;其二是操作事件的传递,用户在客户机上对用户界面的操作,并不由客户机进行处理,而是传递给服务器上的应用程序进行处理。
终端服务的难点在于用户界面的传递,用户界面的绘制虽然比较复杂,但是所有的界面绘制实际上都是由画点画线这样简单的绘制操作组合而成的,这样的绘制操作为“绘制原语”。服务器截获这些基本的绘制过程,将绘制原语传递到客户机,并由终端程序来完成绘制,就能在客户机上恢复用户界面的显示。
Java允许通过系统参数awt.Toolkit指定工具包,Java重量级界面控件的对等体是由工具包Toolkit来创建的,本发明通过定制工具包GCTToolkit,为界面控件提供自定义的对等体。这些对等体本身并不进行界面的绘制,而只是将界面绘制传递到客户机,并由终端程序来完成实际的绘制,从而实现在界面的异地显示。本发明没有操作系统的限制,由于Java本身的跨平台特性,任何支持Java语言的计算机都可以作为服务器,终端程序也可以在任意支持Java的计算机甚至是手持设备上运行。无需借助操作系统的终端服务,也不存在复杂的配置和发布过程,只需在运行Java程序的时候指定支持终端服务的工具包Toolkit即可,本发明提供了不到300K的非常小巧的工具包GCTToolkit。因此,本发明可以高效地实现异地显示并且对网络带宽的要求很低;此外本发明支持控件以双缓冲的方式绘制,有利于消除界面绘制过程中的闪烁现象;本发明在实现的时候没有使用复杂的技术,运行稳定,维护也很容易。
总之,本发明为Java程序提供终端服务,通过客户机上的终端程序访问服务器上的Java程序,Java程序能在不同的操作系统上运行,最大程度地发挥了Java跨平台的优势,同时系统资源的消耗小、可靠性高。


图1为本发明定制对等体示意图;图2为本发明控件绘制示意图。
具体实施例方式
下面根据附图和实施例对本发明作进一步详细说明根据图1和图2,本发明中,在服务器上的Java程序将用户界面直接传递到客户机上显示,客户机对用户界面的操作,传递给服务器上的应用程序进行处理;通过设置系统参数awt.Toolkit使用指定的工具包为Java界面控件提供定制的对等体;定制对等体逻辑上由两部分组成,代理对等体stub和实现对等体skeleton;在服务器上创建代理对等体stub,在客户机上创建相应的实现对等体skeleton;代理对等体stub将界面控件的绘制请求通过网络传递给客户机上的实现对等体skeleton,由实现对等体skeleton完成实际的用户界面绘制过程。
Java程序用户界面都由Java界面控件组成,Java的界面控件可以分为两大类,一类是重量级High Weight控件,另一类是轻量级LightWeight控件。
重量级控件拥有与操作系统相关的本地对等体,例如运行在Windows操作系统上的重量级按钮控件拥有Windows操作系统的对应按钮控件,在Unix操作系统上则拥有Unix操作系统的对应按钮控件,重量级控件的绘制由操作系统来完成;与重量级控件不同,轻量级控件不存在本地对等体,控件的绘制由Java来完成。轻量级控件通过容器类型的重量级控件获得Graphics绘图对象来进行自身的绘制。轻量级控件的绘制可以分解到绘制原语,例如一个轻量级按钮的绘制也是由Java执行一些画点画线等基本绘制原语操作组合而成的。
Java提供的Swing控件中只有四种重量级控件包括JFrame,JDialog,JWindow和Japplet,其他的各种轻量级控件必需以某一种重量级控件作为容器,所以如果限定Java进程只使用Swing控件,那么界面的绘制都由Java来完成,在目前的绝大部分Java应用中,只使用了Swing控件。
在一般情况下,Java界面的绘制过程大致如下1.重量级控件通过运行时指定的工具包GCTToolkit来创建控件对应的本地对等体,如图1和图2所示,定制的对等体逻辑上由两部分组成,stub对等体和skeleton对等体,GCTToolkit创建对等体的时候,在服务器上创建stub对等体,同时请求终端程序在客户机上创建skeleton对等体。stub对等体并不执行具体的绘制操作,只是将绘制请求通过网络传递给存在于客户机上的skeleton对等体,再由skeleton对等体完成实际的绘制;2.Stub对等体处理的绘制请求,除了通常的绘制原语如画点画线之外,还有一些创建缓冲区等命令,这些指令都可以通过网络传递给skeleton对等体来完成;3.重量级控件的绘制由本地对等体来完成,也就是由操作系统完成;
4.重量级控件,如窗体和对话框等,还可以作为容器包含轻量级控件,轻量级的界面控件不存在本地对等体,控件的绘制是由控件自身来完成的;5.轻量级控件通过Graphics绘图对象来进行绘制,但是轻量级控件自身无法提供Graphics绘图对象。由于轻量级控件必然包含在某一重量级控件中,所以轻量级控件通过重量级容器获得Graphics对象;6.重量级容器从本地对等体获得Graphics绘图对象,并传递给轻量级控件;7.轻量级控件利用此Graphics绘图对象来完成自身的绘制工作;8.控件的绘制通常采用双缓冲,也就是说绘制首先会在缓冲区中进行,等到控件绘制完成,再利用上面获得的Graphics绘图对象将缓冲区的内容拷贝到屏幕完成绘制。使用双缓冲的方法有利于消除绘制界面过程中的闪烁;9.缓冲区的创建过程和Graphics绘图对象非常类似,轻量级控件本身无法创建缓冲区,而是委托给重量级容器执行,重量级容器依靠本地对等体来创建缓冲区。
从以上的步骤可以看出,对于轻量级控件的绘制,最终都会交给控件的重量级容器来实现,而重量级的容器又会通过对等体来完成实际的绘制过程,所以界面的绘制过程实际由重量级控件的对等体来完成的。
Windows Server终端服务在服务器和客户机之间传递的是图像,如果不借助高效的压缩算法,效率会十分低下。所有的绘制过程都由绘制原语构成,绘制原语本身数据量很小,本发明采用传递绘制原语的方法,所以运行时对网络带宽要求不高,比较容易获得较高的性能。此外传递绘制原语也不涉及到图象的处理和压缩,对于CPU和内存的要求相应也比较低。
实现终端服务的另一方面就是需要将客户机用户的操作传递到服务器,本发明中运行终端程序也是由Java开发的,终端程序将用户的操作如鼠标和键盘的操作都传递到服务器。由于服务器程序和客户机程序都是由Java开发的,所以这种消息传递得到了极大的简化,无需考虑服务器和客户机操作系统的差异。另外一个明显的优势是,在这种处理方式下,即使服务器和客户机运行的操作系统不同,也无需考虑输入法的差异。而Windows Server终端服务以及X协议往往会对输入法有限制。
在本发明中,终端程序不显示服务器的计算机桌面,只显示应用程序的用户界面,在很多应用场合,这是一种很友好的方式,特别是对于系统集成有特殊意义;由于针对Java程序,可以根据Java语言本身的特点提供相关的编程接口,在应用上会更加灵活,与RAWT相比本发明实现远为简单,RAWT在服务器和终端程序都需要相当庞大的类库支持,而本发明只传递界面的绘制过程,不存在控件的传递和复原,所以无论是服务器程序还是终端程序都十分的轻巧,即使再增加新的Java界面控件,也无需对新的控件做扩充。
权利要求
1.一种基于Java的终端仿真方法,其特征在于A、为Java界面控件创建对等体,其中在服务器上创建代理对等体(stub),在客户机上创建相应的实现对等体(skeleton);B、代理对等体(stub)将界面控件的绘制请求通过网络传递给客户机上的实现对等体(skeleton),由实现对等体(skeleton)完成实际的用户界面绘制过程。
2.根据权利要求1所述的基于Java的终端仿真方法,其特征在于所述步骤A中创建对等体是通过设置系统参数awt.Toolkit使用指定的工具包来提供的。
3.根据权利要求1所述的基于Java的终端仿真方法,其特征在于所述步骤B中传递的绘制请求包括绘制原语和绘制命令。
4.根据权利要求1所述的基于Java的终端仿真方法,其特征在于所述的Java界面控件包括重量级控件和轻量级控件,其中的重量级控件存在与操作系统相关的本地对等体,轻量级控件绘制由Java控件自身完成。
5.根据权利要求4所述的基于Java的终端仿真方法,其特征在于所述的轻量级控件通过作为容器的重量级控件获得Graphics绘图对象来完成自身的绘制。
6.根据权利要求1或4所述的基于Java的终端仿真方法,其特征在于所述的Java界面控件支持双缓冲,即控件绘制首先在缓冲区中进行,等到绘制完成,再利用Graphics绘图对象将缓冲区的内容拷贝到屏幕完成显示。
全文摘要
一种涉及电通信技术的基于Java的终端仿真方法,其特征在于为Java界面控件创建对等体,在服务器上创建代理对等体,在客户机上创建相应的实现对等体,代理对等体将界面控件的绘制请求通过网络传递给客户机上的实现对等体,由实现对等体完成实际的用户界面绘制过程;创建对等体是通过设置系统参数awt.Toolkit使用指定的工具包来提供的;Java界面控件包括重量级控件和轻量级控件,重量级控件存在与操作系统相关的本地对等体,轻量级控件绘制由Java控件自身完成,本发明可以高效地实现用户界面的异地显示,且通讯带宽少,系统资源占用小,实现技术简单,可靠性高。
文档编号G06F9/44GK1472933SQ0212833
公开日2004年2月4日 申请日期2002年7月30日 优先权日2002年7月30日
发明者刘磊, 张志雄, 刘 磊 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1