日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

擴(kuò)展 Eclipse 輔助和規(guī)范開(kāi)發(fā)流程

 duduwolf 2005-08-28
本如果市場(chǎng)上的開(kāi)發(fā)工具不能滿(mǎn)足您的需要,而自己開(kāi)發(fā) IDE 又不太現(xiàn)實(shí),那本文就是您所需要的,它介紹了如何擴(kuò)展 eclipse JDT 來(lái)輔助規(guī)范你的項(xiàng)目開(kāi)發(fā)流程和幫助約束你的代碼規(guī)范。

一.前言
你的小組的人員是否不按照你制訂的開(kāi)發(fā)流程和代碼規(guī)范來(lái)開(kāi)發(fā)? 你的小組的成員經(jīng)常變化,經(jīng)常要對(duì)新手講述什么是 Struts,什么是MVC? 已有的開(kāi)發(fā)工具的功能不能滿(mǎn)足你的需要?

如果你遇到上述問(wèn)題,請(qǐng)看看本文,雖然它不一定能解決好你的問(wèn)題,但至少它回給你一定的啟發(fā)的。本文從實(shí)際案例觸發(fā),深入淺出,圖文并茂向您描述了如何利用 Eclipse 平臺(tái)規(guī)范你小組的開(kāi)發(fā)流程,并且?guī)椭率挚焖偃谌腴_(kāi)發(fā)中。

閱讀本文,最好具有 J2EE 開(kāi)發(fā)、Eclipse 平臺(tái)和插件開(kāi)發(fā)、Eclipse 平臺(tái) JDT 插件擴(kuò)展和 Struts 相關(guān)知識(shí)。

二.實(shí)施整體描述
Eclipse 雖然是一個(gè)開(kāi)源的平臺(tái),但是現(xiàn)如今其功能功能已經(jīng)不輸給任何開(kāi)發(fā)工具,借助 eclipse 自帶的 JDT 和各種第三方的插件,Eclipse 成為最流行的開(kāi)發(fā)工具之一。


Eclipse 已經(jīng)擁有軟件開(kāi)發(fā),測(cè)試,文檔,協(xié)作等能力,它已經(jīng)能融入軟件開(kāi)發(fā)的整個(gè)流程中了。

讓我們從一個(gè)實(shí)際的案例例談起,看看我們是如何擴(kuò)展 Eclipse 來(lái)輔助和規(guī)范我們的開(kāi)發(fā)工作的。這是一個(gè)電力公司銷(xiāo)售分析系統(tǒng),里面有眾多的各種各樣的分析主題,例如要分析一個(gè)電力公司的銷(xiāo)售情況,用戶(hù)可以選擇時(shí)間范圍來(lái)分析公司的銷(xiāo)售情況,如下圖所示:


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


編寫(xiě)擴(kuò)展 JDT 的插件輔助開(kāi)發(fā)流程

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


核心是擴(kuò)展了 JDT 插件,把開(kāi)發(fā)的流程集中在一個(gè) Wizard 完成。

首先,讓我們看看實(shí)際的效果,然后再深入說(shuō)明和講解。

1.在 eclipse 平臺(tái)中單擊開(kāi)始->新建->J2EE 開(kāi)發(fā)包->開(kāi)發(fā)新的分析主題菜單。

如下圖所示:


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


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


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

大體的結(jié)構(gòu)如下,有兩個(gè) jsp,一個(gè) anction:


5.根據(jù)實(shí)際情況修改骨架,運(yùn)行,并且測(cè)試一下效果。

三.如何開(kāi)發(fā)
1.首先是如何開(kāi)發(fā) Eclipse 中的 Wizard 。

這里我不從頭介紹如何開(kāi)發(fā) Wizard,如果您對(duì)如何開(kāi)發(fā) Wizard 尚且一無(wú)所知,請(qǐng)參考 Eclipse.org 上來(lái)自 Doina Klinger 的文章: http://www./articles/Article-JFace%20Wizards/wizardArticle.html ,此文 Step by Stey 的介紹了如何創(chuàng)建 Eclipse 的 wizard,和各種細(xì)節(jié)知識(shí)。

首先,看看我們插件的 plugin.xml 文件:



<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>

     <extension
         point="org.eclipse.ui.newWizards">
      <category
 
            name="北京能博譯碼J2EE開(kāi)發(fā)包"
            id="net.sf.yangtze.pdpf"/>
      <wizard
            class="net.sf.yangtze.pdpf.wizards.NewSubjectWizard"
            icon="icons/sample.gif"
            category="net.sf.yangtze.pdpf"
            name="開(kāi)發(fā)新的分析主題"
            id="net.sf.yangtze.pdpf.wizards.NewSubjectWizard"/>
   </extension>

</plugin>

實(shí)現(xiàn)它的類(lèi) net.sf.yangtze.pdpf.wizards.NewSubjectWizard 繼承自 org.eclipse.jface.wizard.Wizard 類(lèi),它有幾個(gè)重要的方法:

