一.前言
你的小組的人員是否不按照你制訂的開(kāi)發(fā)流程和代碼規范來(lái)開(kāi)發(fā)? 你的小組的成員經(jīng)常變化,經(jīng)常要對新手講述什么是 Struts,什么是MVC? 已有的開(kāi)發(fā)工具的功能不能滿(mǎn)足你的需要?
如果你遇到上述問(wèn)題,請看看本文,雖然它不一定能解決好你的問(wèn)題,但至少它回給你一定的啟發(fā)的。本文從實(shí)際案例觸發(fā),深入淺出,圖文并茂向您描述了如何利用 Eclipse 平臺規范你小組的開(kāi)發(fā)流程,并且幫助新手快速融入開(kāi)發(fā)中。
閱讀本文,最好具有 J2EE 開(kāi)發(fā)、Eclipse 平臺和插件開(kāi)發(fā)、Eclipse 平臺 JDT 插件擴展和 Struts 相關(guān)知識。
二.實(shí)施整體描述
Eclipse 雖然是一個(gè)開(kāi)源的平臺,但是現如今其功能功能已經(jīng)不輸給任何開(kāi)發(fā)工具,借助 eclipse 自帶的 JDT 和各種第三方的插件,Eclipse 成為最流行的開(kāi)發(fā)工具之一。

Eclipse 已經(jīng)擁有軟件開(kāi)發(fā),測試,文檔,協(xié)作等能力,它已經(jīng)能融入軟件開(kāi)發(fā)的整個(gè)流程中了。
讓我們從一個(gè)實(shí)際的案例例談起,看看我們是如何擴展 Eclipse 來(lái)輔助和規范我們的開(kāi)發(fā)工作的。這是一個(gè)電力公司銷(xiāo)售分析系統,里面有眾多的各種各樣的分析主題,例如要分析一個(gè)電力公司的銷(xiāo)售情況,用戶(hù)可以選擇時(shí)間范圍來(lái)分析公司的銷(xiāo)售情況,如下圖所示:

我們的小組在開(kāi)發(fā)一個(gè)主題的流程大致是這樣的:

編寫(xiě)擴展 JDT 的插件輔助開(kāi)發(fā)流程
我們的開(kāi)發(fā)流程從本質(zhì)上來(lái)說(shuō),還是和上面一樣,但是由于我們使用了 wizards 和擴展了 JDT 來(lái)輔助我們完成工作,那么實(shí)際開(kāi)發(fā)者的開(kāi)發(fā)流程會(huì )簡(jiǎn)化了,如下:

核心是擴展了 JDT 插件,把開(kāi)發(fā)的流程集中在一個(gè) Wizard 完成。
首先,讓我們看看實(shí)際的效果,然后再深入說(shuō)明和講解。
1.在 eclipse 平臺中單擊開(kāi)始->新建->J2EE 開(kāi)發(fā)包->開(kāi)發(fā)新的分析主題菜單。
如下圖所示:

2.首先顯示的是生成 Action 類(lèi)的界面,它擴展了 JDT 插件的功能來(lái)允許程序員的輸入客戶(hù)容許的查詢(xún)條件,而且它已經(jīng)把父類(lèi)設定為了可以看到父類(lèi) org.apache.struts.action.Action,這是 Struts 的要求.這再后面是用來(lái)自動(dòng)生成 FormBean,和 Jsp 表單用的。

3.單擊next,在這里輸入SQL,并且可以直接測試。參數用?代替。小組成員可以直接在這里直接編寫(xiě),測試SQL,再最后會(huì )自動(dòng)生成Java代碼。

4.如果沒(méi)有錯誤,單擊 finish 按鈕。會(huì )自動(dòng)生成 Jsp,Action 的骨架和基本功能代碼。自動(dòng)生成的 Jsp 表單,自動(dòng)生成的 Action 和自動(dòng)生成的現實(shí)查詢(xún)結果的 Jsp。由于這里各個(gè)項目完全不同,建立都使用模板引擎這樣隨時(shí)修改模板就不用修改為 Java 代碼了。
大體的結構如下,有兩個(gè) jsp,一個(gè) anction:

