程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 擴展Eclipse輔助和規范開發流程

擴展Eclipse輔助和規范開發流程

編輯:關於JAVA

一.前言

你的小組的人員是否不按照你制訂的開發流程和代碼規范來開發? 你的小組的成員經 常變化,經常要對新手講述什麼是 Struts,什麼是MVC? 已有的開發工具的功能不能滿足 你的需要?

如果你遇到上述問題,請看看本文,雖然它不一定能解決好你的問題,但至少它回給 你一定的啟發的。本文從實際案例觸發,深入淺出,圖文並茂向您描述了如何利用 Eclipse 平台規范你小組的開發流程,並且幫助新手快速融入開發中。

閱讀本文,最好具有 J2EE 開發、Eclipse 平台和插件開發、Eclipse 平台 JDT 插件 擴展和 Struts 相關知識。

二.實施整體描述

Eclipse 雖然是一個開源的平台,但是現如今其功能功能已經不輸給任何開發工具, 借助 eclipse 自帶的 JDT 和各種第三方的插件,Eclipse 成為最流行的開發工具之一。

Eclipse 已經擁有軟件開發,測試,文檔,協作等能力,它已經能融入軟件開發的整 個流程中了。

讓我們從一個實際的案例例談起,看看我們是如何擴展 Eclipse 來輔助和規范我們的 開發工作的。這是一個電力公司銷售分析系統,裡面有眾多的各種各樣的分析主題,例如 要分析一個電力公司的銷售情況,用戶可以選擇時間范圍來分析公司的銷售情況,如下圖 所示:

我們的小組在開發一個主題的流程大致是這樣的:

編寫擴展 JDT 的插件輔助開發流程

我們的開發流程從本質上來說,還是和上面一樣,但是由於我們使用了 wizards 和擴 展了 JDT 來輔助我們完成工作,那麼實際開發者的開發流程會簡化了,如下:

核心是擴展了 JDT 插件,把開發的流程集中在一個 Wizard 完成。

首先,讓我們看看實際的效果,然後再深入說明和講解。

1.在 eclipse 平台中單擊開始->新建->J2EE 開發包->開發新的分析主題菜 單。

如下圖所示:

2.首先顯示的是生成 Action 類的界面,它擴展了 JDT 插件的功能來允許程序員的輸 入客戶容許的查詢條件,而且它已經把父類設定為了可以看到父類 org.apache.struts.action.Action,這是 Struts 的要求.這再後面是用來自動生成 FormBean,和 Jsp 表單用的。

3.單 擊next,在這裡輸入SQL,並且可以直接測試。參數用?代替。小組成員可以直接在這裡直 接編寫,測試SQL,再最後會自動生成Java代碼。

4.如 果沒有錯誤,單擊 finish 按鈕。會自動生成 Jsp,Action 的骨架和基本功能代碼。自 動生成的 Jsp 表單,自動生成的 Action 和自動生成的現實查詢結果的 Jsp。由於這裡 各個項目完全不同,建立都使用模板引擎這樣隨時修改模板就不用修改為 Java 代碼了。

大體的結構如下,有兩個 jsp,一個 anction:

5.根據實際情況修改骨架,運行,並且測試一下效果。

三.如何開發

1.首先是如何開發 Eclipse 中的 Wizard 。

這裡我不從頭介紹如何開發 Wizard,如果您對如何開發 Wizard 尚且一無所知,請參考 Eclipse.org 上來自 Doina Klinger 的文章: http://www.eclipse.org/articles/Article-JFace% 20Wizards/wizardArticle.html ,此文 Step by Stey 的介紹了如何創建 Eclipse 的 wizard,和各種細節知識。

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

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
    <extension
      point="org.eclipse.ui.newWizards">
    <category

       name="北京能博譯碼J2EE開發包"
       id="net.sf.yangtze.pdpf"/>
    <wizard
       class="net.sf.yangtze.pdpf.wizards.NewSubjectWizard"
       icon="icons/sample.gif"
       category="net.sf.yangtze.pdpf"
       name="開發新的分析主題"
       id="net.sf.yangtze.pdpf.wizards.NewSubjectWizard"/>
   </extension>