addPage - 向 Wizard 添加頁(yè)面,就是那些可以通過(guò) next>,<back 瀏覽的頁(yè)面。

FinishPage - 當(dāng)用戶(hù)點(diǎn)擊 finish 的時(shí)候程序完成的工作。在我們的插件中就是完成自動(dòng)生成 jsp,Action 的工作,把這些代碼放在FinishPage 方法即可。

我們有兩個(gè) Page 一個(gè)用來(lái)輸入和測(cè)試 SQL 語(yǔ)句,一個(gè)用來(lái)定制 Action 和可以輸入的參數(shù)。

2.然后是如何從 JDT 擴(kuò)展。

這部分現(xiàn)成資料不多,所以要稍微探討一下。經(jīng)常使用 Eclipse 開(kāi)發(fā) java 的程序員應(yīng)該非常熟悉 JDT,實(shí)際上 Eclipse 平臺(tái)可以用來(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é)得很方便和習(xí)慣,所以我希望我的插件在創(chuàng)建 Action 的時(shí)候也能有類(lèi)似的功能,而我不想自己再重新造個(gè)輪子(而且這個(gè)工作可不輕松),所以我就得從 JDT 中擴(kuò)展,而不使用標(biāo)準(zhǔn)的 org.eclipse.jface.wizard.Wizard 類(lèi)。

在傳統(tǒng)的 wizard 中我們使用 org.eclipse.jface.wizard.Wizard 和 org.eclipse.jface.wizard.WizardPage 類(lèi),但如果你希望繼承 JDT 的功能必須對(duì)應(yīng)使用 org.eclipse.jdt.internal.ui.wizards.NewElementWizard 和 org.eclipse.jdt.ui.wizards.NewTypeWizardPage 類(lèi)。

NewElementWizard 也是繼承自 Wizard,它只是做了一些檢查是不是 Java 項(xiàng)目等工作,Eclipse 中新建類(lèi),和接口 Wizard 都是從這個(gè)類(lèi)基礎(chǔ)發(fā)展而來(lái)的。內(nèi)容豐富的是 org.eclipse.jdt.ui.wizards.NewTypeWizardPage 類(lèi),它包含了瀏覽項(xiàng)目,瀏覽超類(lèi),接口等功能,而且提供了豐富的方法來(lái)構(gòu)建你的 Java 類(lèi)型,例如添加方法,添加 import 等,更多內(nèi)容可以參考自帶的 API doc 文件,一幕了然。

可以看看我上面插件中的例子:



		public void createControl(Composite parent) {
        initializeDialogUnits(parent);
        Composite composite = new Composite(parent, 0);
        int nColumns = 4;
        GridLayout layout = new GridLayout();
        layout.numColumns = nColumns;
        composite.setLayout(layout);
	//上圖中的 source folder 控件
        createContainerControls(composite, nColumns);
	//Package
        createPackageControls(composite, nColumns); 
	//一個(gè)分割線(xiàn)
        createSeparator(composite, nColumns);
	
        createTypeNameControls(composite, nColumns);
        createModifierControls(composite, nColumns);
	//父類(lèi)的選擇控件
        createSuperClassControls(composite, nColumns);
        //接口選擇控件
        createSuperInterfacesControls(composite, nColumns);
        //
        createSeparator(composite, nColumns);
        //我們擴(kuò)展的控件
        creatStrutsControls(composite, nColumns);
        setSuperClass("org.apache.struts.action.Action", true);
        setControl(composite);
	}
	

總結(jié)
Eclipse 的強(qiáng)大在于它容許插件擴(kuò)展其它插件,利用 JDT 你完全可以開(kāi)發(fā)出一個(gè)符合自己要求的快速開(kāi)發(fā)工具,而并不需要非常多的代碼。有興趣的讀者可以參考看一下 Lomboz 項(xiàng)目,一個(gè)為 Eclipse 開(kāi)發(fā) J2EE 的插件,它的功能強(qiáng)大,但實(shí)際它的代碼卻并不多。

擴(kuò)展 Eclipse 完全可以構(gòu)建屬于你自己的快速開(kāi)發(fā)工具,它可以顯著的提高工作效率。而且任何一個(gè)新手都可以快速上手,你的知識(shí)被整個(gè)項(xiàng)目組成員共享,這減少了 Java 所被詬病的復(fù)雜。就我的例子來(lái)說(shuō)在我的項(xiàng)目組中,新員工,只需要基本的 Java 和 SQL 知識(shí),根本不用去從頭學(xué)習(xí) Struts,MVC,他們可以有更多的時(shí)間為用戶(hù)開(kāi)發(fā)更多的功能,而不需要為工具,框架所困擾。 希望本文能起到拋磚引玉的作用,更多的國(guó)內(nèi)開(kāi)發(fā)人員能融入的 Eclipse 的世界中來(lái)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多