5.根據實(shí)際情況修改骨架,運行,并且測試一下效果。
三.如何開(kāi)發(fā)
1.首先是如何開(kāi)發(fā) Eclipse 中的 Wizard 。
這里我不從頭介紹如何開(kāi)發(fā) Wizard,如果您對如何開(kāi)發(fā) Wizard 尚且一無(wú)所知,請參考 Eclipse.org 上來(lái)自 Doina Klinger 的文章: http://www.eclipse.org/articles/Article-JFace%20Wizards/wizardArticle.html ,此文 Step by Stey 的介紹了如何創(chuàng )建 Eclipse 的 wizard,和各種細節知識。
首先,看看我們插件的 plugin.xml 文件:
|
實(shí)現它的類(lèi) net.sf.yangtze.pdpf.wizards.NewSubjectWizard 繼承自 org.eclipse.jface.wizard.Wizard 類(lèi),它有幾個(gè)重要的方法:
addPage - 向 Wizard 添加頁(yè)面,就是那些可以通過(guò) next>,<back 瀏覽的頁(yè)面。
FinishPage - 當用戶(hù)點(diǎn)擊 finish 的時(shí)候程序完成的工作。在我們的插件中就是完成自動(dòng)生成 jsp,Action 的工作,把這些代碼放在FinishPage 方法即可。
我們有兩個(gè) Page 一個(gè)用來(lái)輸入和測試 SQL 語(yǔ)句,一個(gè)用來(lái)定制 Action 和可以輸入的參數。
2.然后是如何從 JDT 擴展。
這部分現成資料不多,所以要稍微探討一下。經(jīng)常使用 Eclipse 開(kāi)發(fā) java 的程序員應該非常熟悉 JDT,實(shí)際上 Eclipse 平臺可以用來(lái)開(kāi)發(fā)任何語(yǔ)言的,它并不是一個(gè) Java IDE,Java IDE 的功能是通過(guò) JDT 插件完成的,在 Eclipse 的世界中一切都是插件。
在開(kāi)發(fā) Java 的時(shí)候,有許多的 Wizard 來(lái)輔助我們完成編碼工作,如新建類(lèi),接口,如下圖:

而且它里面有很多輔助工作,如你點(diǎn)擊超類(lèi)的時(shí)候,有一個(gè)幫助你輸入超類(lèi)名稱(chēng)的窗口會(huì )彈出來(lái),在里面你并不需要輸入類(lèi)的完整的名稱(chēng),它會(huì )自動(dòng)提示。接口和包都有類(lèi)似的輔助輸入的功能。

我使用這些功能覺(jué)得很方便和習慣,所以我希望我的插件在創(chuàng )建 Action 的時(shí)候也能有類(lèi)似的功能,而我不想自己再重新造個(gè)輪子(而且這個(gè)工作可不輕松),所以我就得從 JDT 中擴展,而不使用標準的 org.eclipse.jface.wizard.Wizard 類(lèi)。
在傳統的 wizard 中我們使用 org.eclipse.jface.wizard.Wizard 和 org.eclipse.jface.wizard.WizardPage 類(lèi),但如果你希望繼承 JDT 的功能必須對應使用 org.eclipse.jdt.internal.ui.wizards.NewElementWizard 和 org.eclipse.jdt.ui.wizards.NewTypeWizardPage 類(lèi)。
NewElementWizard 也是繼承自 Wizard,它只是做了一些檢查是不是 Java 項目等工作,Eclipse 中新建類(lèi),和接口 Wizard 都是從這個(gè)類(lèi)基礎發(fā)展而來(lái)的。內容豐富的是 org.eclipse.jdt.ui.wizards.NewTypeWizardPage 類(lèi),它包含了瀏覽項目,瀏覽超類(lèi),接口等功能,而且提供了豐富的方法來(lái)構建你的 Java 類(lèi)型,例如添加方法,添加 import 等,更多內容可以參考自帶的 API doc 文件,一幕了然。
可以看看我上面插件中的例子:
|
總結
Eclipse 的強大在于它容許插件擴展其它插件,利用 JDT 你完全可以開(kāi)發(fā)出一個(gè)符合自己要求的快速開(kāi)發(fā)工具,而并不需要非常多的代碼。有興趣的讀者可以參考看一下 Lomboz 項目,一個(gè)為 Eclipse 開(kāi)發(fā) J2EE 的插件,它的功能強大,但實(shí)際它的代碼卻并不多。
擴展 Eclipse 完全可以構建屬于你自己的快速開(kāi)發(fā)工具,它可以顯著(zhù)的提高工作效率。而且任何一個(gè)新手都可以快速上手,你的知識被整個(gè)項目組成員共享,這減少了 Java 所被詬病的復雜。就我的例子來(lái)說(shuō)在我的項目組中,新員工,只需要基本的 Java 和 SQL 知識,根本不用去從頭學(xué)習 Struts,MVC,他們可以有更多的時(shí)間為用戶(hù)開(kāi)發(fā)更多的功能,而不需要為工具,框架所困擾。 希望本文能起到拋磚引玉的作用,更多的國內開(kāi)發(fā)人員能融入的 Eclipse 的世界中來(lái)。
聯(lián)系客服