胡顺仿,向云强
(1.云南民族大学数学与计算机科学学院,云南昆明650031;2.防治兵指挥学院学生军训教研室,河南郑州450052)
基于JXTA的平面几何辅助教学系统设计与实现
胡顺仿1,向云强2
(1.云南民族大学数学与计算机科学学院,云南昆明650031;2.防治兵指挥学院学生军训教研室,河南郑州450052)
以对等网络为基础,利用JXTA平台建立一个分布式的、可交互的、资源高度共享的平面几何辅助教学系统.系统包括了对等组管理、组内成员信息管理、电子白板和即时消息等模块.系统中利用Java绘图技术,在电子白板的模块中,集成了图形绘制环境,可以绘制基本的平面几何图形和几何符号;并实现图形的即时通信,实现用户间实时的共享电子白板内容.即时消息模块分为组内聊天和一对一聊天.
辅助教学;P2P;JXTA;电子白板;即时消息
现阶段流行的交互式网络教学应用程序在结构上采用C/S或B/S结构,这使得大多应用功能集中于网络服务器上,有大量的客户端设备为未能利用,造成了资源的浪费和运行网络带宽使用不平衡.同时平面几何是几何教学的入门课程,教学内容以图形为主.在制作课件时,如果教学人员使用几何画板等工具制作单纯以演示为主的多媒体教学课件,用户间不能交互以及画板模型数据不能实时共享[1].
鉴于上述原因,我们利用SUN公司开发的对等网络技术JXTA,在交互式教学系统框架下,构建基于网络平面几何教学平台,为网络平面几何辅助教学服务.该系统中首先建立JXTA对等组,在JXTA网络中,对等点之间的通信是在对等组的基础上进行的,因而创建和加入对等组是构建一个JXTA应用程序的基础;接着利用JXTA管道,建立了组内通信信道,为组内通信体统服务;然后用Java绘图技术实现基本平面几何图形、几何符号的绘制和利用通信信道在组内传输;同时为方便交流学习,建立了组内聊天和一对一聊天模块.该系统改变了现有教学网站以资料呈现为主的状况,给学生和教师提供了实时交流的通道.
JXTA是 Juxtapose的缩写,意思是“并列,并置”.JXTA允许接入任何数字设备,而不仅局限于PC机或者某一特定平台.在P2P网络中,节点往往都处在互联网的边缘,由于没有固定的接入时间和网络地址,所以标准的DNS服务器并不会覆盖这些节点.JXTA设计了一个和传统的地址服务不一样的机制来覆盖所有的节点.通过使用JXTA定义的ID,网络节点就可以在网络中穿行、更改传输协议、更改网络地址等,即使节点暂时不在线也能被其他节点找到.
JXTA协议独立于编程语言和传输协议.Java、C/C++、Perl以及其他语言都可以实现JXTA协议,同时 JXTA传输可以构建在 TCP/IP、HTTP、Bluetooth、HomePNA等传输协议上.它定义了一系列协议,开发者使用这些协议可以开发几乎所有的P2P程序.同时这些协议还可以适应应用程序所特有的需求.JXTA并没有规定所使用的编程语言和使用环境,但是使用Java语言开发P2P程序具有先天的优势,例如:可移植性,开发难度低,具有丰富的类库.
JXTA通过Java技术和XML数据表达的结合,提供了强大的功能使得垂直应用得以交互,并且可以克服目前P2P软件中的限制.同时,通过小型、简单、便于开发的构造模块,JXTA将使开发者从建立各自框架的复杂工作中解放出来,可以潜心关注于建设各类新颖的、创造性的、分布式计算应用[2].
在平面几何辅助教学系统中,通过计算机的网络功能,分布于不同地方的教师和学生可以同时坐在同一“虚拟教室”中进行学习、讨论.参与者能自由共享一个计算机通信网所提供的集成环境,这个集成环境提供一些文字、图形的交互,教师与学生、学生与学生之间通过电子白板实现传统的课堂教学过程的模拟,通过即时聊天进行学习交流.
根据功能的需求和研究,将整个系统划分为4层结构:交互层、应用层、功能层和网络层,如图1所示.运行界面如图2所示.
交互层是直接面向用户的图形化界面,包括:主界面、菜单、按钮.应用层提供给用户的应用包含创建对等组、查找对等组、加入对等组、退出对等组,与对等组中的对等点进行即时通信和电子白板中的图形交互等功能的具体实现.功能层则负责结合JXTA协议具体实现应用层的功能.根据不同的实现目的,可将功能层细分为几个具体的功能模块,即对等组管理模块、用户资料管理模块、电子白板模块、组内讨论模块和一对一聊天模块.
当用户第1次登录JXTA系统时,系统要进行用户信息注册,包括用户的基本信息和JXTA的网络环境进行设置.用户进入系统后,在网络中发布自己的节点通告并获得相邻对等点的广告信息.
本系统开发基于J2SE平台,需要的软件包括JDK、Netbeans和JXTA开发库.
在文献[3-5]中,对于在J2SE平台下实现对等组管理都有详细介绍,系统地重点在于根据实际开发的需要,建立适合本系统的通信信道,实现组内通信,并在此基础上实现可以绘制基本的平面几何图形和几何符号,并实现图形的即时通信的电子白板;而即时消息模块主要是实现用户间的文本信息的传输和现实,相对较容易.所以本节主要介绍通信信道的建立和电子白板模块的实现.
对等点之间的通信是通过管道(Pipe)来实现的,管道在2个对等点之间建立了通信通道.管道包括输入管道(InputPipe)和输出管道(OutputPipe),分别用来接受消息和发送消息,消息采用文本XML格式.管道广告的格式如下:
不管是输入管道还是输出管道,都需要在磁盘上建立一个XML格式的管道广告说明文件.管道说明文件包含了管道ID、管道建立的类型(点对点或广播)等信息,只有2个广告说明文件相匹配,消息才能在输入管道和输出管道之间传递.
产生管道广告的XML文档可以采用广告工厂(AdvertisementFactor)产生.通过导入不同的管道广告,可以与不同的节点建立通信管道,然后交换信息.
建立输入管道过程如下:
1)从磁盘上获取适当的管道广告文件,初始化管道广告;
2)建立输入管道,加入消息监听事件;
3)监听消息,获取消息后执行用户定义的操作.
建立输出管道的过程如下:
1)从磁盘上获取适当的管道广告文件,初始化管道广告;
2)建立输出管道;
3)获得用户要传送的信息,产生出相应的二元组消息,通过输出管道发送.
系统的电子白板的绘图功能和画板的功能相似,因此在程序设计时将电子白板的界面设计成画板类似的界面,方便用户的操作习惯.在本系统中,电子白板实现的功能主要有:
1)本地图形绘制.常用的平面几何图形和几何符号绘制和编辑功能;
2)图形的传输.用户在电子白板上进行操作时,操作的结果被传输到工作组的其他用户;
3)远程图形的恢复.远端用户接收到消息后,分析消息,重新绘制图形.
本地图形绘制为用户提供了图形编辑工具和绘制图形的场所.用户在工具栏上选择绘图工具,可以在画板上绘制基本的平面几何图形和文字,如画笔随意画图,绘制点、直线、角、三角形,圆形、四边形,绘制一般的中英文文本文字、几何符号等.还实现了对图形基本操作,如移动图形、更改图形大小、填充图形、删除图形和清除屏幕等.本地图形绘制的逻辑过程如图3所示.
1)常用平面几何图形特征分析及绘图实现.在设计图形绘制方法时,为符合在教学黑板和白板上绘图习惯,方便用户使用,会对绘制几何图形时增加了对图形的约束,让图形的某些边与x轴或y轴平行.由于篇幅有限,以正方形的绘制方法为例,说明各图形实现方法.
如图4所示:根据正方形1条边上的2个端点(点1和点2)坐标和正方形的边角关系,就可以绘制正方形,按下鼠标选取点1,无论点2在点2′或者点2″,在拖动鼠标选取点2时,为了使正方形边分别与x轴和y轴平行,在绘制时候点2的y坐标值都是y1.这样保证了图形绘制后图形的某些边与x轴或y轴平行.鼠标按下的点定义成正方形的一个顶点(点1),当拖动鼠标时,在光标位置选取正方形另一个顶点(点2),释放鼠标,根据点1和点4,调用绘制矩形方法绘图.
2)橡皮条技术.在画板上使用鼠标绘制图形,希望绘图过程尽可能自然,所以使用按下鼠标左键并拖动光标绘制选中图形类型.在某个顶点点击后到下一个顶点定义之前,为了帮助决定定点位置而产生的视觉效果,如图5所示,用橡皮条显示.橡皮条就是1点固定,另一点像橡皮筋一样可以伸缩,位置可以自由移动的图像.具体说,用mouseMoved()方法取得鼠标的当前位置,将之前mousePressed()取得的位置到当前位置用paint()方法描画就可以实现橡皮条.该技术利用Java图形方式下的异或模式(XOR)实现,其原理是不断地将老位置处的图形清除,在新位置画图形.
3)图形保持.Java的绘图程序代码不能在画板区域保持图形,当画板窗口状态改变时,画板上的图形信息会部分或全部丢失,不符合使用要求.针对此问题,为图形信息准备一个存储空间,将所有画图形信息及时放入存储空间,在画板窗口状态改变时候,从中调出图形信息并在画板上重画所有图形.存储空间用Vector容器来实现.Vector可以实现可增长的对象数组.有2种图形信息需要加入到Vector容器中,一种是用户在画板上绘制的图形,另一种是通过消息接收到的其他用户绘制的图形.
4)图像的选择、删除和保存.用鼠标左键单击图形就可以选择图形,选择完成后被选中的图形四周显示一个区域虚线框.下面的代码是选择图形时执行的操作:删除图形是建立在选择了图形的基础上的.删除图形时首先获得选中的图形,然后在Vector容器中移除该图形,最后重绘容器中的其他图形.
为了方便用户对白板上信息的存储,系统还提供了保存功能用来保存白板上的所有图形.首先调用getImage()方法获得当前白板上的所有图形,然后调用ImageIO的write()方法将图形写入选定的文件中.
当用户在画板中进行各种操作时,组内用户的画板始终保持着白板同步,用户在画板上所做的任何行为都会反映到其他用户的画板上.系统允许组内成员同时对画板进行操作,效果如同现实生活中多人同时在同一块黑板上书写.
1)对象序列化.在将图形对象写入消息时,必须先对图形对象序列化,然后再添加到消息中,通过管道发送给其他用户.其他用户在接收到消息以后,在消息解码的过程中对图形信息进行反序列化还原为图形对象.Java的对象序列化将那些实现了Serializable接口的对象转换成一个字节序列,并能够在以后将这个字节序列完全恢复为原来的对象.要序列化一个对象,首先要创建某些OutputStream对象,然后将其封装在一个ObjectOutputStream对象内.要反序列化还原一个对象,首先要创建一个 Input-Stream对象,然后将其封装在一个ObjectInputStream内,然后调用readObject()还原对象.
2)消息的形成和发送.
a.电子白板消息种类.消息类型用来区分各种不同的消息,如表1所示;
b.消息的形成.在生成消息的过程中,首先生成消息的公共域,接着根据不同的消息类型,生成各类消息的数据域.在生成消息公共域的过程中,首先构造1个Message对象msg,然后调用Message类的addMessageElement()方法向msg中添加各个消息元素.其中StringMessageElement构造1个元素数据为字符串的消息元素;
表1 电子白板消息种类表
c.消息发送.在启动电子白板模块的时候,每个对等点根据对等组ID构建一个管道通告,然后在JXTA网络中发布自己的管道通告,并根据管道通告建立输入管道和输出管道.
在电子白板系统中一个用户向对等组中的其他所有用户发布消息,所以我们建立的管道是组播管道.在激发相应的鼠标事件时,根据用户的不同操作进行消息编码,通过调用输出管道的send()方法将消息发送出去.
远程图形恢复就是在组内其他用户在接收到消息后进行图形的重新绘制,与本地图形的实现过程比较相似.所不同的是它通过分析管道消息来重新绘制图形,整个过程不需要用户干预.
当消息到达输入管道以后,通过对消息的解码,得到消息的各个元素.根据消息的不同类型,执行不同的操作.如果消息类型是shapeMessage,将图形信息反序列化后存入Vector容器中,然后更新白板;如果消息类型是clearMessage,将Vector容器清空后更新白板;如果消息类型是removeMessage,将移除Vector容器中编号为key的图形,然后更新白板;如果消息类型为lockMessage,则锁定Vector容器中编号为key的图形.图形的恢复和本地图形的绘制基本一致,唯一的区别是图形恢复的是操作的结果,而本地图形实现能看到图形绘制过程.
目前该系统已在某中学辅助教学过程中进行试用,受到了广大师生的一致好评.在该校网络环境下,各个用户可以正确地进行登录,教师和学生都可以创建工作组并加入到对等组中,其他参与者通过认证可以加入到工作组中,各用户之间通过电子画板进行实时交互,可以完成问题的解答过程.
经过对系统的试用,系统基本达到了软件设计要求.但由于时间紧迫没有能够更为深入地对系统进行研究.系统需要完善电子白板功能,加强绘图功能,完善图形绘制和编辑功能,能与其他办公软件交互.在系统中添加语音功能,可以更好的进行用户之间的交流.随着系统使用人数增多,利用即时消息客户端进行传播的恶意代码也会越来越多,需要进一步提高系统安全性.
[1]任小康.“网络几何画板”软件的设计与开发[J].电化教育研究,2006(6):56~58.
[2]杨天路,刘宇宏.P2P网络技术原理与系统开发案例[M].北京:人民邮电出版社.2007.
[3]常晓波,李静.Java P2P程序设计[M].北京:中国电力出版社.2002.
[4]技桥.JXTATM技术手册[M].北京:清华大学出版社.2004.
[5]王霞.基于Multi-agent的P2P流媒体分发技术的研究与实现[J].云南民族大学学报:自然科学版,2008,17(4):374~376.
(责任编辑庄红林)
The Design and Implementation of Plane Geometry’s Computer-Aided Instruction System Based on JXTA
HU Shun-fang1,Xiang Yun-qiang2
(1.School of Mathmatics and Computer Science,Yunnan University of Nationalities,Kunming 650031,China;2.Students’Military Training Section,Air Defense Forces Command Academy,Zhengzhou 450052,China)
This study analyzed the existing CAI systems and their trends,and then built a distributed,interactive,highly resource sharing Plane Geometry’s computer-aided instruction system of P2P mode with JXTA platform,which included PeerGroup Management,the Members’Information Management,an interactive Whiteboard and an Instant Messaging module.In the system’s whiteboard module,firstly,a graphic toolkit was developed to draw geometric graphics and symbols by using JAVA graphics technology;secondly,graph-based instant communication was implemented and users could share the board’s information.The Instant Messaging included a members’discussion module and a one-to-one online chatting module.
CAI;P2P;JXTA;whiteboard;instant messaging
TP 391.13;TP 393.09
A
1672-8513(2011)02-0139-05
10.3969/j.issn.1672-8513.2011.02.016
2010-11-10.
胡顺仿(1979-),女,硕士,助教.主要研究方向:计算机网络与信息化.