</plugin>

實現它的類 net.sf.yangtze.pdpf.wizards.NewSubjectWizard 繼承自 org.eclipse.jface.wizard.Wizard 類,它有幾個重要的方法:

addPage - 向 Wizard 添加頁面,就是那些可以通過 next>,<back 浏覽的頁面 。

FinishPage - 當用戶點擊 finish 的時候程序完成的工作。在我們的插件中就是完成 自動生成 jsp,Action 的工作,把這些代碼放在FinishPage 方法即可。

我們有兩個 Page 一個用來輸入和測試 SQL 語句,一個用來定制 Action 和可以輸入 的參數。

2.然後是如何從 JDT 擴展。

這部分現成資料不多,所以要稍微探討一下。經常使用 Eclipse 開發 java 的程序員 應該非常熟悉 JDT,實際上 Eclipse 平台可以用來開發任何語言的,它並不是一個 Java IDE,Java IDE 的功能是通過 JDT 插件完成的,在 Eclipse 的世界中一切都是插件。

在開發 Java 的時候,有許多的 Wizard 來輔助我們完成編碼工作,如新建類,接口 ,如下圖:

而且它裡面有很多輔助工作,如你點擊超類的時候,有一個幫助你輸入超類名稱的窗 口會彈出來,在裡面你並不需要輸入類的完整的名稱,它會自動提示。接口和包都有類似 的輔助輸入的功能。

我使用這些功能覺得很方便和習慣,所以我希望我的插件在創建 Action 的時候也能 有類似的功能,而我不想自己再重新造個輪子(而且這個工作可不輕松),所以我就得從 JDT 中擴展,而不使用標准的 org.eclipse.jface.wizard.Wizard 類。

在傳統的 wizard 中我們使用 org.eclipse.jface.wizard.Wizard 和 org.eclipse.jface.wizard.WizardPage 類,但如果你希望繼承 JDT 的功能必須對應使 用 org.eclipse.jdt.internal.ui.wizards.NewElementWizard 和 org.eclipse.jdt.ui.wizards.NewTypeWizardPage 類。

NewElementWizard 也是繼承自 Wizard,它只是做了一些檢查是不是 Java 項目等工 作,Eclipse 中新建類,和接口 Wizard 都是從這個類基礎發展而來的。內容豐富的是 org.eclipse.jdt.ui.wizards.NewTypeWizardPage 類,它包含了浏覽項目,浏覽超類, 接口等功能,而且提供了豐富的方法來構建你的 Java 類型,例如添加方法,添加 import 等,更多內容可以參考自帶的 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);
  //一個分割線
     createSeparator(composite, nColumns);

     createTypeNameControls(composite, nColumns);
     createModifierControls(composite, nColumns);
  //父類的選擇控件
     createSuperClassControls(composite, nColumns);
     //接口選擇控件
     createSuperInterfacesControls(composite, nColumns);
     //
     createSeparator(composite, nColumns);
     //我們擴展的控件
     creatStrutsControls(composite, nColumns);
     setSuperClass("org.apache.struts.action.Action", true);
     setControl(composite);
  }

總結

Eclipse 的強大在於它容許插件擴展其它插件,利用 JDT 你完全可以開發出一個符合 自己要求的快速開發工具,而並不需要非常多的代碼。有興趣的讀者可以參考看一下 Lomboz 項目,一個為 Eclipse 開發 J2EE 的插件,它的功能強大,但實際它的代碼卻並 不多。

擴展 Eclipse 完全可以構建屬於你自己的快速開發工具,它可以顯著的提高工作效率 。而且任何一個新手都可以快速上手,你的知識被整個項目組成員共享,這減少了 Java 所被诟病的復雜。就我的例子來說在我的項目組中,新員工,只需要基本的 Java 和 SQL 知識,根本不用去從頭學習 Struts,MVC,他們可以有更多的時間為用戶開發更多的功能 ,而不需要為工具,框架所困擾。希望本文能起到拋磚引玉的作用,更多的國內開發人員 能融入的 Eclipse 的世界中來。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved