王小正 楊 鑫 侯 青
摘要:在全面分析Java EE相關(guān)教材現(xiàn)狀的基礎(chǔ)上,重點(diǎn)闡述面向應(yīng)用型本科院校的Java EE已有教材在編寫目標(biāo)、內(nèi)容設(shè)置及案例設(shè)計(jì)等方面出現(xiàn)的問題,并針對以上問題說明教材的內(nèi)容編排思路和案例設(shè)計(jì)具體方案。
關(guān)鍵詞:Java EE;教材設(shè)計(jì);應(yīng)用型本科院校
0 引言
Java EE是Sun公司主導(dǎo)提出的輕量級企業(yè)級應(yīng)用框架,為開發(fā)具有跨平臺性、可擴(kuò)展性、高穩(wěn)定性的軟件系統(tǒng)提供強(qiáng)大的支持,已在政府、金融、通信、電力等多個(gè)行業(yè)得到廣泛應(yīng)用,例如電子商務(wù)、電子政務(wù)系統(tǒng)。目前國內(nèi)對Java EE工程師需求量很大,IDC統(tǒng)計(jì)數(shù)據(jù)顯示,J2EE人才占軟件開發(fā)人才需求的60%左右。幾乎所有高校的軟件學(xué)院和軟件工程專業(yè)都開設(shè)了Java EE課程,相關(guān)的教材也如雨后春筍般涌現(xiàn),使教師和學(xué)生有了充分的選擇余地,有力地促進(jìn)相關(guān)課程在高校的普及和發(fā)展。
1 Java EE教材現(xiàn)狀
根據(jù)教材書籍適用的讀者人群,可以把JavaEE教材大致分為3類:第1類教材適用的讀者人群主要是具有一定的開發(fā)經(jīng)驗(yàn),有初步JSP網(wǎng)絡(luò)編程基礎(chǔ),初步了解Java EE框架的開發(fā)人員。名為《輕量級Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)》的書籍就屬于此類教材,該書816頁,詳細(xì)介紹了JavaEE開發(fā)環(huán)境、核心技術(shù)及框架技術(shù)的原理和應(yīng)用,內(nèi)容非常翔實(shí),應(yīng)該說該書作為一本面向企業(yè)工程師讀者群介紹Java EE技術(shù)的原理和應(yīng)用的工具書是非常合適的。第2類教材適用的讀者人群主要是高職院校的大三學(xué)生及社會(huì)IT專業(yè)培訓(xùn)機(jī)構(gòu)的學(xué)員。筆者于2012年與企業(yè)工程師及相關(guān)教師合作編寫的教材《Java EE項(xiàng)目實(shí)訓(xùn)教材》屬于此類教材,該教材總共206頁,刪去了Java EE中涉及的許多原理性知識及部分內(nèi)容介紹,主要以多個(gè)小案例和一兩個(gè)綜合案例來指導(dǎo)學(xué)生動(dòng)手實(shí)踐,從而初步掌握J(rèn)ava EE技術(shù)的基本使用。第3類教材適用的讀者人群是應(yīng)用型本科院校的大三或大四學(xué)生,《Java EE基礎(chǔ)實(shí)用教程》屬于這類教材,該教材與第1類教材相比,內(nèi)容編排上做了縮減,省略了許多難度較高的技術(shù)細(xì)節(jié),相比于第2類教材又增加了一定的原理性知識的介紹。
目前市面上與Java EE相關(guān)的第1類和第2類教材品種較多,應(yīng)該說這兩類教材針對特定的人群在內(nèi)容編排和目標(biāo)定位方面都是比較恰當(dāng)?shù)?。而?類教材品種較少,雖然教材的目錄結(jié)構(gòu)和所用案例是比較全面的,但是作為針對應(yīng)用型本科院校學(xué)生的教材,還存在兩個(gè)問題:一是該類教材編寫的目標(biāo)定位和應(yīng)用型本科院校開設(shè)此課程的目標(biāo)不是太吻合,學(xué)生使用此類教材學(xué)習(xí)后并不能夠很好地把之前已學(xué)的基礎(chǔ)知識融會(huì)貫通,沒有達(dá)到鞏固所學(xué)知識的目的。二是此類教材使用的案例相對分散,前后章節(jié)的案例沒有連貫性,使學(xué)生在學(xué)習(xí)過程中不容易領(lǐng)會(huì)和掌握J(rèn)ava EE技術(shù)的要領(lǐng)。
2 教材建設(shè)實(shí)踐
2.1 教材建設(shè)基本思路
鑒于當(dāng)前面向應(yīng)用型本科院校的Java EE教材所存在的問題和原因,根據(jù)教學(xué)過程中積累的經(jīng)驗(yàn)和學(xué)生反饋,面向應(yīng)用型本科院校的JavaEE教材的建設(shè)應(yīng)圍繞兩個(gè)方面進(jìn)行:首先,教材編寫的目標(biāo)應(yīng)該與應(yīng)用型本科院校培養(yǎng)目標(biāo)一致,應(yīng)用型本科院校培養(yǎng)的工科類學(xué)生既不同于研究型大學(xué)培養(yǎng)的高端人才,又有別于高職院校培養(yǎng)的技能型人才。因?yàn)榧夹g(shù)在不斷地更新,行業(yè)發(fā)展也在不斷變化,培養(yǎng)的人才應(yīng)該是既具有一定的專業(yè)理論功底又具有較強(qiáng)的實(shí)踐工程能力的應(yīng)用型人才,這類人才在今后的職業(yè)生涯中既能很快適應(yīng)應(yīng)用開發(fā)技術(shù)快速發(fā)展的環(huán)境,又具有較強(qiáng)的學(xué)習(xí)潛力,從而滿足社會(huì)對此類人才的需求。為了達(dá)成上述目標(biāo),教材內(nèi)容編排所涉及的知識點(diǎn)應(yīng)該是相互貫通的,要能夠讓學(xué)生在學(xué)習(xí)過程中不斷鞏固之前所學(xué)的一系列專業(yè)知識,從而達(dá)到融會(huì)貫通的境界。在案例設(shè)計(jì)上要前后連貫、由淺人深、觸類旁通,從而使學(xué)生相對輕松地、系統(tǒng)地理解和掌握J(rèn)ava EE的精髓。
2.2 教材內(nèi)容編排概要
大多數(shù)院校都把Java EE課程開設(shè)時(shí)問安排在大三下學(xué)期,這個(gè)階段的學(xué)生已經(jīng)修完了許多專業(yè)課。因此該課程所選教材在內(nèi)容安排上應(yīng)把Java EE所涉及的相關(guān)知識與學(xué)生已修的專業(yè)課知識相關(guān)聯(lián),在介紹相關(guān)知識時(shí)應(yīng)從學(xué)生已學(xué)知識進(jìn)行延伸,從而使學(xué)生在學(xué)習(xí)過程中既鞏固了已學(xué)知識,又能夠更好地理解和掌握新知識。我們把Java EE所涉及的技術(shù)分為3個(gè)部分,每部分的相關(guān)技術(shù)及其涉及的知識點(diǎn)見表1。
從表1可以看出,Java EE是一門涉及面廣、實(shí)踐性要求高的技術(shù)課程,在校學(xué)生往往缺乏實(shí)際軟件項(xiàng)目的鍛煉,容易對Java EE技術(shù)的用途產(chǎn)生困惑,難以理解Java EE的復(fù)雜實(shí)現(xiàn)。但是Java EE中的技術(shù)涉及的知識點(diǎn)學(xué)生大多數(shù)都已學(xué)習(xí)或接觸過,因此在教材內(nèi)容編排和案例設(shè)計(jì)上應(yīng)結(jié)合已學(xué)知識,使學(xué)生觸類旁通,從而真正理解和掌握這些技術(shù)。
2.3 具體內(nèi)容編排及案例設(shè)計(jì)舉例
以“Spring”技術(shù)的內(nèi)容編排及案例設(shè)計(jì)為例。
首先需要讓學(xué)生知道“Spring”技術(shù)的實(shí)質(zhì)是什么,由于“Spring”技術(shù)的核心是“控制反轉(zhuǎn)IOC”,這其實(shí)是一種設(shè)計(jì)模式,學(xué)生初次接觸這個(gè)概念是很難理解的。大三的學(xué)生基本都已學(xué)過軟件工程這門課程,因此,內(nèi)容安排上應(yīng)該從回顧已經(jīng)學(xué)習(xí)或接觸過的軟件工程的工廠設(shè)計(jì)模式人手。通過回顧工廠設(shè)計(jì)的優(yōu)缺點(diǎn),進(jìn)一步闡述IOC的實(shí)質(zhì)其實(shí)就是工廠模式的升華,然后進(jìn)行具體案例設(shè)計(jì),在案例中把工廠模式和IOC進(jìn)行比較,從而使學(xué)生真正理解這種技術(shù)的實(shí)質(zhì),為今后學(xué)習(xí)和使用類似的技術(shù)打下良好基礎(chǔ)。
“Spring”模塊具體內(nèi)容編排及案例設(shè)計(jì)如下。
工廠模式是通過專門定義一個(gè)類來負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類。如果簡單工廠模式所涉及的具體產(chǎn)品之間沒有共同的邏輯,那么我們就可以使用接口來扮演抽象產(chǎn)品的角色。通過該模式在一定程度上提高了程序的復(fù)用性,降低了代碼的耦合度。
舉例說明工廠模式的應(yīng)用。
創(chuàng)建一個(gè)Java Project,命名為“FactoryExample”。建立接口Animal,代碼如下:
package face;
public interface Animal
{
void eat();
void walk();
}
建立Cat類和Dog類,分別實(shí)現(xiàn)Animal接口。
Cat.java代碼如下:
package iface;
import face.Animal;
public class Cat implements Animal{
public void eat()
{
System.out.println(“貓吃魚!”);
}
public void waLk(){
System.out.println(“貓爬樹!”);
}
}
創(chuàng)建Dog.j ava文件,代碼如下:
package iface;
import face.Animal;
public class Dog implements Animal
{
public void eat(){
System.out.println(”狗啃骨頭!”);
}
public void walk(){
System.out.println(“狗奔跑!”);
}
}
建立工廠類Factory,代碼如下:
package Factory;
import iface.Cat;
import iface.Dog;
import face.Animal;
public class MyFactory{
public Animal getAnimaI(String name){
if(name equals(“Cat”)){
retum new Cat();
} else if(name.equals(“Dog”)){
return new Dog();
}else{
t h r o w
n e wlllegaIArgumentException(“參數(shù)不正確”);
}
}
}
建立測試類Test,代碼如下:
package test;
import face.Animal;
import Factory. MyFactoy;
public class test
{
public static void main(String[] args)
{
Animal animal=null;
animal=new MyFactoyO.getAnimal("Cat");
animal.eat0;
animal.walk0;
animal=new MyFactoyO.getAnimal(“Dog”);
animal.eat0;
animal.walk0;
}
}
在簡單工廠模式中,調(diào)用程序無需直接創(chuàng)建所調(diào)用類的實(shí)例,都是通過工廠類實(shí)現(xiàn)實(shí)例化,從而降低了程序間的耦合度。表面上是在一定程度上緩解了代碼耦合問題,但實(shí)質(zhì)上這種代碼耦合并沒有改變。通過IOC模式可以徹底解決這種耦合,它把耦合從代碼中移出去,放到統(tǒng)一的XML文件中。而Spring框架則提供了更好的辦法,開發(fā)人員可以直接應(yīng)用Spring提供的IOC方式,即被調(diào)用者的實(shí)例工作由Spring容器完成,讓bean與bean之間以配置文件組織在一起,對象間的具體實(shí)現(xiàn)互相透明,從而在調(diào)用的對象發(fā)生變化時(shí)不用重新修改并編譯具體的代碼。既降低了程序間耦合度,又減輕了開發(fā)者的負(fù)擔(dān)。
控制反轉(zhuǎn)的實(shí)現(xiàn)方法如下:
修改配置文件applicationContext.xml,修改后,代碼如下:
<?xml version=“1.0”encoding="UTF-8"?>
xmlns="http://www. springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instancc" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-bcans-3.O.xsd">