胡順仿,向云強(qiáng)
(1.云南民族大學(xué)數(shù)學(xué)與計算機(jī)科學(xué)學(xué)院,云南昆明650031;2.防治兵指揮學(xué)院學(xué)生軍訓(xùn)教研室,河南鄭州450052)
基于JXTA的平面幾何輔助教學(xué)系統(tǒng)設(shè)計與實(shí)現(xiàn)
胡順仿1,向云強(qiáng)2
(1.云南民族大學(xué)數(shù)學(xué)與計算機(jī)科學(xué)學(xué)院,云南昆明650031;2.防治兵指揮學(xué)院學(xué)生軍訓(xùn)教研室,河南鄭州450052)
以對等網(wǎng)絡(luò)為基礎(chǔ),利用JXTA平臺建立一個分布式的、可交互的、資源高度共享的平面幾何輔助教學(xué)系統(tǒng).系統(tǒng)包括了對等組管理、組內(nèi)成員信息管理、電子白板和即時消息等模塊.系統(tǒng)中利用Java繪圖技術(shù),在電子白板的模塊中,集成了圖形繪制環(huán)境,可以繪制基本的平面幾何圖形和幾何符號;并實(shí)現(xiàn)圖形的即時通信,實(shí)現(xiàn)用戶間實(shí)時的共享電子白板內(nèi)容.即時消息模塊分為組內(nèi)聊天和一對一聊天.
輔助教學(xué);P2P;JXTA;電子白板;即時消息
現(xiàn)階段流行的交互式網(wǎng)絡(luò)教學(xué)應(yīng)用程序在結(jié)構(gòu)上采用C/S或B/S結(jié)構(gòu),這使得大多應(yīng)用功能集中于網(wǎng)絡(luò)服務(wù)器上,有大量的客戶端設(shè)備為未能利用,造成了資源的浪費(fèi)和運(yùn)行網(wǎng)絡(luò)帶寬使用不平衡.同時平面幾何是幾何教學(xué)的入門課程,教學(xué)內(nèi)容以圖形為主.在制作課件時,如果教學(xué)人員使用幾何畫板等工具制作單純以演示為主的多媒體教學(xué)課件,用戶間不能交互以及畫板模型數(shù)據(jù)不能實(shí)時共享[1].
鑒于上述原因,我們利用SUN公司開發(fā)的對等網(wǎng)絡(luò)技術(shù)JXTA,在交互式教學(xué)系統(tǒng)框架下,構(gòu)建基于網(wǎng)絡(luò)平面幾何教學(xué)平臺,為網(wǎng)絡(luò)平面幾何輔助教學(xué)服務(wù).該系統(tǒng)中首先建立JXTA對等組,在JXTA網(wǎng)絡(luò)中,對等點(diǎn)之間的通信是在對等組的基礎(chǔ)上進(jìn)行的,因而創(chuàng)建和加入對等組是構(gòu)建一個JXTA應(yīng)用程序的基礎(chǔ);接著利用JXTA管道,建立了組內(nèi)通信信道,為組內(nèi)通信體統(tǒng)服務(wù);然后用Java繪圖技術(shù)實(shí)現(xiàn)基本平面幾何圖形、幾何符號的繪制和利用通信信道在組內(nèi)傳輸;同時為方便交流學(xué)習(xí),建立了組內(nèi)聊天和一對一聊天模塊.該系統(tǒng)改變了現(xiàn)有教學(xué)網(wǎng)站以資料呈現(xiàn)為主的狀況,給學(xué)生和教師提供了實(shí)時交流的通道.
JXTA是 Juxtapose的縮寫,意思是“并列,并置”.JXTA允許接入任何數(shù)字設(shè)備,而不僅局限于PC機(jī)或者某一特定平臺.在P2P網(wǎng)絡(luò)中,節(jié)點(diǎn)往往都處在互聯(lián)網(wǎng)的邊緣,由于沒有固定的接入時間和網(wǎng)絡(luò)地址,所以標(biāo)準(zhǔn)的DNS服務(wù)器并不會覆蓋這些節(jié)點(diǎn).JXTA設(shè)計了一個和傳統(tǒng)的地址服務(wù)不一樣的機(jī)制來覆蓋所有的節(jié)點(diǎn).通過使用JXTA定義的ID,網(wǎng)絡(luò)節(jié)點(diǎn)就可以在網(wǎng)絡(luò)中穿行、更改傳輸協(xié)議、更改網(wǎng)絡(luò)地址等,即使節(jié)點(diǎn)暫時不在線也能被其他節(jié)點(diǎn)找到.
JXTA協(xié)議獨(dú)立于編程語言和傳輸協(xié)議.Java、C/C++、Perl以及其他語言都可以實(shí)現(xiàn)JXTA協(xié)議,同時 JXTA傳輸可以構(gòu)建在 TCP/IP、HTTP、Bluetooth、HomePNA等傳輸協(xié)議上.它定義了一系列協(xié)議,開發(fā)者使用這些協(xié)議可以開發(fā)幾乎所有的P2P程序.同時這些協(xié)議還可以適應(yīng)應(yīng)用程序所特有的需求.JXTA并沒有規(guī)定所使用的編程語言和使用環(huán)境,但是使用Java語言開發(fā)P2P程序具有先天的優(yōu)勢,例如:可移植性,開發(fā)難度低,具有豐富的類庫.
JXTA通過Java技術(shù)和XML數(shù)據(jù)表達(dá)的結(jié)合,提供了強(qiáng)大的功能使得垂直應(yīng)用得以交互,并且可以克服目前P2P軟件中的限制.同時,通過小型、簡單、便于開發(fā)的構(gòu)造模塊,JXTA將使開發(fā)者從建立各自框架的復(fù)雜工作中解放出來,可以潛心關(guān)注于建設(shè)各類新穎的、創(chuàng)造性的、分布式計算應(yīng)用[2].
在平面幾何輔助教學(xué)系統(tǒng)中,通過計算機(jī)的網(wǎng)絡(luò)功能,分布于不同地方的教師和學(xué)生可以同時坐在同一“虛擬教室”中進(jìn)行學(xué)習(xí)、討論.參與者能自由共享一個計算機(jī)通信網(wǎng)所提供的集成環(huán)境,這個集成環(huán)境提供一些文字、圖形的交互,教師與學(xué)生、學(xué)生與學(xué)生之間通過電子白板實(shí)現(xiàn)傳統(tǒng)的課堂教學(xué)過程的模擬,通過即時聊天進(jìn)行學(xué)習(xí)交流.
根據(jù)功能的需求和研究,將整個系統(tǒng)劃分為4層結(jié)構(gòu):交互層、應(yīng)用層、功能層和網(wǎng)絡(luò)層,如圖1所示.運(yùn)行界面如圖2所示.
交互層是直接面向用戶的圖形化界面,包括:主界面、菜單、按鈕.應(yīng)用層提供給用戶的應(yīng)用包含創(chuàng)建對等組、查找對等組、加入對等組、退出對等組,與對等組中的對等點(diǎn)進(jìn)行即時通信和電子白板中的圖形交互等功能的具體實(shí)現(xiàn).功能層則負(fù)責(zé)結(jié)合JXTA協(xié)議具體實(shí)現(xiàn)應(yīng)用層的功能.根據(jù)不同的實(shí)現(xiàn)目的,可將功能層細(xì)分為幾個具體的功能模塊,即對等組管理模塊、用戶資料管理模塊、電子白板模塊、組內(nèi)討論模塊和一對一聊天模塊.
當(dāng)用戶第1次登錄JXTA系統(tǒng)時,系統(tǒng)要進(jìn)行用戶信息注冊,包括用戶的基本信息和JXTA的網(wǎng)絡(luò)環(huán)境進(jìn)行設(shè)置.用戶進(jìn)入系統(tǒng)后,在網(wǎng)絡(luò)中發(fā)布自己的節(jié)點(diǎn)通告并獲得相鄰對等點(diǎn)的廣告信息.
本系統(tǒng)開發(fā)基于J2SE平臺,需要的軟件包括JDK、Netbeans和JXTA開發(fā)庫.
在文獻(xiàn)[3-5]中,對于在J2SE平臺下實(shí)現(xiàn)對等組管理都有詳細(xì)介紹,系統(tǒng)地重點(diǎn)在于根據(jù)實(shí)際開發(fā)的需要,建立適合本系統(tǒng)的通信信道,實(shí)現(xiàn)組內(nèi)通信,并在此基礎(chǔ)上實(shí)現(xiàn)可以繪制基本的平面幾何圖形和幾何符號,并實(shí)現(xiàn)圖形的即時通信的電子白板;而即時消息模塊主要是實(shí)現(xiàn)用戶間的文本信息的傳輸和現(xiàn)實(shí),相對較容易.所以本節(jié)主要介紹通信信道的建立和電子白板模塊的實(shí)現(xiàn).
對等點(diǎn)之間的通信是通過管道(Pipe)來實(shí)現(xiàn)的,管道在2個對等點(diǎn)之間建立了通信通道.管道包括輸入管道(InputPipe)和輸出管道(OutputPipe),分別用來接受消息和發(fā)送消息,消息采用文本XML格式.管道廣告的格式如下:
不管是輸入管道還是輸出管道,都需要在磁盤上建立一個XML格式的管道廣告說明文件.管道說明文件包含了管道ID、管道建立的類型(點(diǎn)對點(diǎn)或廣播)等信息,只有2個廣告說明文件相匹配,消息才能在輸入管道和輸出管道之間傳遞.
產(chǎn)生管道廣告的XML文檔可以采用廣告工廠(AdvertisementFactor)產(chǎn)生.通過導(dǎo)入不同的管道廣告,可以與不同的節(jié)點(diǎn)建立通信管道,然后交換信息.
建立輸入管道過程如下:
1)從磁盤上獲取適當(dāng)?shù)墓艿缽V告文件,初始化管道廣告;
2)建立輸入管道,加入消息監(jiān)聽事件;
3)監(jiān)聽消息,獲取消息后執(zhí)行用戶定義的操作.
建立輸出管道的過程如下:
1)從磁盤上獲取適當(dāng)?shù)墓艿缽V告文件,初始化管道廣告;
2)建立輸出管道;
3)獲得用戶要傳送的信息,產(chǎn)生出相應(yīng)的二元組消息,通過輸出管道發(fā)送.
系統(tǒng)的電子白板的繪圖功能和畫板的功能相似,因此在程序設(shè)計時將電子白板的界面設(shè)計成畫板類似的界面,方便用戶的操作習(xí)慣.在本系統(tǒng)中,電子白板實(shí)現(xiàn)的功能主要有:
1)本地圖形繪制.常用的平面幾何圖形和幾何符號繪制和編輯功能;
2)圖形的傳輸.用戶在電子白板上進(jìn)行操作時,操作的結(jié)果被傳輸?shù)焦ぷ鹘M的其他用戶;
3)遠(yuǎn)程圖形的恢復(fù).遠(yuǎn)端用戶接收到消息后,分析消息,重新繪制圖形.
本地圖形繪制為用戶提供了圖形編輯工具和繪制圖形的場所.用戶在工具欄上選擇繪圖工具,可以在畫板上繪制基本的平面幾何圖形和文字,如畫筆隨意畫圖,繪制點(diǎn)、直線、角、三角形,圓形、四邊形,繪制一般的中英文文本文字、幾何符號等.還實(shí)現(xiàn)了對圖形基本操作,如移動圖形、更改圖形大小、填充圖形、刪除圖形和清除屏幕等.本地圖形繪制的邏輯過程如圖3所示.
1)常用平面幾何圖形特征分析及繪圖實(shí)現(xiàn).在設(shè)計圖形繪制方法時,為符合在教學(xué)黑板和白板上繪圖習(xí)慣,方便用戶使用,會對繪制幾何圖形時增加了對圖形的約束,讓圖形的某些邊與x軸或y軸平行.由于篇幅有限,以正方形的繪制方法為例,說明各圖形實(shí)現(xiàn)方法.
如圖4所示:根據(jù)正方形1條邊上的2個端點(diǎn)(點(diǎn)1和點(diǎn)2)坐標(biāo)和正方形的邊角關(guān)系,就可以繪制正方形,按下鼠標(biāo)選取點(diǎn)1,無論點(diǎn)2在點(diǎn)2′或者點(diǎn)2″,在拖動鼠標(biāo)選取點(diǎn)2時,為了使正方形邊分別與x軸和y軸平行,在繪制時候點(diǎn)2的y坐標(biāo)值都是y1.這樣保證了圖形繪制后圖形的某些邊與x軸或y軸平行.鼠標(biāo)按下的點(diǎn)定義成正方形的一個頂點(diǎn)(點(diǎn)1),當(dāng)拖動鼠標(biāo)時,在光標(biāo)位置選取正方形另一個頂點(diǎn)(點(diǎn)2),釋放鼠標(biāo),根據(jù)點(diǎn)1和點(diǎn)4,調(diào)用繪制矩形方法繪圖.
2)橡皮條技術(shù).在畫板上使用鼠標(biāo)繪制圖形,希望繪圖過程盡可能自然,所以使用按下鼠標(biāo)左鍵并拖動光標(biāo)繪制選中圖形類型.在某個頂點(diǎn)點(diǎn)擊后到下一個頂點(diǎn)定義之前,為了幫助決定定點(diǎn)位置而產(chǎn)生的視覺效果,如圖5所示,用橡皮條顯示.橡皮條就是1點(diǎn)固定,另一點(diǎn)像橡皮筋一樣可以伸縮,位置可以自由移動的圖像.具體說,用mouseMoved()方法取得鼠標(biāo)的當(dāng)前位置,將之前mousePressed()取得的位置到當(dāng)前位置用paint()方法描畫就可以實(shí)現(xiàn)橡皮條.該技術(shù)利用Java圖形方式下的異或模式(XOR)實(shí)現(xiàn),其原理是不斷地將老位置處的圖形清除,在新位置畫圖形.
3)圖形保持.Java的繪圖程序代碼不能在畫板區(qū)域保持圖形,當(dāng)畫板窗口狀態(tài)改變時,畫板上的圖形信息會部分或全部丟失,不符合使用要求.針對此問題,為圖形信息準(zhǔn)備一個存儲空間,將所有畫圖形信息及時放入存儲空間,在畫板窗口狀態(tài)改變時候,從中調(diào)出圖形信息并在畫板上重畫所有圖形.存儲空間用Vector容器來實(shí)現(xiàn).Vector可以實(shí)現(xiàn)可增長的對象數(shù)組.有2種圖形信息需要加入到Vector容器中,一種是用戶在畫板上繪制的圖形,另一種是通過消息接收到的其他用戶繪制的圖形.
4)圖像的選擇、刪除和保存.用鼠標(biāo)左鍵單擊圖形就可以選擇圖形,選擇完成后被選中的圖形四周顯示一個區(qū)域虛線框.下面的代碼是選擇圖形時執(zhí)行的操作:刪除圖形是建立在選擇了圖形的基礎(chǔ)上的.刪除圖形時首先獲得選中的圖形,然后在Vector容器中移除該圖形,最后重繪容器中的其他圖形.
為了方便用戶對白板上信息的存儲,系統(tǒng)還提供了保存功能用來保存白板上的所有圖形.首先調(diào)用getImage()方法獲得當(dāng)前白板上的所有圖形,然后調(diào)用ImageIO的write()方法將圖形寫入選定的文件中.
當(dāng)用戶在畫板中進(jìn)行各種操作時,組內(nèi)用戶的畫板始終保持著白板同步,用戶在畫板上所做的任何行為都會反映到其他用戶的畫板上.系統(tǒng)允許組內(nèi)成員同時對畫板進(jìn)行操作,效果如同現(xiàn)實(shí)生活中多人同時在同一塊黑板上書寫.
1)對象序列化.在將圖形對象寫入消息時,必須先對圖形對象序列化,然后再添加到消息中,通過管道發(fā)送給其他用戶.其他用戶在接收到消息以后,在消息解碼的過程中對圖形信息進(jìn)行反序列化還原為圖形對象.Java的對象序列化將那些實(shí)現(xiàn)了Serializable接口的對象轉(zhuǎn)換成一個字節(jié)序列,并能夠在以后將這個字節(jié)序列完全恢復(fù)為原來的對象.要序列化一個對象,首先要創(chuàng)建某些OutputStream對象,然后將其封裝在一個ObjectOutputStream對象內(nèi).要反序列化還原一個對象,首先要創(chuàng)建一個 Input-Stream對象,然后將其封裝在一個ObjectInputStream內(nèi),然后調(diào)用readObject()還原對象.
2)消息的形成和發(fā)送.
a.電子白板消息種類.消息類型用來區(qū)分各種不同的消息,如表1所示;
b.消息的形成.在生成消息的過程中,首先生成消息的公共域,接著根據(jù)不同的消息類型,生成各類消息的數(shù)據(jù)域.在生成消息公共域的過程中,首先構(gòu)造1個Message對象msg,然后調(diào)用Message類的addMessageElement()方法向msg中添加各個消息元素.其中StringMessageElement構(gòu)造1個元素數(shù)據(jù)為字符串的消息元素;
表1 電子白板消息種類表
c.消息發(fā)送.在啟動電子白板模塊的時候,每個對等點(diǎn)根據(jù)對等組ID構(gòu)建一個管道通告,然后在JXTA網(wǎng)絡(luò)中發(fā)布自己的管道通告,并根據(jù)管道通告建立輸入管道和輸出管道.
在電子白板系統(tǒng)中一個用戶向?qū)Φ冉M中的其他所有用戶發(fā)布消息,所以我們建立的管道是組播管道.在激發(fā)相應(yīng)的鼠標(biāo)事件時,根據(jù)用戶的不同操作進(jìn)行消息編碼,通過調(diào)用輸出管道的send()方法將消息發(fā)送出去.
遠(yuǎn)程圖形恢復(fù)就是在組內(nèi)其他用戶在接收到消息后進(jìn)行圖形的重新繪制,與本地圖形的實(shí)現(xiàn)過程比較相似.所不同的是它通過分析管道消息來重新繪制圖形,整個過程不需要用戶干預(yù).
當(dāng)消息到達(dá)輸入管道以后,通過對消息的解碼,得到消息的各個元素.根據(jù)消息的不同類型,執(zhí)行不同的操作.如果消息類型是shapeMessage,將圖形信息反序列化后存入Vector容器中,然后更新白板;如果消息類型是clearMessage,將Vector容器清空后更新白板;如果消息類型是removeMessage,將移除Vector容器中編號為key的圖形,然后更新白板;如果消息類型為lockMessage,則鎖定Vector容器中編號為key的圖形.圖形的恢復(fù)和本地圖形的繪制基本一致,唯一的區(qū)別是圖形恢復(fù)的是操作的結(jié)果,而本地圖形實(shí)現(xiàn)能看到圖形繪制過程.
目前該系統(tǒng)已在某中學(xué)輔助教學(xué)過程中進(jìn)行試用,受到了廣大師生的一致好評.在該校網(wǎng)絡(luò)環(huán)境下,各個用戶可以正確地進(jìn)行登錄,教師和學(xué)生都可以創(chuàng)建工作組并加入到對等組中,其他參與者通過認(rèn)證可以加入到工作組中,各用戶之間通過電子畫板進(jìn)行實(shí)時交互,可以完成問題的解答過程.
經(jīng)過對系統(tǒng)的試用,系統(tǒng)基本達(dá)到了軟件設(shè)計要求.但由于時間緊迫沒有能夠更為深入地對系統(tǒng)進(jìn)行研究.系統(tǒng)需要完善電子白板功能,加強(qiáng)繪圖功能,完善圖形繪制和編輯功能,能與其他辦公軟件交互.在系統(tǒng)中添加語音功能,可以更好的進(jìn)行用戶之間的交流.隨著系統(tǒng)使用人數(shù)增多,利用即時消息客戶端進(jìn)行傳播的惡意代碼也會越來越多,需要進(jìn)一步提高系統(tǒng)安全性.
[1]任小康.“網(wǎng)絡(luò)幾何畫板”軟件的設(shè)計與開發(fā)[J].電化教育研究,2006(6):56~58.
[2]楊天路,劉宇宏.P2P網(wǎng)絡(luò)技術(shù)原理與系統(tǒng)開發(fā)案例[M].北京:人民郵電出版社.2007.
[3]常曉波,李靜.Java P2P程序設(shè)計[M].北京:中國電力出版社.2002.
[4]技橋.JXTATM技術(shù)手冊[M].北京:清華大學(xué)出版社.2004.
[5]王霞.基于Multi-agent的P2P流媒體分發(fā)技術(shù)的研究與實(shí)現(xiàn)[J].云南民族大學(xué)學(xué)報:自然科學(xué)版,2008,17(4):374~376.
(責(zé)任編輯莊紅林)
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-),女,碩士,助教.主要研究方向:計算機(jī)網(wǎng)絡(luò)與信息化.