首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

AOP@Work:新版 AJDT 1.2/1.3 全面整合 Eclipse,讓 AspectJ 開發更順手

     編輯:Java 相關知識

AspectJ Development Tools (AJDT) 近期經歷重大變革,與 Eclipse 平台實現深度整合。本文介紹適用於 Eclipse 3.0 的 AJDT 1.2(6 月釋出)與適用於 Eclipse 3.1 的 AJDT 1.3(9 月穩定版,現可下載早期構建),幫助新舊開發者快速掌握新功能與遷移要點。

從零開始:建立 AspectJ 專案

在 Eclipse 中建立 AspectJ 專案與 Java 專案幾乎相同:File > New > Project > AspectJ Project。本質上,AspectJ 專案就是擁有 AspectJ 性質的 Java 專案,編譯器由 AspectJ 編譯器(JDT 編譯器擴展)取代 JDT Java 編譯器,完全相容 Java 代碼。

New Aspect 精靈與 AspectJ 編輯器

透過 File > New > Other > AspectJ > Aspect 建立方面,檔案副檔名為 .aj。AspectJ 編輯器提供熟悉的體驗:大綱視圖即時更新、語法錯誤紅線標示、組織匯入、重疊顯示、重新格式化、內容輔助(Ctrl+Space)等。雖然切入點名稱的內容輔助與快速修復尚待未來版本完善,但核心編輯體驗已極為成熟。

可視化橫切結構:Cross References 與標記

AJDT 提供兩大核心機制呈現橫切關係:

Cross References 視圖

與 Outline 視圖互補:Outline 顯示當前文件結構,Cross References 顯示當前元素的橫切關係。建議佈局將 Cross References 放在 Outline 下方。點擊編輯器中的方法,視圖即顯示該方法被哪些通知影響;點擊通知可直接導航至源碼。支援「不連結編輯器選擇」與「顯示整個文件橫切資訊」選項。

類別的 Outline 與 Cross References 視圖 方面的 Outline 與 Cross References 視圖

快速視圖與編輯器標記

Ctrl+O 開啟 Quick Outline,Ctrl+Alt+X 開啟 Quick Cross References,節省螢幕空間。編輯器左側標記圖示指示通知類型(before/after/around)與是否含運行時測試(問號變體)。右鍵標記可導航至通知源碼,通知端亦有對稱的 Advises 選單,實現雙向導航。圖像裝飾器(橙色箭頭)在 Outline、Cross References、Members 視圖中統一顯示受影響元素。

Quick Cross References 視圖 通知的標記與上下文選單

轉換現有 Java 專案與多專案管理

右鍵專案選擇 Convert to AspectJ Project 即可無縫轉換,過程可逆。AspectJ 編譯分兩階段:編譯源碼生成 .class、編織方面應用至類別。為控制編織範圍,專案屬性新增兩項設定:

  • InPath:指定將被編織的類別/JAR/目錄(如其他專案的 bin 目錄)
  • AspectPath:指定提供方面的類別/JAR/目錄,如同存在於專案源碼中

跨專案使用方面

在消費者專案的 AspectJ Aspect Path 加入提供者專案的 bin 目錄。編輯器標記與 Cross References 仍顯示關係,但來源顯示為二進制方面(無法導航源碼)。運行時需將 aspectpath 加入類路徑,AJDT 提供 Run > AspectJ/Java Application 啟動配置自動處理。

二進制編織純 Java 專案

建立 AspectJ 專案,在 InPath 引用 Java 專案的 JAR 或類別目錄。啟用編譯器選項 Output weaving info messages to problems view,Problems 視圖將顯示編織資訊。可用 Output JAR 選項直接輸出編織後的 JAR。

開發可重用方面庫

將抽象方面(含抽象切入點)隔離為獨立專案形成庫。消費者專案在 Java Build Path 加入庫專案,具體切入點在本地實作。編輯器標記顯示通知來源為抽象超類,未來版本將支援「使用切入點」導航至具體實作。

支援 Eclipse 插件專案

插件專案同樣可轉換為 AspectJ 專案,系統提示加入 org.aspectj.runtime 依賴。PDE 的 Create Ant Build File with AspectJ Support 生成使用 iajc 任務的 build.xml。

大型專案利器:Visualiser 與橫切比較

專案級可視化

切換至 Aspect Visualization 視圖,以柱狀圖呈現專案橫切分佈:每欄代表一源文件,高度對應行數,色帶標示通知作用位置,顏色對應方面。支援縮放、過濾受影響欄、切換類別/套件視圖、自訂顏色。記憶體優化確保大型專案可用。

Visualiser 視圖

橫切比較:追蹤重構變化

新功能 Crosscutting Comparison(AJDT 1.2.1/1.3 引入)允許對專案橫切關係建立快照(.ajmap),隨後與新版本比較。右鍵專案選擇 AspectJ Tools > Save Crosscutting Map 建立快照,再選擇一或兩個圖文件比較。結果視圖顯示新增/刪除的關係,支援雙擊導航、過濾、排序。若與當前建構比較,每次建構自動刷新,重構時極具價值。

橫切比較視圖

記憶體優化建議

  • 增加 Eclipse JVM 記憶體:-vmargs -Xmx512m
  • 關閉非必要專案
  • 部分代碼用 Java 編譯器編譯,再以二進制編織/載入時編織應用方面
  • 最後手段:禁用橫切結構模型建立(將失去標記、Cross References、Visualiser)

AspectJ 5 新特性支援

多數 AspectJ 5 功能需 Eclipse 3.1(Java 5 支援),故僅 AJDT 1.3 支援。專案設定 Java > Compiler > Compiler compliance level = 5.0 並確保 JRE 為 Java 5。

  • @this 等新切入點指示器:編輯器語法高亮支援
  • pertypewithin 實例化模型:New Aspect 精靈新增核取方塊
  • 宣告註解:declare @method 等新橫切關係 annotates/annotated by 顯示於 Cross References 與標記選單
  • @AspectJ 風格:純 Java 5 註解風格,AJDT 同樣呈現橫切結構

AspectJ 5 宣告註解示例 @AspectJ 開發風格示例

從 AJDT 1.1 遷移指南

升級後首次啟動 Eclipse 會啟動遷移精靈:

  1. 源檔副檔名轉換(方面/含切入點的類別 → .aj),可排除專案
  2. Builder 內部變更,除非需相容模式否則採用預設
  3. 插件專案依賴從 org.aspectj.ajde 改為 org.aspectj.runtime
  4. 清除 AJDT 1.1 全域工作空間設定
  5. 引入新 Cross References 視圖

遷移精靈

AJDT 團隊以身試法:用 AJDT 開發 AJDT

團隊以 AspectJ/AJDT 開發 AJDT(約 20 萬行代碼,多個啟用 AspectJ 的插件),實戰驗證並修復大量問題。方面用於:異常捕獲與錯誤日誌、效能監控視圖、編碼標準強制、屬性頁變更追蹤、ISafeRunnable 包裝調用。未來方面將成為新功能設計的核心部分。

展望未來

AJDT 1.2/1.3 實現了編輯器體驗重構(方面用 AspectJ 編輯器,類別用標準 Java 編輯器)、標準 Outline 增強支援方面、無縫整合消除全域設定修改、導出 JAR/轉換副檔名/建構檔案新支援、遞增編譯預設開啟、Visualiser 處理大型專案更靈活、文檔全面更新。未來方向:Eclipse Java 工具擴展性增強、面向切面重構、方面庫支援強化、解決「資訊過載」(過量橫切標記)。歡迎透過 Bugzilla、新聞組、郵件列表參與貢獻。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved