簡體   English   中英

Java字節碼檢測的替代方案

[英]Alternatives to Java bytecode instrumentation

我正在開始一個項目,必須為了覆蓋目的(變量的定義 - 使用等)來檢測java應用程序。 它必須向應用程序添加跟蹤語句和一些邏輯,並可能刪除語句。

我已經搜索了儀器Java代碼的方法,我總是找到關於字節碼檢測的方法。

我的問題是:這是測試Java應用程序的唯一方法嗎? 有沒有其他方法可以做到這一點? 字節碼檢測相對於其他檢測有什么優勢?

我可能會使用字節碼解決方案,但我想知道其他方法(如果有的話)有什么問題需要精確決定。

謝謝!

接近改變字節碼的另一種方法是使用AOP(面向方面​​編程)。 主庫是AspectJ ,它主要定義了該區域。

可能有趣的第三個選項(因為你剛開始使用該程序)是使用Spring 這意味着你將需要學習一些關於IOC(控制反轉)的內容,但它基本上意味着不是自己創建你的對象,而是讓spring為你做,它有它的優點,因為當spring充滿創造時它可以在創建過程中添加各種各樣的東西,而不必在aspectj中自己聲明它。

就復雜性而言,我可能會評價它:

  • 春天(最簡單)
  • AspectJ的
  • 字節碼檢測(最難)

但談到能力(力量)時,恰恰相反。 例如做一些像減去代碼的東西只能使用最后一個(我認為)

你一定要看看AspectJ

根據你的描述,你將能夠用它做你想做的事。

自己做字節碼檢測是絕對可能的,但它要復雜得多。

我想你應該先檢查一下AsepctJ,然后自己回去做字節碼檢測。

請參閱我使用程序轉換引擎構建覆蓋率工具的論文。 這種方法的優點是它可以用於任意編程語言。 此外,它以程序員看到的方式看待源代碼,而不是編譯的字節代碼(因為泛型變得更復雜,並且變得更精細的字節代碼,通過檢查字節代碼更難理解源代碼)。

值得注意的是,程序轉換概括了面向方面的編程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM