基于WWW的协同式CAI软件的Java实现
摘要本文介绍一个用J++实现的基于Web环境的协同式计算机辅助教学软件的结构,并给出了具体实现中的一些关键技术。
关键词J++,Web,远程教学,Socket通信
1引言
随着Internet网络技术的发展,远程多媒体教学成为当前的研究热点。基于Internet的WWW应用模式作为一种方便、迅速的共享信息手段,深受用户欢迎。用户通过访问超文本页面浏览多媒体教学内容,通过点击超链去进行自由的探索式学习。但仅基于超文本页面的教学存在很多缺点,如:学生容易在超链中迷失方向;教师不能对学生的学习行为进行控制,教学过程缺乏有序性;教师与学生之间不能进行交流,教师对学生的学习效果缺乏检查手段等。本文介绍的计算机辅助教学软件克服了以上缺点,整个软件采用J++编写实现,由服务器部分、学生部分、教师教学部分、课件维护部分共四部分组成,该软件实际上为一个教学框架系统,所有教学材料由教师安排,教师和学生通过访问各自的URL地址进入角色。学生在教师的现场控制进行学习、讨论、练习和测试。
2系统的功能
2.1超文本页面学习
教师对学生的学习页面进行统一向导。教师选择学习页面,将此页面的URL地址传送给学生,引导学生到该Web页面进行学习,如此增加了学习的针对性,满足有组织、有控制的教学需要。
2.2实时讨论
实时讨论是协同式教学软件的一个基本特征。在讨论期间,教师可提问学生,安排作业等,学生则可将自己的学习体会及疑问告诉教师。学生之间可以就学习中的问题进行实时交谈。系统提供了两种工具以支持网上实时讨论:一种是纯文字交谈,如果发言者未选择用户,则为公开发言,否则为私下发言,只送往选定用户,在各用户的讨论面板上有一个文本域显示每条发言的发言者及发言内容。另一种是共享白板,教师和学生都可往白板上写内容,白板内容所有用户保持一致,共享白板可支持线、圆、矩形、文字等基本绘图操作,并可选择线条颜色。
2.3交互式做练习
教师发出练习的指示消息,则学生将自动进入练习界面,系统自动从试题库中调与学习问题有关的试题供学生操练,在操练时,系统将学生的解答与标准答案对比看是否答对,并弹出对话框给学生反馈鼓励信息。交互式练习有助于学生加深对教学内容的理解。
2.4网上测试
测试是教学过程中不可缺少的教学环节,通过测试,教师可对学生的学习进行考核,并借此了解学生的学习效果,为改进教学提供依据。学生则通过测试可了解自己对内容的掌握情况,增加学习兴趣。目前,每次测试试卷是由教师从试题库选题组卷并安排分数。测试有时间限制。
3系统的总体设计
从系统要完成的功能看,有两类工作方式:一类是客户/服务器方式(如学生做题),客户方发出访问申请,服务方给出响应。客户是动作的发起者,何时发出申请由客户方决定,客户方发出申请后立即可从Socket通道去取服务方的结果。服务器方必须始终处于监听等待状态。
图1系统的整体设计结构
另一类是网上的协作应用(如实时讨论等),在这种方式中,任何一方都可能成为消息的发送方,而另一方则成为消息的接收方。发送方的动作由用户界面的各类事件驱动引发,其时间性是偶然的,接收方必须时刻处于接收监听状态。由于通信双方处于对等的位置,因此双方都要处于接收等待状态。
由于Java的安全性限制,两客户浏览器间不能直接建立Socket连接,要实现两浏览器间的通信必须通过Web服务器上的Java应用程序进行转接。综上所述,为了实现系统的功能,笔者将系统的总体设计为如图1的形式。
有关说明:
①学生和教师分别以客户/服务器的方式与Web服务器上Java应用程序建立通信连接。服务器方的连接监听线程负责监听来自客户的Socket连接申请。服务方要为每个连接客户建立一个消息处理线程,该线程负责接收来自相应客户的消息,对消息进行分析处理。将消息转发到其他客户。
②学生和教师方都有一个消息接收线程负责接收来自服务方的消息。该线程通过调用用户界面对象中的方法将消息要求反映在用户界面上。为此,在设计消息接收线程类时,在其构造方法中将用户界面对象作为参数传给该类的对象,这是Java中实现对象间互访的基本方法。
③访问试题库的过程是学生方发送相应消息到服务器,服务器方通过COM组件RDO访问基于ODBC的数据库,并将访问结果传回给学生。
④教师可对学生的学习过程进行控制,在服务器方有一个线程专门接收来自教师的控制消息并将其转发给学生,这些控制包括页面学习向导和对学习阶段的控制,这些学习阶段包括:实时讨论、做练习、测试。学生的操作界面将随教师的控制消息变化。
4几个技术关键
4.1数据库访问
VirsualJ++针对Microsoft操作系统对Java类库做了专门的扩展,它将Java与COM(组件对象模型)和支持Java的InternetExplorer3.0浏览器相集成,用户可在Java程序中访问任何支持COM的软件。对于数据库的访问,在J++中提供了DAO(DataAccessObject)和RDO(RemoteDataObject)两种方法。本软件中采用RDO对象实现对ODBC数据源数据的访问。由于对数据库的连接是建立在ODBC的基础上,所以可以支持对各种类型的数据库访问。笔者采用的是Access数据库。
通常,JavaApplet是在一个“沙箱”中运行,可访问的资源有限,使用COM服务意味着存取沙箱之外的资源,为此,IE在安全性上要作严格的检查,它将Java类分为可信类和不可信类,不可信类不能使用COM服务,所有不是从类路径装入的类都是不可信的,包括从网上下载的类,除非它们被封装在具有一个数字签名的.CAB文件中。为了避