周賢善 李 娟 官 彬
文章編號:1672-5913(2009)02-0069-03
摘要:本文分析了Java作為入門教學(xué)語言的相關(guān)爭議,分析了常用的Java集成開發(fā)環(huán)境(IDE)的技術(shù)特點(diǎn),對Java教學(xué)內(nèi)容的選擇、教學(xué)各環(huán)節(jié)的實(shí)施進(jìn)行分析和探討。
關(guān)鍵詞:Java;IDE;教學(xué)
中圖分類號:G642
文獻(xiàn)標(biāo)識碼:A
1引言
“計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)”是學(xué)生從技術(shù)的角度學(xué)習(xí)計(jì)算機(jī)的主要基礎(chǔ)課[1]。由于不同學(xué)校、不同專業(yè)對學(xué)生程序設(shè)計(jì)能力的要求不盡相同,所以程序設(shè)計(jì)課程可以采用不同的教學(xué)語言。Java語言是Sun公司推出的新一代面向?qū)ο蟪绦蛟O(shè)計(jì)語言,具有簡單、穩(wěn)定、與平臺無關(guān)、安全、解釋執(zhí)行、多線程等特點(diǎn),是目前使用最為廣泛的網(wǎng)絡(luò)編程語言[2]。本文將對Java課程的開設(shè)、IDE的選擇、教學(xué)方法進(jìn)行分析和探討。
2作為入門教學(xué)語言的爭議及分析
紐約大學(xué)計(jì)算機(jī)科學(xué)系的兩位教授認(rèn)為:以Java作為入門教學(xué)語言會使學(xué)生過早地使用Java類庫和框架,學(xué)生只知道將一些簡單的程序組織到一起,但難于對所寫的程序形成運(yùn)行時(shí)成本(run-time cost)的概念,因?yàn)樗麄兒茈y知道究竟哪種調(diào)用方法是有效的;真正的程序員應(yīng)該會用任何語言編程,過早地使用Java使學(xué)生不清楚源程序和硬件間的關(guān)系,不了解指針的意義,將來難以使用C語言編程;還有Java初學(xué)者習(xí)慣于圖形化編程,難于在沒有圖形用戶界面(GUI)的語言上編寫程序[3]。兩位教授的意見非常中肯,但從側(cè)面又反映了Java語言簡單、好學(xué)、好用,對于非計(jì)算機(jī)專業(yè)的學(xué)生來說,這是很重要的一點(diǎn)。正如當(dāng)年從DOS的學(xué)習(xí)過渡到Windows的學(xué)習(xí)一樣,很多老師堅(jiān)持DOS內(nèi)容非講不可,否則擔(dān)心學(xué)生直接學(xué)習(xí)Windows時(shí)對內(nèi)部命令和外部命令等基本概念都模糊不清,可現(xiàn)在的“大學(xué)計(jì)算機(jī)基礎(chǔ)”課程中,基本都不講DOS而直接講Windows了,學(xué)生學(xué)起來更加簡單、方便。
入門教學(xué)語言的選擇是至關(guān)重要的事情,作為大多數(shù)學(xué)生第一種需要認(rèn)真學(xué)習(xí)理解的編程語言,必將成為很多學(xué)生的編程母語在他的思維方式中留下深深的烙印。這個(gè)編程母語要幫助學(xué)生破除計(jì)算機(jī)和軟件的神秘感,建立對于程序的基本認(rèn)識和對計(jì)算機(jī)體系的最初理解。不僅如此,教學(xué)語言必須是工業(yè)界的主流語言,否則學(xué)生學(xué)非所用,學(xué)習(xí)動力無法保證。Java在教學(xué)上具有其特殊的優(yōu)勢,比如其開發(fā)環(huán)境和工具支持非常成熟,有助于培養(yǎng)學(xué)生正確的編程習(xí)慣;Java 是當(dāng)今第一工業(yè)主流語言,標(biāo)準(zhǔn)類庫非常全面,可以迅速地開發(fā)具有實(shí)際用途的程序,有助于激發(fā)和保持學(xué)生的興趣。
當(dāng)然,學(xué)生過早使用Java框架,長于整合和快速開發(fā),生產(chǎn)效率高,做直接的、有章可循的、非研究性和非創(chuàng)新性的工作比較合適,但這樣的學(xué)生基礎(chǔ)不牢,對計(jì)算機(jī)系統(tǒng)的理解薄弱,處理細(xì)節(jié)和矛盾的能力不足,缺少自主分析問題、解決問題的知識、能力和經(jīng)驗(yàn)。因此在Java教學(xué)中教師決不能讓學(xué)生依賴Java框架寫出程序就大功告成,而應(yīng)該讓學(xué)生獨(dú)立實(shí)現(xiàn)部分類庫。
Java作為入門教學(xué)語言是有諸多可取之處的,關(guān)鍵是教師了解其優(yōu)點(diǎn)與缺點(diǎn)后,教學(xué)中要“揚(yáng)長補(bǔ)短”,沒有必要因?yàn)槠洳恢С种羔樀燃?xì)節(jié)而耿耿于懷。
3常用Java IDE的技術(shù)特點(diǎn)
一種程序設(shè)計(jì)語言輔以強(qiáng)大、高效的開發(fā)工具才會取得成功。Java語言的成功也證明了這一點(diǎn)??v觀計(jì)算機(jī)開發(fā)語言的歷史,還從來沒有哪種語言像Java那樣擁有十幾種開發(fā)工具。這里僅介紹四種最流行的Java集成開發(fā)環(huán)境(IDE):Eclipse、NetBeans、JBuilder、JCreator。根據(jù)近期數(shù)據(jù)調(diào)查分析可以看出,Java IDE的使用呈現(xiàn)Eclipse、NetBeans、JBuilder三國鼎立的局面。當(dāng)前Eclipse市場份額占45%,NetBeans占30%,Jbuilder占15 %,其他IDE占5%[4]。
Eclipse是IBM公司的一種可擴(kuò)展的開放源代碼IDE。Eclipse的最大特點(diǎn)是它能接受由Java開發(fā)者自己編寫的開放源代碼插件。Eclipse為工具開發(fā)商提供了更好的靈活性,使他們能更好地控制自己的軟件技術(shù)。經(jīng)過幾年的發(fā)展,Eclipse已經(jīng)成為目前最流行的Java IDE。并且擁有了很多的Eclipse社區(qū)和新聞組。目前,Eclipse已經(jīng)成為開發(fā)Java程序的首選IDE。
JBuilder是Borland公司的Java IDE。JBuilder功能強(qiáng)大,能夠滿足很多方面的應(yīng)用,尤其是對于服務(wù)器方以及EJB(Enterprise JavaBeans)開發(fā)者們來說。JBuilder缺點(diǎn)是往往一開始人們難于把握整個(gè)程序各部分之間的關(guān)系,對機(jī)器的硬件要求較高,占用系統(tǒng)資源較多,所以運(yùn)行速度也較慢。
NetBeans是SUN公司主導(dǎo)的一個(gè)開放源碼的Java IDE,它已經(jīng)僅次于Eclipse,是第二大Java IDE工具,適用于各種客戶機(jī)和Web應(yīng)用。這個(gè)IDE有很多好的工具支持基于服務(wù)的企業(yè)開發(fā),尤其是在SOA方面。舉個(gè)例子來說,NetBeans是IDE中唯一支持BPEL圖表和建模功能的產(chǎn)品。
JCreator為用戶提供了相當(dāng)強(qiáng)大的功能,可以不用激活主文檔而直接編繹或運(yùn)行Java程序。JCreator的設(shè)計(jì)接近Windows界面風(fēng)格,用戶對它的界面比較熟悉。其最大特點(diǎn)是與我們機(jī)器中所裝的JDK完美結(jié)合,是其他任何一款I(lǐng)DE所不能比擬的。它是一種初學(xué)者很容易上手的Java開發(fā)工具,然而JCreator的缺點(diǎn)也是非常明顯的,它由于太過簡單,當(dāng)學(xué)習(xí)到開始接觸AWT、SWING以及J2EE時(shí)就會發(fā)現(xiàn)它幾乎無法完成J2EE以及界面程序開發(fā)。
一般開發(fā)項(xiàng)目時(shí)都需要安裝各公司的應(yīng)用服務(wù)器(中間件)和相應(yīng)的開發(fā)工具,在使用這些開發(fā)工具之前,我們最好能熟知這些軟件的優(yōu)點(diǎn)和缺點(diǎn),以便根據(jù)實(shí)際情況選擇應(yīng)用。
4Java課程的教學(xué)
目前,國內(nèi)外很多高校已經(jīng)將Java列為教學(xué)語言。然而,面對Java日益龐大的體系結(jié)構(gòu)以及Java技術(shù)的飛速發(fā)展,如何在有限的學(xué)時(shí)內(nèi)有效地開展教學(xué)就很值得研究。
4.1教學(xué)內(nèi)容的選擇
必須有針對性地選擇教學(xué)內(nèi)容,包含基礎(chǔ)知識和高級知識,見表1。一方面,使得學(xué)生能夠掌握必要的基礎(chǔ)知識,為以后的進(jìn)一步學(xué)習(xí)打下扎實(shí)的基礎(chǔ);另一方面,由于其涉及部分高級知識,為開發(fā)實(shí)用程序提供可能。
學(xué)習(xí)Java不能僅僅理解為學(xué)習(xí)Java的基本語法,認(rèn)為掌握了基本語法就掌握了Java,這是理解上的誤區(qū)。Java不僅僅是一門語言,它還是一個(gè)平臺,所以要深入透徹地掌握J(rèn)ava,就必須掌握J(rèn)ava的基本工作原理,例如虛擬機(jī)、類裝載器等等。此外,面向?qū)ο蟮乃枷胍欢ㄒ攸c(diǎn)強(qiáng)調(diào)。面向?qū)ο笫且环N先進(jìn)的系統(tǒng)分析、設(shè)計(jì)和實(shí)現(xiàn)方法,它已成為當(dāng)前計(jì)算機(jī)軟件開發(fā)的主流方法。Java API文檔始終是學(xué)習(xí)Java 最權(quán)威、最全面的資料。學(xué)會使用Java API文檔,對于日后的實(shí)際開發(fā)工作意義重大。
要想開發(fā)真正的應(yīng)用程序,僅僅掌握基礎(chǔ)知識還是不夠的。異常處理、GUI、I/O 流、多線程、JDBC、Socket是必須講授的內(nèi)容。這部分知識也只是進(jìn)一步學(xué)習(xí)其他Java技術(shù)的基礎(chǔ),因而需要扎實(shí)掌握。
在可能的情況下,教師應(yīng)該盡早讓學(xué)生接觸設(shè)計(jì)模式(Design Pattern)。掌握常用的設(shè)計(jì)模式,可以避免重復(fù)設(shè)計(jì)或盡可能少做重復(fù)設(shè)計(jì),極大地提高軟件的可復(fù)用性和靈活性,從而大大提高軟件開發(fā)效率。
4.2教學(xué)各環(huán)節(jié)的實(shí)施和教學(xué)方法分析
基礎(chǔ)先行的講授方式:先講圖形用戶界面的做法從GUI和applet開始,似乎能夠引起學(xué)生的興趣,但這需要學(xué)生具備牢固的面向?qū)ο蟪绦蛟O(shè)計(jì)方面的知識,并要求對Java事件處理模式有很好的理解,所以學(xué)生可能不太容易完全接受。先講基礎(chǔ),是一種循序漸進(jìn)的講授方式,首先對程序設(shè)計(jì)的概念、控制語句、方法和數(shù)組打下堅(jiān)實(shí)的基礎(chǔ),然后介紹面向?qū)ο蟪绦蛟O(shè)計(jì),再講授圖形用戶界面、applet,最后講授異常處理、簡單I/O和其他高級課題[5]。這種方法的好處是,首先講解了面向過程的方法,然后演示面向?qū)ο蠓椒ǖ膬?yōu)越性,學(xué)生可以從中學(xué)到何時(shí)以及如何高效應(yīng)用面向?qū)ο蠓椒ā?/p>
4.2.1適時(shí)引入IDE工具
目前,已經(jīng)有很多高級的可視化Java開發(fā)工具,例如JBuilder、Eclipse等等。這些開發(fā)工具功能強(qiáng)大,對于提高編程效率很有幫助。然而,對于初學(xué)Java者,建議不要一開始就使用這些高級工具,否則很容易迷失方向。重點(diǎn)應(yīng)該放在Java基礎(chǔ)知識的學(xué)習(xí)上,可以使用純文本編輯工具作為編寫代碼的工具。例如,UltraEdit就是非常不錯的選擇。使用文本編輯類型的工具來編寫Java代碼,可以迫使初學(xué)者記住必要的基本知識,養(yǎng)成閱讀Java API文檔的習(xí)慣,這兩點(diǎn)在起步階段是很重要的,可以為后面的學(xué)習(xí)打下扎實(shí)的基礎(chǔ)。在課程的后期再引入IDE工具,這樣不至使學(xué)生將注意力集中在開發(fā)工具的學(xué)習(xí)上。
4.2.2重視編程技巧與風(fēng)格
學(xué)生過早使用Java框架,長于整合和快速開發(fā),生產(chǎn)效率高,做直接的、有章可循的、非研究性和非創(chuàng)新性的工作比較合適,但這樣的學(xué)生基礎(chǔ)不牢,對計(jì)算機(jī)系統(tǒng)的理解薄弱,處理細(xì)節(jié)和矛盾的能力不足,缺少自主分析問題、解決問題的知識、能力和經(jīng)驗(yàn)。因此在Java教學(xué)中教師決不能讓學(xué)生依賴Java框架寫出程序就大功告成,而應(yīng)該讓學(xué)生獨(dú)立實(shí)現(xiàn)部分類庫。教師可先介紹Java框架中相應(yīng)類的接口定義和使用方法,學(xué)生使用后,從用戶的角度有了直觀的認(rèn)識,再讓學(xué)生自己完成具體實(shí)現(xiàn),然后在可用性、靈活性、可擴(kuò)展性和性能上與Java框架中的實(shí)現(xiàn)比較,分析結(jié)果差異,最后再閱讀、研究分析Java框架的具體源代碼實(shí)現(xiàn)。這種讓學(xué)生先當(dāng)用戶,體會用戶的需求,然后再當(dāng)設(shè)計(jì)者,這種方案不僅培養(yǎng)了學(xué)生獨(dú)立解決問題的能力,也使其學(xué)習(xí)了Java框架中優(yōu)秀的編程技巧與風(fēng)格。
4.2.3設(shè)計(jì)大作業(yè),強(qiáng)化實(shí)踐環(huán)節(jié)
在課程后期,學(xué)生有了一定的Java編程基礎(chǔ),欠缺的主要是實(shí)際的開發(fā)經(jīng)驗(yàn)和全面系統(tǒng)的、深入的掌握J(rèn)ava技術(shù)。解決的方法就是通過企業(yè)真實(shí)項(xiàng)目練習(xí),對所學(xué)知識進(jìn)行深化,然后通過項(xiàng)目來獲取實(shí)際開發(fā)的經(jīng)驗(yàn),盡快達(dá)到企業(yè)的實(shí)際要求[6]。選擇項(xiàng)目時(shí)需要注意:①選擇企業(yè)真實(shí)項(xiàng)目。項(xiàng)目應(yīng)是實(shí)際的系統(tǒng),或者是實(shí)際系統(tǒng)的簡化和抽象,不能夠是沒有實(shí)戰(zhàn)意義的教學(xué)性或者是純練習(xí)性的項(xiàng)目。否則學(xué)生練習(xí)后還是難以達(dá)到企業(yè)實(shí)際的需要。②項(xiàng)目規(guī)模要適當(dāng)。這要根據(jù)項(xiàng)目練習(xí)的階段,練習(xí)的時(shí)間,練習(xí)的目標(biāo)來判斷。太大了做不完,太小了達(dá)不到練習(xí)的目的。③項(xiàng)目應(yīng)能覆蓋所學(xué)的主要知識點(diǎn)。學(xué)以致用,學(xué)完的知識點(diǎn)需要在實(shí)踐中應(yīng)用,才能夠真正理解和掌握。④強(qiáng)調(diào)培養(yǎng)學(xué)生的動手能力。軟件開發(fā)是一個(gè)動手能力要求很高的行業(yè),要求學(xué)生必須能夠獨(dú)立動手寫出代碼,寫出的代碼必須能解決實(shí)際的問題。
4.2.4推進(jìn)評價(jià)環(huán)節(jié)的改革
一門課程的教學(xué)效果決定了該門課程的成功與否。除了教學(xué)內(nèi)容的選擇、教學(xué)環(huán)節(jié)和實(shí)踐環(huán)節(jié)的充分重視,評價(jià)環(huán)節(jié)亦會顯著地影響教學(xué)效果。Java課程是一門實(shí)踐性非常強(qiáng)的課程,因而,單純地使用傳統(tǒng)的書面評價(jià)方式來判定學(xué)生的學(xué)習(xí)效果是不科學(xué)的。一方面不能考查學(xué)生的實(shí)際動手能力;另一方面也不能激發(fā)學(xué)生的學(xué)習(xí)興趣。建議使用理論與實(shí)踐兼顧、知識與能力并重的評價(jià)方式。對學(xué)生的評價(jià)主要由三個(gè)方面構(gòu)成:①平時(shí)考核。作業(yè)情況、平時(shí)課堂提問表現(xiàn)、到課率。②實(shí)踐考核。平時(shí)上機(jī)表現(xiàn)、課程上機(jī)作業(yè)。③理論考核。側(cè)重于基礎(chǔ)知識、基本概念的考查。這種評價(jià)方式能更加客觀地反映出學(xué)生的學(xué)習(xí)效果,對學(xué)生的評價(jià)也更加科學(xué)。也可以使學(xué)生同時(shí)重視基礎(chǔ)知識的掌握及動手能力的提高,最終達(dá)到提高教學(xué)效果的目的。
5結(jié)束語
本文對Java教學(xué)進(jìn)行了初步探討。要求教師要在更高的、全局的角度來安排教學(xué)內(nèi)容,并能根據(jù)技術(shù)的發(fā)展不斷更新教學(xué)內(nèi)容。對Java的教學(xué)只有經(jīng)過不斷的試驗(yàn)、探索、總結(jié),才能使教學(xué)效果不斷提高。
參考文獻(xiàn)
[1] 楊樹林,胡潔萍. Java語言最新實(shí)用案例教程[M]. 北京:清華大學(xué)出版社,2006.
[2] 臺雯. Java集成開發(fā)環(huán)境的分析與研究[J]. 天津職業(yè)院校聯(lián)合學(xué)報(bào),2008,10(2):56.
[3] 高振強(qiáng),段麗華. 培養(yǎng)高技能人才的課程體系構(gòu)建[J]. 寧波大學(xué)學(xué)報(bào)(教育科學(xué)版),2007,(8):52-55.
[4] 趙敬梅,郝桂英,劉鳳. 高職計(jì)算機(jī)專業(yè)課程體系構(gòu)建的探索[J]. 教育與職業(yè),2007,(5):143-144.
An Exploration into the Teaching of Java as a Course
ZHOU Xian-shan, LI Juan, GUAN Bin
Abstract: The article analyzes the relevant controversies on Java as the basic language of instruction, examines the technical features of the developmental environment of the commonly integrated Java, and explores the choice of teaching content and various stages of Java teaching.
Key words: Java, IDE, teaching