馬凱 任東 黃志勇
摘要:Java類(lèi)課程是計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)的核心課程,幾乎所有的大專(zhuān)院校計(jì)算機(jī)專(zhuān)業(yè)都開(kāi)設(shè)了該課程。在教學(xué)過(guò)程中存在教學(xué)內(nèi)容更新不及時(shí)、學(xué)習(xí)目標(biāo)及路徑混亂、學(xué)習(xí)效率較低等問(wèn)題,本文針對(duì)上述問(wèn)題提出了教學(xué)內(nèi)容方面緊貼Java最新官方文檔、在教學(xué)環(huán)境方面選擇在機(jī)房上課等一些建議。實(shí)踐表明這些措施取得了較好的效果。
關(guān)鍵詞:官方文檔;實(shí)踐教學(xué);學(xué)習(xí)效率
中圖分類(lèi)號(hào):G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1674-9324(2015)08-0204-02
Java語(yǔ)言是面向?qū)ο缶幊碳夹g(shù)集大成者,其跨平臺(tái)特性及其他優(yōu)點(diǎn)使其成為目前IT業(yè)界應(yīng)用最廣泛的語(yǔ)言,從服務(wù)端到桌面端及移動(dòng)平臺(tái),尤其是安卓平臺(tái)上得到了普遍的支持,很多高校計(jì)算機(jī)專(zhuān)業(yè)圍繞Java語(yǔ)言都設(shè)置了課程群。但在教學(xué)過(guò)程中也存在教學(xué)內(nèi)容更新趕不上Java技術(shù)的節(jié)奏、學(xué)習(xí)目標(biāo)及路徑混亂、學(xué)生學(xué)習(xí)效率較低等比較突出的問(wèn)題。
一、教學(xué)內(nèi)容組織及更新
Java技術(shù)不斷更新,新標(biāo)準(zhǔn)與新技術(shù)不斷涌現(xiàn),教學(xué)內(nèi)容也需要不斷更新以跟上技術(shù)的發(fā)展。但是目前教學(xué)內(nèi)容的問(wèn)題主要體現(xiàn)在教材內(nèi)容更新慢,往往滯后于Java技術(shù)標(biāo)準(zhǔn)的發(fā)展。目前Java課程的內(nèi)容基本上是以Java 6版本為主,而Java 6到后期的各個(gè)版本中的更新內(nèi)容較多,更新的部分往往又是比較重要的部分。新版本不斷推出,其中一個(gè)重要主題就是通過(guò)新增一些特性來(lái)簡(jiǎn)化開(kāi)發(fā),如Java 5版中新增了泛型、for-each循環(huán)、自動(dòng)裝包/拆包、枚舉、可變參數(shù)、靜態(tài)導(dǎo)入等新特性;Java 6中新增了Desktop類(lèi)和SystemTray類(lèi)、StAX、Compiler API、輕量級(jí)Http Server API、插入式注解處理API、對(duì)腳本語(yǔ)言的支持(如:Ruby,Groovy,JavaScript,Common Annotations等);Java 7中新增了Modularization模塊化、對(duì)動(dòng)態(tài)語(yǔ)言的支持、更多新的I/O APIs、對(duì)XML本地語(yǔ)言支持、Safe rethrow、Null dereference expressions、更好的類(lèi)型推斷、多重捕獲Multi-catch、Swing應(yīng)用框架等新特性,使用這些特性有助于我們編寫(xiě)更加清晰、安全的代碼。當(dāng)前最新的Java 8包含兩個(gè)主要的新特性:一個(gè)是新增的Lambda表達(dá)式,該技術(shù)可以使多核處理器環(huán)境下的編程更高效,提高開(kāi)發(fā)人員的效率,更好地利用多核處理器;另外一個(gè)是新加入了Jigsaw,該技術(shù)可以使大塊的代碼更易于管理,同時(shí)可以促進(jìn)大型運(yùn)算的代碼重用。此外,Java 8還升級(jí)了Java核心庫(kù)以增強(qiáng)對(duì)并行運(yùn)算的支持,同時(shí)還支持傳感器,增加了代碼的部署選項(xiàng)。Java官方表示,在后續(xù)推出的Java 9和Java 10中將加入大數(shù)據(jù)、多語(yǔ)言的互操作性、云計(jì)算和移動(dòng),預(yù)期分別于2015年和2017年發(fā)布[1]。
二、學(xué)習(xí)目標(biāo)及路徑
Java課程不是孤立的一門(mén)語(yǔ)言課,在教學(xué)過(guò)程中必須要向?qū)W生指明今后的學(xué)習(xí)方向,還以上述網(wǎng)上選課系統(tǒng)為例,教師要向?qū)W生指明開(kāi)發(fā)這樣一套系統(tǒng)都需要掌握哪些知識(shí),像html、JavaScript、Servlet、JSP、Struts、多層架構(gòu)理論、JSTL、XML、Hibernate、Spring等。面對(duì)如此龐雜的技術(shù)體系,難免會(huì)走彎路,很多人往往感到無(wú)從下手,教師可以向?qū)W生推薦經(jīng)典的參考書(shū)籍和學(xué)習(xí)資料,指出明確的學(xué)習(xí)路線圖。根據(jù)官方的指南Java學(xué)習(xí)路徑包括初始階段(New To Java)、鞏固基礎(chǔ)階段(Building On Foundation)、進(jìn)階階段(Developing Client or Server applications)三個(gè)遞進(jìn)的組成部分:①在初始階段的主要任務(wù)是了解和掌握J(rèn)ava語(yǔ)言的特點(diǎn)及開(kāi)發(fā)環(huán)境的搭建,對(duì)面向?qū)ο缶幊讨杏嘘P(guān)類(lèi)和對(duì)象、繼承和泛型、打包和各種數(shù)據(jù)類(lèi)型知識(shí)要有深刻的認(rèn)識(shí),同時(shí)還要了解Java的異常處理機(jī)制、基本輸入輸出、多線程技術(shù)、正則表達(dá)式等各種知識(shí)點(diǎn)。②在基礎(chǔ)階段主要的知識(shí)內(nèi)容為集合框架、國(guó)際化、Java平臺(tái)的安全機(jī)制、擴(kuò)展機(jī)制、泛型編程技術(shù)。③在進(jìn)階階段分為兩個(gè)學(xué)習(xí)方向,如果對(duì)桌面端程序開(kāi)發(fā)或富客戶端程序開(kāi)發(fā)比較有興趣,可以優(yōu)先選擇Swing、2D Graphics Full-screen Exclusive Mode API等技術(shù)進(jìn)行學(xué)習(xí);如果更側(cè)重于中間件及服務(wù)端軟件開(kāi)發(fā)或web應(yīng)用程序開(kāi)發(fā),可以選擇JDBC、JMX、JNDI、JAXP、RMI、Concurrency等技術(shù)專(zhuān)題深入學(xué)習(xí)。在教學(xué)過(guò)程中必須讓學(xué)生對(duì)Java的整個(gè)技術(shù)體系有所了解,明確所學(xué)的知識(shí)點(diǎn)在系統(tǒng)開(kāi)發(fā)中的作用和地位。同時(shí)最好舉一些實(shí)際的案例,比如,現(xiàn)在很多高校教務(wù)部門(mén)都開(kāi)通了網(wǎng)上選課系統(tǒng),學(xué)生都使用過(guò),可以基于此系統(tǒng)對(duì)學(xué)生進(jìn)行啟發(fā),提出以下問(wèn)題來(lái)啟發(fā)學(xué)生:這樣一套系統(tǒng)是怎樣開(kāi)發(fā)的?都涉及哪些知識(shí)?我們還要掌握哪些知識(shí)才能夠開(kāi)發(fā)這樣的系統(tǒng)?Java在其中處于什么樣的地位?我們的學(xué)習(xí)內(nèi)容在其中發(fā)揮了什么樣的作用?如果系統(tǒng)是基于MVC模式開(kāi)發(fā)的則可以向?qū)W生進(jìn)一步介紹Java在控制層、模型層以及視圖層是怎樣起作用的,通過(guò)學(xué)生比較熟悉的實(shí)例分析,學(xué)生就能夠?qū)ava的作用有一個(gè)感性的認(rèn)識(shí)。
三、學(xué)習(xí)效率的提升
1.充分利用各類(lèi)建模及開(kāi)發(fā)工具軟件。一種程序設(shè)計(jì)語(yǔ)言輔以強(qiáng)大、高效的開(kāi)發(fā)工具才會(huì)取得成功[2]。作為一門(mén)面向?qū)ο蟮恼n程,可用的教學(xué)工具軟件很多,在教學(xué)過(guò)程中要引導(dǎo)學(xué)生善于利用已有的IDE以及其他的建模工具,這樣可以加強(qiáng)學(xué)習(xí)效果,提示學(xué)習(xí)效率。基于Java的工具軟件有很多,在教學(xué)工具的選取方面有幾個(gè)參考意見(jiàn):①要選擇在業(yè)界應(yīng)用比較廣泛的IDE,其功能和性能往往是經(jīng)過(guò)長(zhǎng)期的檢驗(yàn),另外也方便學(xué)生走向工作崗位以后能夠順利開(kāi)展工作;②在同等條件下,要選擇開(kāi)源的開(kāi)發(fā)工具,開(kāi)源的開(kāi)發(fā)工具大多支持使用者自主開(kāi)發(fā)插件,以擴(kuò)充工具的功能,有一定的拓展空間,又沒(méi)有軟件許可的限制;③開(kāi)發(fā)工具的選用要根據(jù)課程的進(jìn)展分階段選擇,比如剛開(kāi)始的時(shí)候要求學(xué)生對(duì)配置開(kāi)發(fā)環(huán)境有比較清晰的認(rèn)識(shí),可以選用比較簡(jiǎn)單的如JCreator,學(xué)生需要?jiǎng)邮肿鲆恍┗A(chǔ)的配置工作,如需要用到的jar包導(dǎo)入、jre路徑和class path設(shè)置等,在后期可以選用功能較強(qiáng)、配置自動(dòng)化程度較高、編譯環(huán)境較好的工具,如NetBeans、Eclipse;④教學(xué)工具不能只局限于IDE,軟件設(shè)計(jì)時(shí)常用的建模工具也要向?qū)W生引薦,如Rational Rose等工具。在課堂上舉例時(shí),通過(guò)建立類(lèi)圖和對(duì)象圖可以清晰地描述對(duì)象間的關(guān)系,有助于學(xué)生加深面向?qū)ο蟮睦斫?。在涉及到?shù)據(jù)庫(kù)編程時(shí),可以使用Power Designer等建模工具,工具的使用可以使學(xué)生對(duì)開(kāi)發(fā)的規(guī)范有更清晰地認(rèn)識(shí),在學(xué)習(xí)過(guò)程中好用的工具可以使開(kāi)發(fā)工作事半功倍,在好用的開(kāi)發(fā)工具的幫助下,學(xué)生會(huì)增強(qiáng)對(duì)Java課程學(xué)習(xí)的興趣與信心。endprint
2.以培養(yǎng)動(dòng)手能力為核心的教學(xué)方法。Java課程有比較強(qiáng)的實(shí)踐性,有人提出采用“項(xiàng)目導(dǎo)向”[3]以及“任務(wù)驅(qū)動(dòng)”[4]的教學(xué)方法,其核心都是要提高學(xué)生的動(dòng)手能力。目前大多院校采用課堂講課,以理論知識(shí)講述為主,輔以少量的練習(xí),上機(jī)時(shí)間安排較少,在有限的上機(jī)時(shí)間內(nèi)學(xué)生只能驗(yàn)證課本上的例題,加深一下對(duì)知識(shí)點(diǎn)的了解,但是形不成完整的知識(shí)體系,動(dòng)手能力嚴(yán)重不足,經(jīng)過(guò)實(shí)際考察發(fā)現(xiàn)在課程結(jié)束后,學(xué)生能夠獨(dú)立完成教材例題外新任務(wù)的人少之又少。造成這個(gè)問(wèn)題的原因有以下幾個(gè):①首先學(xué)生對(duì)面向?qū)ο蟮母拍罾斫獾牟粔蛏羁?,面向過(guò)程的思維在解決問(wèn)題的時(shí)候占據(jù)主導(dǎo)地位;②學(xué)生上機(jī)實(shí)踐時(shí)間太少,書(shū)寫(xiě)代碼量遠(yuǎn)遠(yuǎn)不夠;③由于Java課程內(nèi)容較多,教學(xué)內(nèi)容重介紹,學(xué)生往往覺(jué)得聽(tīng)懂了,但是面對(duì)實(shí)際問(wèn)題時(shí)還是覺(jué)得無(wú)從下手。以下這些方法可以改善上述問(wèn)題:①教師在課堂授課時(shí)多動(dòng)手寫(xiě)代碼,堅(jiān)持邊寫(xiě)代碼邊講,不要講到一個(gè)概念的時(shí)候,把寫(xiě)好的代碼直接調(diào)出來(lái),要向?qū)W生演示程序模塊從無(wú)到有、從小到大的編寫(xiě)過(guò)程;②把分析問(wèn)題時(shí)所采用的面向?qū)ο蟮乃悸访枋銮宄?,然后再著手?shí)現(xiàn),這樣學(xué)生不但能夠“知其然”還能“知其所以然”;③教師在課堂編寫(xiě)代碼的過(guò)程中遇到程序拋出異常和運(yùn)行錯(cuò)誤時(shí),要針對(duì)具體問(wèn)題當(dāng)堂調(diào)試,整個(gè)調(diào)試和修改的過(guò)程也是學(xué)生最希望看到的;④在課時(shí)的設(shè)置方面要多給學(xué)生分配上機(jī)時(shí)間,有條件的可以在機(jī)房上課,學(xué)生可以邊學(xué)邊做。本課程最核心的目的是學(xué)生通過(guò)課程的學(xué)習(xí),能夠掌握面向?qū)ο蠓椒?,練就面向?qū)ο蠓治鰡?wèn)題和解決問(wèn)題的動(dòng)手能力,教師在教學(xué)的過(guò)程中要著重培養(yǎng)學(xué)生這方面的能力。
針對(duì)Java教材內(nèi)容滯后于Java技術(shù)標(biāo)準(zhǔn)更新的問(wèn)題,要求教師要實(shí)時(shí)關(guān)注跟蹤新標(biāo)準(zhǔn),及時(shí)的吐故納新,向?qū)W生傳授最新的知識(shí)。很多學(xué)生往往存在不清楚學(xué)習(xí)Java之后能夠做什么的困惑,教師要及時(shí)全面的把Java技術(shù)體系介紹給學(xué)生,指明學(xué)生的后續(xù)學(xué)習(xí)方向,充分利用各類(lèi)建模與開(kāi)發(fā)工具,讓學(xué)生少走彎路,激發(fā)學(xué)生的學(xué)習(xí)熱情和把課程學(xué)好的信心。在整個(gè)教學(xué)過(guò)程中要以提高學(xué)生動(dòng)手能力為核心,教師課堂上多動(dòng)手,學(xué)生實(shí)驗(yàn)室多動(dòng)手。
參考文獻(xiàn):
[1]http://www.iteye.com/news/24631/[DB/OL]
[2]周賢善.Java課程教學(xué)的探析[J].教育與教學(xué)研究,2009,(2).
[3]孫陽(yáng).淺析項(xiàng)目教學(xué)法在Java編程教學(xué)中的應(yīng)用[J].硅谷,2009,(7).
[4]呂麗華.談Java課程教學(xué)中任務(wù)驅(qū)動(dòng)法的應(yīng)用[J].河北廣播電視大學(xué)學(xué)報(bào),2009,(4).endprint