2011-04-19 93 views
6

這裏有幾個問題:AspectJ編譯器(AJC)VS加載時編織

  • AJC是否改變所有它編譯(甚至非方面的)類?如果我只編寫方面類ant,然後將它們放在與普通類路徑相同的類路徑中,該怎麼辦?

  • ajc編譯的項目執行得比使用加載時編織的項目更快嗎?

  • 如果我需要寫一個庫,這並不使用AspectJ跟蹤,然後我想這個庫與任何項目工作?在這種情況下,加載時織入是唯一的選擇嗎?

回答

10
  1. AJC(編譯時間)纔會改變由方面受影響的類。請記住,ajc是Java編譯器的擴展(準確地說,它基於Eclipse 3.3的JDT編譯器)。所以,它將像普通的Java編譯器一樣編譯所有的Java類。它會另外編織​​受某個方面影響的所有類。如果你將你的方面與你的非方面分開編譯,那麼就不會有編譯時編織的問題,你的方面也不會有任何影響。但是,您可以將您的方面放在非方面編譯的方面路徑上(如果您的非方面是由ajc編譯的話)。這將允許非方面由您方面來編織。
  2. CTW下的啓動時間比LTW好很多,但是在加載所有類後,速度差應該可以忽略不計。原因是在LTW下,所有的類都是在加載時編織的。這意味着類加載需要額外的編織步驟,這在CTW下是不必要的。
  3. 號正如上面提到的,你可以方面添加到第二個項目的方面路徑,那麼他們將在編譯過程中被編織。

更多看點路徑:

http://www.eclipse.org/aspectj/doc/released/devguide/ajc-ref.html

+0

安德魯,非常感謝! – weekens 2011-04-20 06:32:16

相關問題