聶艷明等
摘要:鑒于Java EE課程具有的工程實(shí)踐性、項(xiàng)目驅(qū)動(dòng)性和知識整合性,本研究結(jié)合該課程的教學(xué)建設(shè)現(xiàn)狀,對比分析了幾種主流Java Web開發(fā)模型/框架(即經(jīng)典MVC模型、SSH輕量級框架以及基于EJB的Java EE重量級框架)的開發(fā)方式,并以基于項(xiàng)目驅(qū)動(dòng)的面向?qū)ο筌浖こ谭椒ㄩ_發(fā)的典型業(yè)務(wù)項(xiàng)目作為教學(xué)案例。該研究對Java EE課程教學(xué)模式改革以及課程案例建設(shè)具有積極意義。
關(guān)鍵詞:Java EE主流開發(fā)模型/框架; MVC(Model-View-Controller); SSH(Struts+Spring+Hibernate)
中圖分類號:G642.0 文獻(xiàn)標(biāo)識碼:B 論文編號:1674-2117(2015)18-0107-03
作為一門高校高年級軟件工程專業(yè)必修課程,Java EE的目的是讓學(xué)生具備基于Java EE技術(shù)進(jìn)行企業(yè)級應(yīng)用軟件開發(fā)的專業(yè)技能,具有極強(qiáng)的工程實(shí)踐性;作為一種主流的企業(yè)級應(yīng)用開發(fā)技術(shù),Java EE課程中所涉及的技術(shù)及其整合的示例需來自于更有說服力和針對性的業(yè)界第一線項(xiàng)目,使得課程學(xué)習(xí)與基于Java EE的企業(yè)級應(yīng)用項(xiàng)目開發(fā)有機(jī)融合,因而又具有明顯的項(xiàng)目驅(qū)動(dòng)性;該課程要求在面向?qū)ο蟪绦蚍治鲈O(shè)計(jì)、Java編程語言等的基礎(chǔ)上,整合數(shù)據(jù)庫、網(wǎng)絡(luò)、分布式系統(tǒng)等核心專業(yè)課程,全面了解Java EE的相關(guān)理論和核心技術(shù),進(jìn)而掌握如何構(gòu)建基于Java EE技術(shù)的企業(yè)級應(yīng)用,具有很強(qiáng)的知識整合性。因而,Java EE課程教學(xué)必須圍繞該課程以上三個(gè)特性(即工程實(shí)踐性、項(xiàng)目驅(qū)動(dòng)性、知識整合性)來進(jìn)行。而采用基于幾種主流模型/框架開發(fā)方式的分析對比,配合合理有效的Java EE技術(shù)課程項(xiàng)目案例,有助于改進(jìn)現(xiàn)有Java EE課程教學(xué)模式,對相關(guān)技術(shù)融合有著較強(qiáng)的促進(jìn)作用,有助于本課程教學(xué)的持續(xù)改進(jìn)。
Java EE課程教學(xué)研究現(xiàn)狀
目前,國內(nèi)絕大多數(shù)示范性軟件學(xué)院都開設(shè)了Java EE課程,其他院校的軟件工程專業(yè)也大都開設(shè)了該課程。作為IBM精品課程,同濟(jì)大學(xué)軟件學(xué)院的“J2EE企業(yè)級開發(fā)”課程在項(xiàng)目實(shí)訓(xùn)及代碼訓(xùn)練強(qiáng)化等方面頗具特色。[1]哈爾濱理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院的謝怡寧[2]等提出了諸如任務(wù)驅(qū)動(dòng)等具有針對性的Java EE課程教學(xué)改革方案。浙江大學(xué)城市學(xué)院計(jì)算機(jī)系的陳觀林[3]等探討了Java EE課程教學(xué)模式改革的思路,提出了采用實(shí)例化教學(xué)方式和引入課程設(shè)計(jì)環(huán)節(jié)以改進(jìn)教學(xué)手段和考核方法。北京石油化工學(xué)院經(jīng)濟(jì)管理學(xué)院的張幸[4]以J2EE編程實(shí)訓(xùn)課程教學(xué)改革為例闡述了如何在編程技術(shù)的學(xué)習(xí)中掌握管理知識的方法。以上關(guān)于Java EE課程教學(xué)改革的研究,筆者都進(jìn)行了有益的探索。但Java EE課程內(nèi)容龐雜,知識點(diǎn)和關(guān)鍵點(diǎn)繁多,理論與實(shí)踐相結(jié)合的需求突出,易造成教學(xué)目標(biāo)定位的迷失,進(jìn)而影響到本課程的教學(xué)效果。西北農(nóng)林科技大學(xué)為軟件工程等四個(gè)專業(yè)設(shè)置的“Java EE技術(shù)”課程開始于2008年,我們在該課程的課堂教學(xué)、上機(jī)實(shí)踐及校企聯(lián)合實(shí)訓(xùn)等方面進(jìn)行了一系列探索和創(chuàng)新。本研究從Java EE本身的核心理念和當(dāng)前主流開發(fā)模型/框架雙管齊下,探索Java EE課程的創(chuàng)新性教學(xué)方法。
主流開發(fā)模型/框架
Java Web開發(fā)技術(shù)發(fā)展到今天已經(jīng)出現(xiàn)多種開發(fā)模型和技術(shù)框架,具有代表性的包括基于MVC的JSP+Servlet+JavaBean模型(以下簡稱為MVC模型)、輕量級SSH框架(以下簡稱為SSH框架)和重量級的Java EE(以JSF+EJB+JPA為核心技術(shù))框架(以下簡稱為JEJ框架)。
MVC模型:基于該模型(如圖1)進(jìn)行的Java Web應(yīng)用開發(fā),只是實(shí)現(xiàn)了模型、視圖和控制器的分離以及交互過程規(guī)范,并未提供相應(yīng)的基礎(chǔ)支持,因而開發(fā)效率仍然不高。但由于該模型未采用任何第三方框架,因此是一種最為靈活的Java Web應(yīng)用開發(fā)模式。
SSH框架:此框架(如圖2)中,Struts作為Web表現(xiàn)層的解決方案,自身為MVC都提供了相應(yīng)組件;Spring是一個(gè)輕量級的基于控制反轉(zhuǎn)(IoC) 和面向方面編程(AOP)的容器框架,為業(yè)務(wù)邏輯層提供了一個(gè)輕量的解決方法;Hibernate則是一個(gè)開放源的對象關(guān)系映射(ORM)框架,對JDBC進(jìn)行了對象封裝。而SSH框架則整合了Struts、Spring和Hibernate三種框架的各自優(yōu)勢,為Java EE應(yīng)用開發(fā)提供了一個(gè)效率高、集成性好的輕量級方案。
JEJ框架:此種開發(fā)模式(如圖3)中,JSF用于表現(xiàn)層,在用戶視圖事件響應(yīng)粒度方面表現(xiàn)尤為突出;EJB作為業(yè)務(wù)層邏輯層,可實(shí)現(xiàn)組件粒度的分布式部署,在支持應(yīng)用系統(tǒng)可伸縮性方面具有天然優(yōu)勢;JPA作為持久層技術(shù)框架,可整合現(xiàn)有的主要持久層實(shí)現(xiàn)技術(shù),如Hibernate、TopLink、OpenJPA等。主要適用于強(qiáng)調(diào)應(yīng)用分布部署、可伸縮性等能力的大型企業(yè)級應(yīng)用。
幾種開發(fā)方式的分析對比
對于一般性項(xiàng)目,可采用基于MVC模型進(jìn)行開發(fā)。對于那些可擴(kuò)展性和可維護(hù)性等為關(guān)鍵的項(xiàng)目,就需要采用基于框架的開發(fā)方法。相較而言,無論是輕量級框架SSH還是重量級框架JEJ,在安全性、事務(wù)性等方面的支持都較為完善。但在支持系統(tǒng)分布部署的能力方面,JEJ框架具有先天性優(yōu)勢,可支持組件粒度的分布部署,特別適合于企業(yè)級應(yīng)用甚至是云端應(yīng)用的開發(fā)。從學(xué)習(xí)者的角度,基于經(jīng)典的MVC模型來開發(fā)實(shí)踐案例項(xiàng)目有助于夯實(shí)Java Web開發(fā)技術(shù)基礎(chǔ),基于SSH框架開發(fā)系統(tǒng)則可以讓學(xué)生深刻體驗(yàn)到其在效率與便利性等方面所具有的優(yōu)勢,而基于重量級的JEJ框架則可以使學(xué)生了解到在應(yīng)對系統(tǒng)的分布能力與可伸縮性等方面要求時(shí)該如何合理選擇技術(shù)和框架。而采用三種開發(fā)模型/技術(shù)框架對同一個(gè)實(shí)踐案例項(xiàng)目進(jìn)行開發(fā),可以更直觀地體驗(yàn)各自優(yōu)勢,通過對比性方法學(xué)習(xí)和實(shí)踐,可對Java EE應(yīng)用開發(fā)技術(shù)有更為透徹的理解和掌握。
Java EE作為一種基于Java的企業(yè)級應(yīng)用開發(fā)整體技術(shù)解決方案,本身具有非常強(qiáng)的技術(shù)兼容性和整合性。Java EE采用包括表現(xiàn)層、業(yè)務(wù)層、持久層和數(shù)據(jù)層的分層架構(gòu)(如上頁圖4),各層可根據(jù)實(shí)際需求選擇具有相應(yīng)特點(diǎn)和適應(yīng)場合的技術(shù)或框架的組合進(jìn)行Java EE應(yīng)用開發(fā)。在Java EE具體教學(xué)過程中,可以采用以Java EE架構(gòu)原理的理解和掌握為核心、以基于MVC模型的開發(fā)技術(shù)作為基礎(chǔ)、以基于SSH框架的開發(fā)技術(shù)作為重點(diǎn)、以EJB技術(shù)作為高級內(nèi)容,輔以JSF、JPA等為補(bǔ)充,確保Java EE課程教學(xué)在抓住核心和關(guān)鍵的同時(shí),又拓展了學(xué)生對Java EE主流技術(shù)和框架的了解,為Java EE企業(yè)級應(yīng)用開發(fā)實(shí)戰(zhàn)奠定了堅(jiān)實(shí)的理論知識基礎(chǔ)、開拓了廣闊的解決方案視野。
為了增強(qiáng)基于主流模型/框架的Java EE應(yīng)用開發(fā)方式對比分析的Java EE課程教學(xué)效果,提供具體的案例項(xiàng)目實(shí)踐至關(guān)重要。對于案例業(yè)務(wù)項(xiàng)目的選取,需從代表性、適時(shí)性、易理解性和針對性等方面給予考慮。功能上除了實(shí)現(xiàn)典型業(yè)務(wù)之外,同時(shí)兼顧系統(tǒng)對角色/權(quán)限、工作流、事務(wù)、日志、安全等的支持。采用用例驅(qū)動(dòng)的面向?qū)ο蠓椒ǎ貏e強(qiáng)調(diào)Java EE技術(shù)架構(gòu),分別應(yīng)用上文所述的三種主流Java EE應(yīng)用開發(fā)模型/框架以及基于Java EE分層架構(gòu)提供其他技術(shù)/框架(如Struts+Spring+MyBatis)組合對項(xiàng)目案例進(jìn)行開發(fā),從理論指導(dǎo)和實(shí)踐示范兩個(gè)方面增強(qiáng)Java EE課程的教學(xué)效果。
結(jié)論與展望
作為一門綜合性極強(qiáng)的課程,Java EE課程具有工程實(shí)踐性、項(xiàng)目驅(qū)動(dòng)性和知識整合性等特點(diǎn),需要具有創(chuàng)新性的教學(xué)方式和方法。而當(dāng)前該課程教學(xué)與建設(shè)基本上仍然沿用一般課程的模式。鑒于此,本文提出了基于JSP+Servlet+JavaBean的MVC模型、Struts+Spring+Hibernate的輕量級框架SSH以及JSF+EJB+JPA重量級框架JEJ的Java EE開發(fā)方式對比的教學(xué)方法,并以基于面向?qū)ο筌浖こ谭椒▽Φ湫桶咐?xiàng)目進(jìn)行開發(fā)作為教學(xué)及實(shí)踐案例,探索了Java EE課程的課堂教學(xué)與實(shí)踐以及自身建設(shè)。
在對該教學(xué)方法進(jìn)行深度實(shí)踐的基礎(chǔ)上,我們計(jì)劃在Java EE課程中逐步引入基于項(xiàng)目開發(fā)驅(qū)動(dòng)的教學(xué)方法,同時(shí)完善案例項(xiàng)目生成與開發(fā)體系。并將借鑒CDIO[5]思想來指導(dǎo)和梳理該Java EE課程的教學(xué)流程與具體的改進(jìn)措施,以期Java EE課程教學(xué)的可持續(xù)發(fā)展。
參考文獻(xiàn):
[1]IBM精品課程——J2EE企業(yè)級開發(fā)[EB/OL].上海:同濟(jì)大學(xué),2008.http://sse.#edu.cn/j2ee/.
[2]謝怡寧.J2EE課程教學(xué)改革的探索與實(shí)踐[J].江蘇教育學(xué)院學(xué)報(bào)(自然科學(xué)版),2010(01):46-49.
[3]陳觀林.《J2EE架構(gòu)與應(yīng)用開發(fā)》課程的教學(xué)改革與實(shí)踐[J].計(jì)算機(jī)時(shí)代,2008(04):71-72.
[4]張幸.應(yīng)用型本科信息管理專業(yè)基于J2EE編程實(shí)訓(xùn)的探索[C].西安:第十一屆全國經(jīng)濟(jì)管理院校工業(yè)技術(shù)學(xué)研究會(huì),2012:51-53.
[5]陶勇芳,商存慧.CDIO大綱對高等工科教育創(chuàng)新的啟示[J].中國高教研究,2009(11):81-83.
基金項(xiàng)目:2014年陜西省教育科學(xué)“十二五”規(guī)劃課題項(xiàng)目“面向?qū)嵱眯蛙浖こ倘瞬排囵B(yǎng)的Java EE課程教學(xué)與實(shí)踐改革探索研究”研究成果(項(xiàng)目編號:SGH140541);2015年校級教學(xué)改革研究項(xiàng)目“兼顧知識融合的《Java EE技術(shù)》課程教學(xué)方法創(chuàng)新研究與實(shí)踐”研究成果(項(xiàng)目編號:JY1504051)。