You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

changes.html 80KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html> <head>
  3. <meta http-equiv="Content-Language" content="en-us">
  4. <title>Changes in AspectJ</title>
  5. <STYLE TYPE="text/css">
  6. <!--
  7. /* FOR THE SDA PAGE */
  8. /*
  9. BODY {margin-top: 15px; margin-left: 15px; margin-right: 15px;}
  10. */
  11. A:link {
  12. color:#4756AC;
  13. }
  14. A:visited {
  15. color:#60657B;
  16. }
  17. A:hover {
  18. color:red
  19. }
  20. INPUT {font:12px "Courier New", sans-serif;}
  21. H2 {
  22. font:18px/18px Verdana, Arial, Helvetica, sans-serif;
  23. color:black;
  24. font-weight:bold;
  25. margin-left: 10px;
  26. line-height:110%;
  27. }
  28. H3 {
  29. font:17px/17px Verdana, Arial, Helvetica, sans-serif;
  30. color:black;
  31. //font-weight:bold;
  32. margin-left: 10px;
  33. line-height:110%;
  34. }
  35. H4 {
  36. font:15px/16px Verdana, Arial, Helvetica, sans-serif;
  37. color:black;
  38. font-weight:bold;
  39. margin-left: 10px;
  40. line-height:140%;
  41. }
  42. P {
  43. font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  44. margin-right: 10px;
  45. margin-left: 10px;
  46. line-height:130%;
  47. }
  48. .paragraph {
  49. font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  50. margin-right: 10px;
  51. margin-left: 10px;
  52. line-height:130%;
  53. }
  54. .smallParagraph {
  55. font:11px/11px Verdana, Arial, Helvetica, sans-serif;
  56. margin-right: 10px;
  57. margin-left: 10px;
  58. line-height:130%;
  59. }
  60. LI {
  61. font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  62. text-align:justify;
  63. margin-right: 10px;
  64. margin-left: 15px;
  65. line-height:120%;
  66. }
  67. /*
  68. UL {
  69. font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  70. text-align:justify;
  71. margin-right: 10px;
  72. margin-left: 15px;
  73. line-height:120%;
  74. }*/
  75. DL {
  76. font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  77. text-align:justify;
  78. margin-right: 10px;
  79. margin-left: 15px;
  80. line-height:120%;
  81. }
  82. B { font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  83. font-weight:bold;
  84. line-height:140%;
  85. }
  86. .footer {
  87. font:10px/10px Verdana, Arial, Helvetica, sans-serif;
  88. color:#888888;
  89. text-align:left
  90. }
  91. .figureTitle {
  92. font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  93. text-align:justify;
  94. text-align:center
  95. }
  96. .copyrightNotice {
  97. font:10px/10px Verdana, Arial, Helvetica, sans-serif;
  98. color:#999999;
  99. line-height:110%;
  100. }
  101. .smallHeading {
  102. font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  103. font-weight:bold;
  104. line-height:110%;
  105. }
  106. .tinyHeading {
  107. font:11px/11px Verdana, Arial, Helvetica, sans-serif;
  108. font-weight:bold;
  109. line-height:120%;
  110. }
  111. .newsText {
  112. font:11px/11px Verdana, Arial, Helvetica, sans-serif;
  113. line-height:130%;
  114. }
  115. .smallParagraph {
  116. font:11px/11px Verdana, Arial, Helvetica, sans-serif;
  117. line-height:130%;
  118. }
  119. .fancyHeading {
  120. font:20px/20px Chantilly, Arial, Helvetica, sans-serif;
  121. margin-right: 10px;
  122. color:#6f7a92;
  123. margin-left: 10px;
  124. line-height:130%;
  125. }
  126. -->
  127. </STYLE>
  128. </head>
  129. <body>
  130. <div align=right><small>
  131. &copy; Copyright 1998-2002 Palo Alto Research Center Incorporated
  132. 2003-2008 Contributors.
  133. All rights reserved.
  134. </small></div>
  135. <h2>Changes in AspectJ</h2>
  136. <ul>
  137. <li> <a href="#1.6.0">1.6.0</a> (released 2008-04)</li>
  138. <li> <a href="#1.5.4">1.5.4</a> (released 2007-12)</li>
  139. <li> <a href="#1.5.3">1.5.3</a> (released 2006-11)</li>
  140. <li> <a href="#1.5.2">1.5.2</a> (released 2006-06)</li>
  141. <li> <a href="#1.5.1">1.5.1</a> (released 2006-04)</li>
  142. <li> <a href="#1.5.0">1.5.0</a> (released 2005-12)</li>
  143. <li> <a href="#1.2.1">1.2.1</a> (released 2004-10)</li>
  144. <li> <a href="#1.2">1.2</a> (released 2004-05)
  145. </li>
  146. <li> <a href="#1.1.1">1.1.1</a> (released 2003-09)
  147. </li>
  148. <li> 1.1.0 (released 2003-06-06)
  149. See <a href="README-11.html">README-11.html</a>
  150. </li>
  151. <li><a href="#1.0.6">1.0.6</a> (released 2002-07-24)
  152. <ul>
  153. <li><a href="#1.0.6compiler">Compiler</a></li>
  154. <li><a href="#1.0.6ajde">AJDE</a></li>
  155. <li><a href="#1.0.6ajdoc">Ajdoc</a></li>
  156. </ul>
  157. </li>
  158. <li><a href="#1.0.5">1.0.5</a> (released 2002-06-27)
  159. </li>
  160. <li><a href="#1.0.4">1.0.4</a> (released 2002-04-17)
  161. </li>
  162. <li><a href="#1.0.3">1.0.3</a> (released 2002-02-08)
  163. </li>
  164. <li><a href="#1.0.2">1.0.2</a> (released 2002-02-06)
  165. </li>
  166. <li><a href="#1.0.1">1.0.1</a> (released 2001-12-18)
  167. </li>
  168. <li><a href="#1.0.0">1.0.0</a> (released 2001-11-30)
  169. </li>
  170. <li><a href="#1.0rc3">1.0rc3</a> (released 2001-11-14)
  171. </li>
  172. <li><a href="#1.0rc2">1.0rc2</a> (released 2001-10-12)
  173. </li>
  174. <li><a href="#1.0rc1">1.0rc1</a> (released 2001-10-5)
  175. </li>
  176. <li><a href="#1.0beta1">1.0beta1</a> (released 2001-08-29)
  177. </li>
  178. <li><a href="#1.0alpha1">1.0alpha1</a> (released 2001-08-09)
  179. </li>
  180. <li><a href="porting.html">Porting and Transition</a></li>
  181. </ul>
  182. <hr />
  183. <h2><a name="1.6.0">1.6.0</a></h2>
  184. <p>This release rebases AspectJ on the Eclipse Compiler version 785_R33X - making it Java6 compliant.</p>
  185. <p>A full list of bugs fixed and enhancements implemented can be found in
  186. <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=AspectJ&target_milestone=1.6.0+M1&target_milestone=1.6.0+M2&target_milestone=1.6.0+RC1&target_milestone=1.6.0&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">Bugzilla</a>.
  187. </p>
  188. <h2><a name="1.5.4">1.5.4</a></h2>
  189. <p>This release contains around 40 bug fixes and enhancements since the 1.5.3 release.</p>
  190. <p>A full list of bugs fixed and enhancements implemented can be found in
  191. <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&product=AspectJ&target_milestone=1.5.4&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED"/>
  192. Bugzilla</a>
  193. </p>
  194. <h2><a name="1.5.3">1.5.3</a></h2>
  195. <p>This release contains around 80 bug fixes and enhancements since the 1.5.2 release.</p>
  196. <p>A full list of bugs fixed and enhancements implemented can be found in
  197. <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&product=AspectJ&target_milestone=1.5.3&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED"/>
  198. Bugzilla</a>
  199. </p>
  200. <h2><a name="1.5.2">1.5.2</a></h2>
  201. <p>This release contains around 60 bug fixes and enhancements since the 1.5.1 release.</p>
  202. <p>A full list of bugs fixed and enhancements implemented can be found in
  203. <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&product=AspectJ&target_milestone=1.5.2&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED"/>
  204. Bugzilla</a>
  205. </p>
  206. <h2><a name="1.5.1">1.5.1</a></h2>
  207. <p>This release contains over 70 bug fixes and enhancements since the 1.5.0 release.</p>
  208. <p>A full list of bugs fixed in AspectJ 5 can be found in
  209. <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&product=AspectJ&target_milestone=1.5.1&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED"/>
  210. Bugzilla</a>
  211. </p>
  212. <h2><a name="1.5.0">1.5.0</a></h2>
  213. <p>This release contains nearly 400 bug fixes and enhancements since the 1.2.1 release.
  214. Major updates to the language are documented in the
  215. <a href="adk15notebook/index.html">AspectJ 5 Developer's Notebook</a>. There are
  216. also a number of enhancements to accompanying tools documented in the
  217. <a href="devguide/index.html">Developer's Guide</a>
  218. </p>
  219. <p>A full list of bugs fixed in AspectJ 5 can be found in
  220. <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&product=AspectJ&resolution=FIXED&chfieldfrom=2004-11-06&chfieldto=2005-12-20">bugzilla</a>.
  221. </p>
  222. <h2><a name="1.2.1">1.2.1</a></h2>
  223. <p>All known P1 and P2 bugs have been fixed in this release. The
  224. <a href="https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&target_milestone=1.2.1&bug_status=RESOLVED&resolution=FIXED">full list of fixes and
  225. enhancements</a> can be found on bugzilla.
  226. Some of the more significant bug fixes and enhancements include:
  227. <ul>
  228. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=53981">53981</a>
  229. Any occurence of proceed(..) within the body of around advice is treated as the
  230. special proceed form (even if the aspect defines a method named proceed) unless
  231. a target other than the aspect instance is specified as the recipient of the
  232. call.
  233. </li>
  234. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=48990">48990</a>
  235. Optimisations added for the special cases of if(true) and if(false) in pointcut
  236. expressions.
  237. </li>
  238. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=69319">69319</a>
  239. The Eclipse JDT compiler inside AspectJ has been upgraded to the Eclipse 3.0 release
  240. version.
  241. </li>
  242. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=61572">61572</a>
  243. AspectJ 1.2.1 correctly detects an attempt to access instance variables of the
  244. declaring aspect of an inter-type declared method from within the body of that
  245. method.
  246. </li>
  247. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=65319">65319</a>
  248. Error message now correctly produced when attempting to bind a pointcut formal
  249. in both a this() and a target() pointcut sub-expression.
  250. </li>
  251. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=70619">70619</a>
  252. Conflicting declare precedence statements are now handled gracefully.
  253. </li>
  254. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=42573">42573</a>
  255. Relative paths specified in .lst files are now resolved relative to the lst file
  256. location.
  257. </li>
  258. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=57666">57666</a>
  259. Resource copying from jar files correctly handles duplicate manifests.
  260. </li>
  261. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=61768">61768</a>
  262. Static inner types of an aspect can now be referenced within the body of inter-type
  263. declared methods in that aspect.
  264. </li>
  265. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=62642">62642</a>
  266. after-throwing advice on a static initialization join point no longer swallows
  267. ExceptionInInitializer errors.
  268. </li>
  269. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=67578">67578</a>
  270. AspectJ 1.2.1 correctly handles privileged access to members defined in a different
  271. package to the privileged aspect.
  272. </li>
  273. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=67592">67592</a>
  274. The Object[] given in response to a getArgs() call on a JoinPoint object is now
  275. a value copy.
  276. </li>
  277. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=68991">68991</a>
  278. Initialisers of inter-type declared fields now have field-set join points.
  279. </li>
  280. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=69459">69459</a>
  281. A static inter-type method declaration is not allowed to hide an instance method.
  282. </li>
  283. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=70794">70794</a>
  284. An inter-type declaration of an abstract method on a target type which is an interface
  285. must be declared as public.
  286. </li>
  287. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=71372">71372</a>
  288. Calls can be made to private static methods of enclosing types from the body of
  289. around advice in an inner aspect.
  290. </li>
  291. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=71377">71377</a>
  292. Join points are now correctly detected for calls to private methods and set/get of
  293. private fields within the body of around advice.
  294. </li>
  295. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=71723">71723</a>
  296. A non-privileged inter-type declared method cannot call protected methods defined in
  297. parent classes of the target type.
  298. </li>
  299. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=74238">74238</a>
  300. Any privileged calls made by the AspectJ runtime library are now correctly
  301. wrapped in doPrivileged blocks, with fall-back implementations, allowing
  302. usage in restricted environments.
  303. </li>
  304. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=74245">74245</a>
  305. Specifying the -proceedOnError flag will now cause the compiler to attempt
  306. weaving even in the face of errors.
  307. </li>
  308. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=76030">76030</a>
  309. Runtime optimisations for cflow (in the case where there are no arguments bound in
  310. the cflow pointcut) have been implemented. This can dramatically speed-up some programs
  311. making heavy use of cflow. Thanks to the abc compiler team for detecting this performance
  312. related bug and for piloting the fix.
  313. </li>
  314. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54421">54421</a>
  315. String concatentation (using "+") is now allowed for the message associated with
  316. a declare error or warning statement.
  317. </li>
  318. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=69011">69011</a>
  319. ajdoc now correctly handles types in the default package.
  320. </li>
  321. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=36747">36747</a>
  322. The 1.2.1 compiler supports an additional option, -showWeaveInfo, which will
  323. produce informational messages concerning the activity of the weaver. For example:
  324. </br>
  325. <pre>
  326. Type 'tjp.Demo' (Demo.java:30) advised by around advice from 'tjp.GetInfo'
  327. (GetInfo.java:26) [RuntimeTest=true]
  328. </pre>
  329. </li>
  330. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=44191">44191</a>
  331. AspectJ 1.2.1 improves the error messages issued in many of the infamous "can't find type"
  332. scenarios.
  333. </li>
  334. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=46298">46298</a>
  335. The code generated by ajc is now more easily digested by many decompilers (but you
  336. wouldn't want to do that anyway would you?? ;) ).
  337. </li>
  338. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=49743">49743</a>
  339. Performance optimisations in the AspectJ runtime library when using getSignature() and
  340. toString().
  341. </li>
  342. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=61374">61374</a>
  343. AspectJ now includes its own version of BCEL under the org.aspectj namespace which eliminates
  344. unwanted conflicts with BCEL versions inside JDKs or on classpaths in general.
  345. </li>
  346. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=68494">68494</a>
  347. ajdoc now supports ".aj" files.
  348. </li>
  349. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=72154">72154</a>
  350. The AspectJ 1.2.1 compiler includes the ability to dump information about the current state of the
  351. compiler on failure. By default this only happens on an abort, but it can also be forced to
  352. dump on error by specifying the property: org.aspectj.weaver.Dump.condition=error
  353. </li>
  354. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=37020">37020</a>
  355. The line number locations for method execution and static initialization join points now give
  356. the first line of the method declaration (rather than the line number of the first line of code in
  357. the method body) when the source code is compiled by ajc.
  358. </li>
  359. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=73369">73369</a>
  360. A new jar, aspectjweaver.jar is included in the lib directory, which contains the subset
  361. of aspectjtools.jar needed for weaving. The "aj" script is also moved into the bin directory.
  362. </ul>
  363. <h2><a name="1.2">1.2</a></h2>
  364. <p>All known P1 and P2 bugs have been fixed in this release. The
  365. <a href="https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&target_milestone=1.2">full list of fixes and
  366. enhancements</a> can be found on bugzilla.
  367. Some of the more significant bug fixes and enhancements include:
  368. <ul>
  369. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=46347">46347</a>
  370. The ajc compiler now can read .class files from directories as well as
  371. zip files for bytecode weaving, via the new -inpath option.
  372. </li>
  373. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=48080">48080</a>
  374. Error and warning messages emitted as a result of a declare error or
  375. declare warning statement now include context information that indicates
  376. the matched join point.
  377. </li>
  378. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54819">54819</a>
  379. Error and warning messages coming from the weaving phase of compilation now
  380. show source context wherever it is available, and also indicate as the source
  381. location of the error either the class file or jar file from which the binary
  382. source unit came.
  383. </li>
  384. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=36430">36430</a>
  385. A new -Xreweavable option has been added which allows class files to be woven
  386. more than once.
  387. </li>
  388. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=49250">49250</a>
  389. SoftException now supports getCause().
  390. </li>
  391. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=51320">51320</a>
  392. AspectJ 1.2 now gives a compilation error if one of the non-statically determinable
  393. pointcut forms is used in a declare statement.
  394. </li>
  395. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=53012">53012</a>
  396. Declaring precedence on a class type (rather than an aspect type) is now an
  397. error unless subtypes are included.
  398. </li>
  399. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=36069">36069</a>
  400. The source information for inlined advice is now correct (using JSR 45).
  401. </li>
  402. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=34206">34206</a>
  403. (See also <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=44587">44587</a>).
  404. Errors occuring during static initialisation of an aspect are now handled much more gracefully.
  405. </li>
  406. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41952">41952</a>
  407. A new Xlint warning warns users specifying declaring type patterns in
  408. call pointcut designators if the pointcut does not match at places they
  409. may expect it to.
  410. </li>
  411. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=42574">42574</a>
  412. -extdirs opion now recognises .zip files as well as .jar.
  413. </li>
  414. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=48091">48091</a>
  415. New option -XlazyTjp defers creation of JoinPoint objects until just before
  416. calling the advice body that requires them. This allows the cost of creating
  417. JoinPoint objects to be avoided using an if() pointcut test that returns
  418. false when the advice body is not required to be executed. Speed-ups of 10-100X are
  419. obtained via this optimisation (as compared to putting the test inside the advice
  420. body).
  421. </li>
  422. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=45441">45441</a>
  423. IncompatibleClassChangeError at runtime when compiling with the -1.4 option.
  424. </li>
  425. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54625">54625</a>
  426. Incremental compilation did not support the -outjar option, but silently
  427. failed if it was specified. AspectJ 1.2 always performs a full build when
  428. the -outjar option is present.
  429. </li>
  430. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54965">54965</a>
  431. Incremental compilation under AspectJ 1.2 is approximately twice as fast as
  432. under AspectJ 1.1.1.
  433. </li>
  434. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=55134">55134</a>
  435. Incremental compilation now deletes any additional class files generated during
  436. the weave phase when the class file from whence they came is deleted.
  437. </li>
  438. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54621">54621</a>
  439. Incremental compilation will now detect changes (add, delete, modify) to class
  440. files in directories on the inpath and will include them in incremental compilation.
  441. </li>
  442. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54621">54621</a>
  443. Incremental compilation will now detect changes to jars on the inpath (and injars),
  444. and trigger a full build if a jar is modified.
  445. </li>
  446. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54622">54622</a>
  447. Incremental compilation will now detect changes to resources on the inpath.
  448. </li>
  449. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54618">54618</a>
  450. Incremental compilation will now detect changes to any of the paths affecting
  451. compilation, and triggers a full build if there has been any change since the
  452. last build.
  453. </li>
  454. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=50200">50200</a>
  455. The aspectjrt.jar manifest file now has the correct (upper) case.
  456. </li>
  457. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=49457">49457</a>
  458. No error given when overloading pointcuts, unless variables are bound.
  459. </li>
  460. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=50776">50776</a>
  461. Compilation failure when overriding an inter-type declared method with a
  462. different throws clause.
  463. </li>
  464. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=51919">51919</a>
  465. Polymorphic inter-type declaration fails.
  466. </li>
  467. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=52464">52464</a>
  468. Declare warning coupled with inter-type declaration causes compiler crash.
  469. </li>
  470. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41125">41125</a>
  471. Variable names in the local variable table (for debugging) are now correctly
  472. preserved in all cases.
  473. </li>
  474. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=43792">43792</a>
  475. Improved support for non-US locales (and significantly boosted weaver
  476. performance at the same time).
  477. </li>
  478. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=35636">35636</a>
  479. AspectJ 1.2 behaves much more gracefully when running out of memory. (It also
  480. requires less memory than 1.1.1 did in any case).
  481. </li>
  482. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=42711">42711</a>
  483. Super-types of parameters not recognised when calling priveleged methods.
  484. </li>
  485. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=43972">43972</a>
  486. (See also <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=45676">45676</a>).
  487. Incorrectly adding synthetic attribute to generated methods.
  488. </li>
  489. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=45184">45184</a>
  490. External pointcut references not resolved when a named pointcut is used by a
  491. declare statement.
  492. </li>
  493. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=46750">46750</a>
  494. Declare soft does not work inside a nested aspect.
  495. </li>
  496. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=47754">47754</a>
  497. No error signalled when attempting to declare a static method on an interface
  498. using an inter-type declaration.
  499. </li>
  500. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=48522">48522</a>
  501. Declare soft softens all exceptions at matched join points, not just the
  502. exception declared to be soft.
  503. </li>
  504. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=49295">49295</a>
  505. AspectJ 1.2 no longer supports inter-type constructor declarations on interfaces.
  506. </li>
  507. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=51929">51929</a>
  508. Call to a protected super-type method within a advice body causes java.lang.VerifyError.
  509. </li>
  510. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=52928">52928</a>
  511. Private members introduced via an interface are incorrectly visible within implementing classes.
  512. </li>
  513. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=47910">47910</a>
  514. An output jar file created by AspectJ when using the -outjar option does not contain a
  515. valid manifest file.
  516. </li>
  517. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=59909">59909</a>
  518. Thread local storage used to manage cflow stacks when available - improves cflow performance
  519. when working with a multi-threaded application.
  520. </li>
  521. </ul>
  522. <h2><a name="1.1.1">1.1.1</a></h2>
  523. <p>All known P1 and P2 bugs have been fixed in this release. The <a href="https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&target_milestone=1.1.1">full list of bug fixes</a>
  524. (49 in all) can be found on bugzilla.</p>
  525. <p>Some of the more significant bug fixes and enhancements in this release include:
  526. <ul>
  527. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=40943">40943</a>
  528. The ajc compiler now copies resource files from jars specified using the
  529. -injars option. When compiling with source directories, resources are <i>not</i>
  530. copied - mirroring the behaviour of javac so as to cause minimum disruption
  531. when switching between ajc and javac.
  532. (To copy resources from source directories, use the iajc Ant task
  533. <tt>sourceRootCopyFilter</tt> option.)
  534. Thanks to Matthew
  535. Webster for contributing many of the patches for this enhancement.
  536. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=39626">39626</a>
  537. ajc was erroneously putting aspectjtools.jar in the classpath of a compilation.
  538. This caused problems when attempting to compile projects using different versions
  539. of any of the classes in aspectjtools.jar. Thanks to George Harley and Igor
  540. Hjelmstrom Vinhas Ribeiro for their assistance in tracking this down.
  541. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=40257">40257</a>
  542. Relative paths are now supported in ".lst" files.
  543. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=40771">40771</a>
  544. The Ajde apis are no longer coupled to swing. This is of most significance to AJDT
  545. users on the Mac OS X platform, enabling AJDT to be used with Mac OS X.
  546. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41254">41254</a>
  547. Of interest to those writing tools that need to interact with the structure model for
  548. AspectJ programs: the interface to the AspectJ structure model was significantly revised
  549. and enhanced in 1.1.1.
  550. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=39462">39462</a>
  551. A compiler exception was thrown when an abstract aspect in a library was extended by
  552. a concrete aspect using cflow. Thanks to Takao Naguchi for an easy to reproduce bug report.
  553. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=39479">39479</a>
  554. Compiler crashes when a constructor delegates to another constructor that uses a switch statement.
  555. Thanks to Andy Clement for both the easy to reproduce bug report and the patch.
  556. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41175">41175</a>
  557. Declared exceptions were being lost on inter-type declarations made from binary
  558. aspects in an aspect library.
  559. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41359">41359</a>
  560. Aspect per-clauses were not inherited by sub-aspects when using binary aspect libraries.
  561. Thanks to Chris Bozic for the easy to reproduce bug report.
  562. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=42539">42539</a>
  563. The "+" pattern was being ignored for type patterns used in throws clauses. Thanks to
  564. Keith Sader for the easy to reproduce bug report.
  565. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=40807">40807</a>
  566. If you specify no output directory, the iajc Ant task now defaults to using
  567. the source directory, following ajc and javac.
  568. As a result, now you can use ajc to compile JSP's in Tomcat.
  569. Thanks to Ron Bodkin for investigating how to integrate ajc with Tomcat.
  570. </ul>
  571. </p>
  572. <h2><a name="1.0.6">1.0.6</a></h2>
  573. <p> This release contains mainly bug fixes for ajde and ajdoc.
  574. <h3><a name="1.0.6compiler">Compiler</a></h3>
  575. <p>We fixed a bug with switch statements, thanks largely
  576. to Jason Rimmer's diligence in helping us isolate the problem.
  577. Also, to help Log4J parse stack traces, we changed class file
  578. symbolic line references to use [] instead of () for the
  579. virtual start lines of each file.
  580. </p>
  581. <h3><a name="1.0.6ajde">AJDE</a></h3>
  582. <p><b>AJDE Framework, AJBrowser, and AJDE for Forte/NetBeans</b></p>
  583. <p>The memory use of the structure model has been streamlined in order to reduce
  584. footprint when working with large systems.&nbsp; Error tolerance has also been
  585. improved for dealing with a structure model that is out of synch with resources
  586. on disk.</p>
  587. <h4>AJDE for JBuilder</h4>
  588. <p>JBuilder 7 is now supported.&nbsp; All known bugs have been fixed including:</p>
  589. <ul>
  590. <li><a href="http://aspectj.org/bugs/resolved?id=787">787</a>
  591. AJDE for JBuilder throws exception given non-existent file</li>
  592. <li><a href="http://aspectj.org/bugs/resolved?id=788">788</a>
  593. Label too small in error message </li>
  594. <li><a href="http://aspectj.org/bugs/resolved?id=789">789</a>
  595. Index-out-of-bounds exception in JBuilder AJDE </li>
  596. <li><a href="http://aspectj.org/bugs/resolved?id=792">792</a>
  597. Required libraries disappear from JBuilder 6 </li>
  598. <li><a href="http://aspectj.org/bugs/resolved?id=795">795</a>
  599. Unable to compile open tools </li>
  600. <li><a href="http://aspectj.org/bugs/resolved?id=802">802</a>
  601. AJDE loses current (cursor) position in file when switching files </li>
  602. </ul>
  603. <p>In addition, thanks to user feedback that indicated trouble building JBuilder
  604. OpenTools with AJDE/JBuilder, the OpenTool is now being built with itself. </p>
  605. <h3><a name="1.0.6ajdoc">Ajdoc</a></h3>
  606. <ul>
  607. <li>Fixed <a href="http://aspectj.org/bugs/resolved?id=790">790</a>
  608. aspect code comments suppressed by fix to bug 710
  609. </li>
  610. <li>Known problems: <a href="http://aspectj.org/bugs/ajdoc">
  611. http://aspectj.org/bugs/ajdoc
  612. </a></li>
  613. </ul>
  614. <hr />
  615. <h2><a name="1.0.5">1.0.5</a></h2>
  616. <p>This release includes significant improvements to AspectJ Development
  617. Environment (AJDE) support. The entire user interface has been revised and
  618. streamlined. The AJDE features are more tightly integrated into JBuilder and
  619. NetBeans/Forte support. JBuilder support now includes graphical configuration
  620. file editing and an integrated AspectJ Browser tool. </p>
  621. <ul>
  622. <li><a href="#1.0.5compiler">Compiler</a></li>
  623. <li><a href="#1.0.5ajde">AJDE</a></li>
  624. <li><a href="#1.0.5ajdoc">Ajdoc</a></li>
  625. <li><a href="#1.0.5anttasks">Ant tasks</a></li>
  626. </ul>
  627. <h3><a name="1.0.5compiler">Compiler</a></h3>
  628. <p> This was another compiler release primarily concerned with fixing
  629. corner cases in the language implementation. Our handling of nested
  630. classes, the assert statement, and cflow were the principal offenders
  631. this time. Thanks to Nicholas Alex Leidenfrost and Patrick Chan for
  632. their clear and concise bug reports on some of these issues. </p>
  633. <h3><a name="1.0.5ajde">AJDE</a></h3>
  634. <h4><span style="font-weight: 400">This release includes significant
  635. improvements to AspectJ Development Environment (AJDE) support. All known bugs
  636. have been fixed, and the core framework quality has been significantly increased
  637. thanks to the adoption of a unit test suite. The following changes apply
  638. to all of the AJDE NetBeans/Forte, JBuilder, and the AspectJ Browser support.
  639. NetBeans/Forte and JBuilder-specific changes are listed below. </span></h4>
  640. <ul>
  641. <li><span style="font-weight: 400">The entire user interface has been revised
  642. and streamlined.</span></li>
  643. <li>The structure view and browser have a new UI, and offer both a file-based
  644. and global structure views. All views expose node ordering, node
  645. filtering, and association filtering functionality. The global views
  646. expose a package tree as well as the global inheritance and crosscutting
  647. structure. </li>
  648. <li>Structure view navigation now has a history exposed by back/forward.</li>
  649. <li>The is a new build configuration management UI.</li>
  650. <li>The compiler preferences UI now includes access to all build options.</li>
  651. <li>Error messages have been improved, and the structure views include
  652. annotations of nodes with errors and warnings.</li>
  653. </ul>
  654. <h4>AJDE for JBuilder</h4>
  655. <p>Integration into the JBuilder IDE is more streamlined. In addition:</p>
  656. <ul>
  657. <li>The AspectJ Browser is included as a tool that replaces JBuilder's
  658. "Project View" and can be used to navigate the global structure of your system
  659. (including the crosscutting and inheritance structure).</li>
  660. <li>Inline structure annotations in the editor's gutter can now expose all of
  661. the structure presented in the structure view, and can be used to navigate in
  662. a similar way. Note that there are preferences for toggling which of
  663. these appear.</li>
  664. <li>Building is better integrated and the JBuilder build toolbar is removed
  665. when AJDE is enabled.</li>
  666. <li>Build configurations can be selected from the build button's menu.</li>
  667. <li>Execution is better integrated: instead of a separate "run" button
  668. JBuilder's run and debug can be used. Note that for new projects you
  669. will need to use the "AspectJ Runtime" library, which will be added to your
  670. preferences automatically.</li>
  671. <li>A new graphical build configuration editor can be used by double-clicking
  672. ".lst" files that have been added to the project. </li>
  673. <li>Error messages now match JBuilder's look-and-feel and behavior.
  674. Seeking to column numbers now works in addition to line numbers.</li>
  675. </ul>
  676. <h4>AJDE for Forte/NetBeans</h4>
  677. <p>Integration into the NetBeans IDE is more streamlined. In addition:</p>
  678. <ul>
  679. <li>NetBeans 3.3.2 and SunONE Studio 4 are supported.</li>
  680. <li>Multiple filesystems are supported.</li>
  681. <li>Default project build configurations (all project files) are now
  682. supported.</li>
  683. <li>Build configurations can be selected in the tool bar.</li>
  684. <li>Regular NetBeans execution and debugging is supported. Note that you
  685. have to add netbeans/lib/ext/aspectjrt.jar file to your project configuration.</li>
  686. <li>Class files are generated beside source files (NetBeans/javac default).
  687. There is currently no way to specify a target directory.</li>
  688. </ul>
  689. <h4>AJBrowser</h4>
  690. <ul>
  691. <li>The browser now supports main class execution. Set the main class in
  692. the options dialog, and make sure that both the Java executable is on your
  693. path, and the class that you expect to execute on your classpath.</li>
  694. <li>The error messages UI has been improved.</li>
  695. </ul>
  696. <h3><a name="1.0.5ajdoc">Ajdoc</a></h3>
  697. <p>Bug fixes:
  698. </p>
  699. <ul>
  700. <li><a href="http://aspectj.org/bugs/resolved?id=710">710 -
  701. compiler-generated constructor shown with class comment
  702. </a></li>
  703. <li><a href="http://aspectj.org/bugs/resolved?id=712">712 -
  704. comments lost in aspect docs for methods
  705. or constructors declared on other types.
  706. </a></li>
  707. <li><a href="http://aspectj.org/bugs/resolved?id=719">719 -
  708. poor support for @link, @see tags
  709. </a></li>
  710. <li><a href="http://aspectj.org/bugs/resolved?id=742">742 -
  711. crash with @see tag
  712. </a></li>
  713. <li><a href="http://aspectj.org/bugs/resolved?id=751">751 -
  714. error loading doclet resource
  715. </a></li>
  716. </ul>
  717. <h3><a name="1.0.5anttasks">Ant tasks</a></h3>
  718. <p>Bug fixes:
  719. </p>
  720. <ul>
  721. <li><a href="http://aspectj.org/bugs/resolved?id=730">730 -
  722. document all supported ajc flags <a></li>
  723. </ul>
  724. <hr />
  725. <h2><a name="1.0.4">1.0.4</a></h2>
  726. <ul>
  727. <li><a href="#1.0.4compiler">Compiler</a></li>
  728. <li><a href="#1.0.4ajde">AJDE</a></li>
  729. <li><a href="#1.0.4ajdoc">Ajdoc</a></li>
  730. <li><a href="#1.0.4taskdefs">Ant taskdefs</a></li>
  731. <li><a href="#1.0.4doc">Documentation</a></li>
  732. </ul>
  733. <h3><a name="1.0.4compiler">Compiler</a></h3>
  734. <ul>
  735. <li>Over a dozen people independently reported a bug in error
  736. handling for the wrong number number of arguments to
  737. <code>proceed</code>. This has been turned into a nice error
  738. message. A number of other bug reports related to around advice and
  739. proceed have also been fixed, including the ability to change the
  740. bindings for <code>this</code> and <code>target</code> using proceed
  741. in around advice.
  742. </li>
  743. <li>David Walend gets the <em>black thumb</em> award for the most
  744. bug reports submitted by a new user. His bug report on the
  745. behavior of after returning advice led to some valuable clarifications
  746. of this part of the language spec.
  747. </li>
  748. <li>A number of places where ajc didn't fully comply with the Java
  749. Language Spec have been fixed in this release. Thanks to Neal
  750. Gafter for reporting many of these.
  751. </li>
  752. </ul>
  753. <h4>Incompatible changes</h4>
  754. <p>Two potentially surprising incompatible changes have been made to
  755. ajc in order to bring the compiler into compliance with the 1.0
  756. language design. These changes will be signalled by clear warning or
  757. error messages at compile-time and will not cause any run-time
  758. surprises. We expect most users to never notice these changes.</p>
  759. <ul>
  760. <li>The obsolete class
  761. <code>org.aspectj.lang.MultipleAspectsBoundException</code> has been
  762. removed from aspectjrt.jar. This class had not been used since
  763. AspectJ-0.8 and should have been removed prior to the 1.0 release.
  764. It is not documented as part of the 1.0 language spec. This change
  765. will cause a compile-time type not found error in any code that
  766. refers to this exception.</code>
  767. <li>The compiler was not correctly implementing the AspectJ-1.0
  768. language design for some uses of after returning advice. This
  769. compiler behavior was fixed, and advice whose behavior might be
  770. changed by this bug fix will be highlighted with a compiler
  771. warning. More information about some of these changes can be found
  772. in the <a href="porting.html#pre-1.0.4">porting notes</a>.</li>
  773. </ul>
  774. <h3><a name="1.0.4ajde">AJDE</a></h3>
  775. <p>This is the first release of AJDE support with significant external
  776. contribution. A big thanks goes out to Phil Sager for porting the AJDE for
  777. Forte/NetBeans support to NetBeans 3.3.1 and improving the integration into
  778. NetBeans.</p>
  779. <h4>AJDE for JBuilder</h4>
  780. <ul>
  781. <li>Updates<ul>
  782. <li>This is a bug fix release only. </li>
  783. </ul>
  784. </li>
  785. </ul>
  786. <h4>AJDE for Forte/NetBeans</h4>
  787. <ul>
  788. <li>Updates<ul>
  789. <li>NetBeans 3.3.1 is now supported in addition to NetBeans 3.2 and Forte CE
  790. 3.</li>
  791. <li>Native NetBeans main class execution can now be used. After doing
  792. a "Compile with AJC" browse to the main class in the "Filesystems" Explorer,
  793. right-click the class and select "Execute". </li>
  794. <li>The debugger can now be used if the project main class is set ("Project"
  795. menu -&gt; "Set Project Main Class...").</li>
  796. <li>Numerous bugs have been fixed.</li>
  797. </ul>
  798. </li>
  799. <li>Known limitations<ul>
  800. <li>Breakpoint setting does not work in the debugger.</li>
  801. <li>In the "Filesystems" Explorer red Xs appear on files with AspectJ source
  802. code. The "AspectJ" Explorer understands the structure of AspectJ
  803. projects and should be used for navigating structure instead.</li>
  804. </ul>
  805. </li>
  806. </ul>
  807. <h4>AJDE for Emacs</h4>
  808. <ul>
  809. <li>This is a bug fix release only.</li>
  810. </ul>
  811. <h3><a name="1.0.4ajdoc">Ajdoc</a></h3>
  812. <p>Ajdoc now runs under J2SE 1.4, but still requires the tools.jar
  813. from J2SE 1.3 be on the classpath.
  814. </p>
  815. <h3><a name="1.0.4taskdefs">Ant tasks</a></h3>
  816. <ul>
  817. <li>Repackaged to fit into the AspectJ product directory - e.g.,
  818. <code>aspectj-ant.jar</code> moved to <code>lib</code>
  819. as expected by <code>examples/build.xml</code>.
  820. </li>
  821. <li>Fixed bugs, esp. <a href="http://aspectj.org/bugs/resolved?id=682">682</a>:
  822. Throw BuildException if failonerror and ajdoc detects misconfiguration.
  823. </li>
  824. </ul>
  825. <h3><a name="1.0.4doc">Documentation</a></h3>
  826. <p>Added a 1-page quick reference guide. Improved javadoc documentation for
  827. the org.aspectj.lang package.
  828. </p>
  829. <hr/>
  830. <h2><a name="1.0.3">1.0.3</a></h2>
  831. <ul>
  832. <li><a href="#1.0.3compiler">Compiler</a></li>
  833. <li><a href="#1.0.3taskdefs">Ant taskdefs</a></li>
  834. </ul>
  835. <h3><a name="1.0.3compiler">Compiler</a></h3>
  836. <p> This release fixes a single significant bug in 1.0.2 where ajc
  837. could generate unreachable code in <code>-usejavac</code> or
  838. <code>-preprocess</code> mode. This would happen when around advice
  839. was placed on void methods whose body consisted solely of a
  840. <code>while (true) {}</code> loop. We now properly handle the
  841. flow-analysis for this case and generate code that is acceptable to
  842. javac. Thanks to Rich Price for reporting this bug.
  843. </p>
  844. <h3><a name="1.0.3taskdefs">Ant taskdefs</a></h3>
  845. <p>Added support to the Ajc taskdef for the -source 1.4 and -X options generally.
  846. </p>
  847. <hr />
  848. <h2><a name="1.0.2">1.0.2</a></h2>
  849. <p> This release is mainly about keeping up with the Joneses. To keep
  850. up with SUN's release candidate for J2SE1.4, we now officially support
  851. the new 1.4 assertions and running on the 1.4 VM. In honor of the
  852. public review of JSR-45 Debugging Support for Other Languages we
  853. implement this spec for AspectJ. We support Borland's recent release
  854. of JBuilder 6, and since some of our users are starting to work on Mac
  855. OSX, AJDE now works nicely on this platform. We also fixed almost all of
  856. the bugs you reported in 1.0.1.
  857. </p>
  858. <ul>
  859. <li><a href="#1.0.2compiler">Compiler</a></li>
  860. <li><a href="#1.0.2ajde">AJDE</a></li>
  861. <li><a href="#1.0.2ajdb">AJDB</a></li>
  862. </ul>
  863. <h3><a name="1.0.2compiler">Compiler</a></h3>
  864. <ul>
  865. <li>Official support for <code>-source 1.4</code> option to compile new
  866. <a href="http://java.sun.com/j2se/1.4/docs/guide/lang/assert.html">1.4 assertions</a>.
  867. This makes ajc completely compatible with j2se-1.4.
  868. </li>
  869. <li>Implementation of <a href="http://jcp.org/jsr/detail/45.jsp">
  870. JSR-45 Debugging Support for Other Languages</a> so that debuggers which
  871. correctly implement this specification will be able to accurately debug
  872. any AspectJ program at a source code level. We are not currently
  873. aware of any debuggers that implement this so far, but expect that
  874. as j2se-1.4 becomes widely available this will change.
  875. </li>
  876. <li>As proposed by Arno Schmidmeier and seconded by Nick Lesiecki, we now have an
  877. experimental <code>-Xlint</code> option that will provide warnings when
  878. type patterns used in pcds have no bindings. We are very interested in
  879. feedback on the usefulness and suggested improvements for this feature.
  880. </li>
  881. <li>Several significant bugs in the implementation of around advice have been fixed.
  882. These include issues with <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=632">
  883. dynamic tests</a>, with
  884. <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=620">
  885. complicated local types in an around body</a>, and with
  886. <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=636">
  887. capturing proceed in a closure</a>.
  888. </li>
  889. <li>All but two (<a href="http://aspectj.org/jitterbug/aspectj-bugs/compiler?id=626">1</a>,
  890. <a href="http://aspectj.org/jitterbug/aspectj-bugs/compiler?id=645">2</a>)
  891. verified bugs in 1.0.1 have been fixed. The two outstanding bugs
  892. have relatively easy work-arounds. Thanks as usual to everyone who
  893. submitted a bug report.
  894. </li>
  895. <li>We no longer use the <code>SYNTHETIC</code> attribute to label declarations
  896. added by the aspectj compiler. We were using this attribute in compliance
  897. with <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#80128">
  898. the JVM Specification</a>; however, we've found that many tools expect
  899. this attribute to only be used for the narrow purpose of implementing
  900. Java's inner classes and that using it for other synthetic members can confuse
  901. them. This led to problems both
  902. <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=649">with javap</a> and
  903. <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=646">with javac</a>.
  904. </li>
  905. <li>Changes required adding runtime classes, so please compile and run using the latest
  906. <code>aspectjrt.jar</code>
  907. </li>
  908. </ul>
  909. <h3><a name="1.0.2ajde">AJDE</a></h3>
  910. <p align="left">This is a bug fix release only. </p>
  911. <ul>
  912. <li>
  913. <p align="left">Thanks to Dave Yost and Matt Drance for submitting the AJDE
  914. patches for Mac OSX (context popup menus and keyboard shortcuts did not work). </p>
  915. </li>
  916. <li>
  917. <p align="left">Bugs in history navigation (back-forward buttons in the
  918. structure view) have been fixed.</p>
  919. </li>
  920. <li>
  921. <p align="left">"Declares" are now handled properly in the structure view.</p>
  922. </li>
  923. <li>
  924. <p align="left">Other GUI and usability improvements have been made the AspectJ
  925. Browser and core framework.</p>
  926. </li>
  927. </ul>
  928. <h4>AJDE for JBuilder</h4>
  929. <ul>
  930. <li>Support has been extended to JBuilder 6, and support for Enterprise
  931. version features has been improved.</li>
  932. <li>Fixed bug causing inline source code annotations in the editor pane to not
  933. be updated after a recompile.</li>
  934. <li>Keyboard shortcuts were fixed to work with Mac OSX.</li>
  935. </ul>
  936. <h4>AJDE for Forte</h4>
  937. <ul>
  938. <li>Keyboard shortcuts were fixed to work with Mac OSX.</li>
  939. </ul>
  940. <h4><a name="1.0.2ajdb">AJDB</a></h4>
  941. <p> Some minor bug fixes, but this is still early-access software.
  942. Please try using another JPDA-compliant debugger. If it uses
  943. JDI correctly, then it should navigate to line numbers
  944. when the classes are run under J2SE1.4, based on
  945. the new JSR-45 debugging support described above.
  946. We would appreciate any reports of success or failure.
  947. </p>
  948. <hr />
  949. <h2><a name="1.0.1">1.0.1</a></h2>
  950. <ul>
  951. <li><a href="#1.0.1compiler">Compiler</a></li>
  952. <li><a href="#1.0.1ajde">AJDE</a></li>
  953. <li><a href="#1.0.1ajdb">AJDB</a></li>
  954. </ul>
  955. <h3><a name="1.0.1compiler">Compiler</a></h3>
  956. <p> This release fixes a significant performance issue in the
  957. compiler, reported by Rich Price, that could lead to extremely long
  958. compiles in systems with many aspects and classes. Several other
  959. small bugs related to reporting compilation errors have also been
  960. fixed, see <a
  961. href=http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=610>this
  962. bug report</a> for an example.
  963. </p>
  964. <p> A new experimental flag has been added,
  965. <code>-XaddSafePrefix</code>, that will cause the prefix
  966. <code>aspectj$</code> to be inserted in front of all methods generated
  967. by ajc. This mode should be helpful when using aspectj with tools
  968. that do reflection based on method names, such as EJB tools. Thanks
  969. to Vincent Massol for pointing out the importance of this. It is
  970. expected that this prefix will either become the default compiler
  971. behavior in the future or a non-experimental flag will replace it.
  972. </p>
  973. <h3><a name="1.0.1ajde">AJDE</a></h3>
  974. <p align="left">Minor bug fixes, including: AJDE for JBuilder failed to preserve
  975. application parameters from project settings when executing the application.</p>
  976. <p align="left">Source builds were cleaned up for JBuilder and Forte sources.</p>
  977. <h3><a name="1.0.1ajdb">AJDB</a></h3>
  978. <p>Two bugs were reported and have been fixed in this release.
  979. (Note that ajdb is still considered early-access software.)</p>
  980. <ul>
  981. <li>bug 611: NullPointerException dumping non-primitive values</li>
  982. <li>bug 617: -X and -D options not passed to debug VM correctly</li>
  983. </ul>
  984. <h2><a name="1.0.0">1.0.0</a></h2>
  985. <ul>
  986. <li><a href="#1.0.0language">Language</a></li>
  987. <li><a href="#1.0.0compiler">Compiler</a></li>
  988. <li><a href="#1.0.0ajde">AJDE</a></li>
  989. <li><a href="#1.0.0ajdoc">AJDoc</a></li>
  990. <li><a href="#1.0.0taskdefs">Ant taskdefs</a></li>
  991. </ul>
  992. <h2><a name="1.0.0language">Language</a></h2>
  993. <p>There were no language changes for this release.</p>
  994. <h2><a name="1.0.0compiler">Compiler</a></h2>
  995. <p>Several minor bugs primarily in error handling were reported and
  996. have been fixed in this release. The two most serious bugs are
  997. described below:</p>
  998. <ul>
  999. <li>Niall Smart and Stephan Schmidt reported related bugs (variants
  1000. of which are also produced by other compilers) that caused verify
  1001. errors when dealing with nested try-finally and synchronized
  1002. statements. These are now fixed. More details are available
  1003. <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=601">
  1004. here</a> and
  1005. <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=595">
  1006. here</a>
  1007. </li>
  1008. <li>Jan Hannemann submitted a <a
  1009. href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=600">
  1010. succint and clear bug report</a> for a difficult intermittant bug.
  1011. The bug led to the compiler sometimes generating illegal code when
  1012. introduced methods on a class overrode introduced methods on an
  1013. interface implemented by that class. This is now fixed.</li> </ul>
  1014. <h2><a name="1.0.0ajde">AJDE</a></h2>
  1015. <p align="left">Numerous user interface refinements were made to the browser and
  1016. core AJDE functionality. Error handling and reporting has been improved.
  1017. All of the AJDE tools now support the ".aj" file extension.</p>
  1018. <h4>AJDE for JBuilder</h4>
  1019. <ul>
  1020. <li>The AspectJ Browser now uses JBuilder's icons and distinguishes nodes by
  1021. visibility.</li>
  1022. <li>Project-setting VM parameters are now supported by the "AJDE Run" button.</li>
  1023. </ul>
  1024. <h4>AJDE for Forte</h4>
  1025. <ul>
  1026. <li>The AspectJ Browser now uses Forte's icons and distinguishes nodes by
  1027. visibility</li>
  1028. </ul>
  1029. <h4>AJBrowser</h4>
  1030. <ul>
  1031. <li>Documentation for the browser is now available at
  1032. <a href="http://aspectj.org/docs">http://aspectj.org/docs</a> </li>
  1033. </ul>
  1034. <h4>Emacs Support: aspectj-mode and AJDEE</h4>
  1035. <ul>
  1036. <li>Improved updating of annotations during editing.</li>
  1037. <li>Pop-up jump menu now placed (with mouse pointer) near cursor.</li>
  1038. <li>[AJDEE only] Improved filtering of legal code completions.</li>
  1039. </ul>
  1040. <h4><a name="1.0.0ajdoc">AJDoc</a></h4>
  1041. <ul>
  1042. <li>Runs only in J2SE 1.3 - not 1.2 or 1.4.
  1043. You can document 1.x-reliant programs by using the options
  1044. to compile using 1.x libraries.</li>
  1045. <li>Disabled some non-functioning options, documented as
  1046. <code>unsupported</code> in the syntax message.</li>
  1047. </ul>
  1048. <h4><a name="1.0.0taskdefs">Ant taskdefs</a></h4>
  1049. <ul>
  1050. <li>Fork is not supported in the AJDoc taskdef</li>
  1051. </ul>
  1052. <h2><a name="1.0rc3">1.0rc3</a></h2>
  1053. <h2><a name="1.0rc3language">Language</a></h2>
  1054. <p>There have been several minor clarifications/changes to the
  1055. language.</p>
  1056. <ul>
  1057. <li>Thanks to Robin Green for suggesting that we could relax the
  1058. rules for inheriting multiple concrete members in order to allow
  1059. those unambiguous cases where one member has already overridden the
  1060. other. <a href=http://aspectj.org/pipermail/users/2001/001289.html>
  1061. More details...</a></li>
  1062. <li>Ron Bodkin encouraged us to examine the details of privileged
  1063. aspects more closely. This led to several small improvements and
  1064. clarifications to this language feature.
  1065. <a href=http://aspectj.org/pipermail/users/2001/001258.html> More
  1066. details...</a></li>
  1067. </ul>
  1068. <h2><a name="1.0rc3compiler">Compiler</a></h2>
  1069. <p>This release saw several changes to the compiler in order to
  1070. work-around known bugs in different JVMs, or to otherwise mimic the
  1071. behavior of javac rather than necessarily following the Java Language
  1072. Specification.</p>
  1073. <ul>
  1074. <li>Hanson Char reported a bug where ajc's correctly generated
  1075. bytecodes for some references to interface fields result in verify
  1076. errors on certain JVMs. While this is a known bug in those JVMs,
  1077. we've modified ajc to be bug compatible with all the other Java
  1078. compilers out there to work-around this JVM bug.
  1079. <a href=http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=551>
  1080. More details...</a></li>
  1081. <li>Frank Hunleth discovered a similar bug where ajc's correct
  1082. bytecodes could lead to essentially random method dispath due to a
  1083. bad bug in the 1.3.0 JVM from Sun. Even though this bug was fixed
  1084. in the 1.3.1 and 1.2.2 JVMs, we have introduced the appropriate
  1085. work-around in ajc's code generation. <a
  1086. href=http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=580>More
  1087. details...</a></li>
  1088. <li>Thomas Haug (as well as several other members of his group)
  1089. reported a problem with name binding where ajc was behaving
  1090. differently than javac. This problem was resolved to come from a
  1091. class created by an obfuscator that conflicted with his package
  1092. names. The JLS doesn't clearly specify which of these two behaviors
  1093. is correct. Nevertheless, ajc has been changed to treat packages
  1094. more like javac does in order to minimize this sort of problem in
  1095. the future. <a
  1096. href=http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=574> More
  1097. details...</a></li>
  1098. <li>Several "real" bugs in ajc were also reported and fixed. Toby
  1099. Allsopp gets credit for reporting two of them. The most interesting
  1100. of these bugs to me was his report that we just didn't support
  1101. qualified anonymous inner constructors. This is a part of the Java
  1102. language that ajc has never supported over its almost 3 year
  1103. history. We'd just noticed this ourselves when running the jacks
  1104. compiler test suite from the jikes group, and had added the feature
  1105. days before getting our first bug report for it not being
  1106. there.</li>
  1107. </ul>
  1108. <h2><a name="1.0rc3ajde">AJDE</a></h2>
  1109. <ul>
  1110. <li>The structure view has been improved. </li>
  1111. <li>Multiple user-configurable views are supported.</li>
  1112. <li>Structure tree filtering and ordering has been added. </li>
  1113. <li>A split tree mode has been added to permit the navigation of multiple
  1114. views on the same structure. </li>
  1115. <li>The view can also be toggled between a file-based and a system-based mode
  1116. which determines whether the root of the structure tree is the current file or
  1117. the project root. </li>
  1118. <li>The signatures of tree nodes have been improved and several new node
  1119. associations are now navigable. </li>
  1120. <li>A depth slider for controlling tree-expansion has been added.</li>
  1121. </ul>
  1122. <h4>AJDE for JBuilder</h4>
  1123. <ul>
  1124. <li>Changes:</li>
  1125. <li>Inline annotations support have been improved and made consistent with the
  1126. structure tree (annotations only show up for intra-declaration structure).</li>
  1127. <li>The current structure view persists across IDE launches.</li>
  1128. <li>An enabled AJDE no longer slows down JBuilder shutdown.</li>
  1129. </ul>
  1130. <h4>AJDE for Forte</h4>
  1131. <ul>
  1132. <li>Execution remembers main class.</li>
  1133. <li>The bug causing an error during a "Mode" and "Explorer" switch has been
  1134. fixed.</li>
  1135. </ul>
  1136. <h4>AJBrowser</h4>
  1137. <ul>
  1138. <li>AJBrowser is currently an undocumented demonstration application. To use
  1139. it type: ajbrowser &lt;lst file1&gt; &lt;lst file2&gt; ...</li>
  1140. <li>Multiple source locations can be shown by selecting multiple nodes and
  1141. right-clicking to select the "Display Sources" command.</li>
  1142. </ul>
  1143. <h4>Emacs Support: aspectj-mode and AJDEE</h4>
  1144. <ul>
  1145. <li>Numerous jump-menu improvements, including operation of pop-ups.</li>
  1146. <li>For AJDEE, compatibility with JDEE 2.2.9beta4. Also, fixes in completion,
  1147. ajdoc launch, and speedbar.</li>
  1148. </ul>
  1149. <h3><a name="1.0rc3ajdoc">AJDoc</a></h3>
  1150. <p>Some of the more obvious NullPointerException bugs in Ajdoc were fixed, but
  1151. Ajdoc does not implement all the functionality of Javadoc and has some bugs:</p>
  1152. <ul>
  1153. <li>Split indexes do not work correctly</li>
  1154. <li>Inner classes are not listed in indexes </li>
  1155. <li>Synthetic methods are documented</li>
  1156. <li>There is no package frame even when packages are specified on the command line</li>
  1157. <li>-group option is not implemented</li>
  1158. <li>-use targets are not all calculated correctly</li>
  1159. <li>Exception information may not be printed for the @throws tag</li>
  1160. <li>Verbose output should go to stderr, not stdout</li>
  1161. <li>Extra links are generated (should be unlinked text) </li>
  1162. </ul>
  1163. <p>Further, Ajdoc has not been testing on variants of the J2SE (it uses javadoc classes).
  1164. <h3><a name="1.0rc3taskdefs">Ant taskdefs</a></h3>
  1165. <p>The Ajc taskdef was updated to support the new compiler options and the .aj extension,
  1166. and some NullPointerException bugs were fixed (thanks to Vincent Massol for a bug
  1167. report listing the line number of the fix). The AJDoc cannot be run repeatedly
  1168. in a single Ant run, and has trouble loading the doclet unless the libraries
  1169. are installed in ${ant.home}/lib.
  1170. <p>
  1171. <hr />
  1172. <h2><a name="1.0rc2">1.0rc2</a></h2>
  1173. <ul>
  1174. <li><a href="#1.0rc2language">Language</a></li>
  1175. <li><a href="#1.0rc2compiler">Compiler</a></li>
  1176. <li><a href="#1.0rc2ajde">AJDE</a></li>
  1177. </ul>
  1178. <h2><a name="1.0rc2language">Language</a></h2>
  1179. <p>There are no language changes in this release. This is a bug fix release
  1180. only.</p>
  1181. <h2><a name="1.0rc2compiler">Compiler</a></h2>
  1182. <p>A bug in handling inner type names that conflict with enclosing
  1183. type names was fixed. Many error messages were improved.</p>
  1184. <h2><a name="1.0rc2ajde">AJDE</a></h2>
  1185. <ul>
  1186. <li>This is a bug fix release only.</li>
  1187. </ul>
  1188. <h4>AJDE for JBuilder</h4>
  1189. <ul>
  1190. <li>Changes:<ul>
  1191. <li>Fixed bug causing the output path to be ignored and .class files to be
  1192. generated into the JBuilder install's "bin" directory.</li>
  1193. <li>Fixed bugs in Browser listener causing NullPointerExceptions to be thrown
  1194. if no node editor was present.</li>
  1195. <li>Fixed bug permitting "-bcg" option to be passed to the compiler.</li>
  1196. <li>Fixed bug preventing ajc from compiling all of the project source files
  1197. when automatic package discovery was on (JBuilder Proffessional and Enterprise
  1198. editions).</li>
  1199. <li>If the "-preprocess" flag is used resulting source files will be placed in
  1200. the project's "Working directory".</li>
  1201. </ul>
  1202. </li>
  1203. <li>Limitations:<ul>
  1204. <li>"Automatic package discovery" mode is not supported in this release.</li>
  1205. <li>The debugger has not seen much use and it's stability and performance is
  1206. limited.</li>
  1207. </ul>
  1208. </li>
  1209. </ul>
  1210. <h4>AJDE for Forte</h4>
  1211. <ul>
  1212. <li>Changes:<ul>
  1213. <li>Moved the "AspectJ" menu into the "Tools" menu in order to make it less
  1214. intrusive.</li>
  1215. <li>Added a "ctrl-alt-shift-F9" keyboard compile shortcut.</li>
  1216. </ul>
  1217. </li>
  1218. <li>Limitations:<ul>
  1219. <li>Known bug: "Mode" switching is not supported in this version--you must
  1220. do all of your AspectJ work in the "Editing" mode. If you switch modes the
  1221. IDE has to be restarted for the AspectJ window to show again. Switching to a
  1222. different tab in the ProjectExplorer has the same effect.</li>
  1223. <li>The debugger has not seen much use and it's stability and performance is
  1224. limited.</li>
  1225. </ul>
  1226. </li>
  1227. </ul>
  1228. <h4>AJBrowser</h4>
  1229. <ul>
  1230. <li>Changes:<ul>
  1231. <li>...</li>
  1232. </ul>
  1233. </li>
  1234. <li>Limitations:<ul>
  1235. <li>AJBrowser is currently an undocumented demonstration application. To use
  1236. it type:<br>
  1237. &gt; ajbrowser &lt;lst file1&gt; &lt;lst file2&gt; ...</li>
  1238. </ul>
  1239. </li>
  1240. </ul>
  1241. <h4>Emacs Support: aspectj-mode and AJDEE</h4>
  1242. <p align="left"> This release now properly displays annotations for call sites and
  1243. introductions. Robustness has been improved in several dimensions,
  1244. including performance at startup. The compile menu now recomputes
  1245. properly when changing directories.</p>
  1246. <hr />
  1247. <h2><a name="1.0rc1">1.0rc1</a></h2>
  1248. <ul>
  1249. <li><a href="#1.0rc1language">Language</a></li>
  1250. <li><a href="#1.0rc1compiler">Compiler</a></li>
  1251. <li><a href="#1.0rc1ajde">AJDE</a></li>
  1252. </ul>
  1253. <h2><a name="1.0rc1language">Language</a></h2>
  1254. <p>Some of the details of the specification for perthis and pertarget
  1255. have changed. These changes make these language constructs
  1256. implementable on current JVMs without memory leaks (this wasn't true
  1257. of the previous version). Most people will probably not notice these
  1258. changes, but the correct semantics are described in
  1259. <a href="progguide/semantics.html">the semantics section of the programming
  1260. guide</a>.
  1261. </p>
  1262. <p>In a related change, aspects are not allowed to implement either
  1263. the <code>java.io.Serializable</code> or the
  1264. <code>java.lang.Cloneable</code> interface. It is unclear what the
  1265. correct behavior of a system should be when an aspect is serialized or
  1266. cloned, and rather than make an arbitrary choice right now we've
  1267. chosen to leave the most room to design them right in a future
  1268. release.</p>
  1269. <h2><a name="1.0rc1compiler">Compiler</a></h2>
  1270. <p>ajc now directly generates .class files without using javac as a
  1271. back-end. This should result in improved compiler performance, better
  1272. error messages and better stack-traces and debugging info in those
  1273. .class files. -preprocess mode is still available for those who want
  1274. to generate legal Java source code and a new -usejavac mode is
  1275. available if you have a requirement to continue to use javac as a
  1276. back-end.</p>
  1277. <p>ajc now officially supports source files with the .aj extension.
  1278. We plan to extend this support to the rest of our tools as time
  1279. permits.
  1280. </p>
  1281. <p>This release of ajc includes support for the "-source 1.4" option
  1282. that enables the new 'assert' keyword in jdk1.4. This option only
  1283. works correctly when compiling against the jdk1.4 libraries. In
  1284. addition, this release of ajc will run under SUN's jdk1.4beta2.
  1285. However, we still strongly recommend that most users use the non-beta
  1286. jdk1.3.</p>
  1287. <h2><a name="1.0rc1ajde">AJDE</a></h2>
  1288. <ul>
  1289. <li>The structure view can now be configured (using the "Options" dialog) to
  1290. display different kinds of associations between program elements that appear
  1291. in the tree.</li>
  1292. <li>Structure view history navigation has been added. </li>
  1293. <li>When navigating links the structure view will stay synchronized with the
  1294. editor.</li>
  1295. </ul>
  1296. <h4>AJDE for JBuilder</h4>
  1297. <ul>
  1298. <li>Changes:<ul>
  1299. <li>Inline structural navigation annotations appear in the gutter of the
  1300. editor and can be used to navigate associations such as advice and
  1301. introduction.</li>
  1302. </ul>
  1303. </li>
  1304. <li>Limitations:<ul>
  1305. <li>"Automatic package discovery" mode is not supported in this release.</li>
  1306. <li>The debugger has not seen much use and it's stability and performance is
  1307. limited.</li>
  1308. </ul>
  1309. </li>
  1310. </ul>
  1311. <h4>AJDE for Forte</h4>
  1312. <ul>
  1313. <li>Changes:<ul>
  1314. <li>Support for Forte 3 and Netbeans 3.2 has been added.</li>
  1315. <li>The module is now installed by default on the first use without having to
  1316. go to the IDE options to enable it.</li>
  1317. </ul>
  1318. </li>
  1319. <li>Limitations:<ul>
  1320. <li>Known bug: "Mode" switching is not supported in this version--you must
  1321. do all of your AspectJ work in the "Editing" mode. If you switch modes the
  1322. IDE has to be restarted for the AspectJ window to show again. Switching to a
  1323. different tab in the ProjectExplorer has the same effect.</li>
  1324. <li>The debugger has not seen much use and it's stability and performance is
  1325. limited.</li>
  1326. </ul>
  1327. </li>
  1328. </ul>
  1329. <h4>AJBrowser</h4>
  1330. <ul>
  1331. <li>Changes:<ul>
  1332. <li>Build configuration file editor added.</li>
  1333. </ul>
  1334. </li>
  1335. <li>Limitations:<ul>
  1336. <li>AJBrowser is currently an undocumented demonstration application. To use
  1337. it type:<br>
  1338. &gt; ajbrowser &lt;lst file1&gt; &lt;lst file2&gt; ...</li>
  1339. </ul>
  1340. </li>
  1341. </ul>
  1342. <h4>Aspectj-mode and AJDEE: AspectJ support in Emacs</h4>
  1343. <p align="left">This release of AspectJ support for Emacs includes corrections to the
  1344. documentation and the appearance of annotations and jumps in the editing
  1345. view. Also, advice are now shown on non-declarations, when appropriate,
  1346. such as call advice. The internal event model has been revised to reduce
  1347. computational overhead. </p>
  1348. <hr />
  1349. <h2><a name="1.0beta1">1.0beta1</a></h2>
  1350. <ul>
  1351. <li><a href="#1.0beta1language">Language</a></li>
  1352. <li><a href="#1.0beta1compiler">Compiler</a></li>
  1353. <li><a href="#1.0beta1ajbrowser">AJBrowser</a></li>
  1354. <li><a href="#1.0beta1ajde">AJDE</a></li>
  1355. </ul>
  1356. <h2><a name="1.0beta1language">Language</a></h2>
  1357. <p>There is one language change since 1.0alpha1. The static modifier is
  1358. no longer needed or allowed on pointcut declarations. Name binding
  1359. for pointcut declarations works like class methods now. Thanks to
  1360. Robin Green for encouraging us to look at this one last time.</p>
  1361. <p>The current implementation of perthis/pertarget has the possibility of
  1362. memory leaks (thanks to Arno Schmidmeier for pointing this out). The
  1363. design of this part of the language will almost certainly see some
  1364. changes in the next release to address issues of implementability on
  1365. the JVM as well as related issues.</p>
  1366. <h2><a name="1.0beta1compiler">Compiler</a></h2>
  1367. <p>The ajc compiler should now catch all errors in source code and you
  1368. should no longer see errors coming from files in 'ajworkingdir'.
  1369. Please report any errors in 'ajworkingdir' as bugs.</p>
  1370. <p>All reported bugs in 1.0alpha1 have been fixed. Thanks to everyone
  1371. for your bug reports. Most notably, the 'if' pcd that was added in
  1372. 1.0alpha1 should work correctly in this release. Thanks to Morgan
  1373. Deters for a very thorough bug report on this broken feature days
  1374. after the 1.0alpha1 release.</p>
  1375. <h2><a name="1.0beta1ajbrowser">AJBrowser</a></h2>
  1376. <ul>
  1377. <li>Support for executing classes has been added.</li>
  1378. <li>.lst can now be passed as arguments on the command line.</li>
  1379. <li>Compiler options can be set.</li>
  1380. <li>Know limitations:<ul>
  1381. <li>In order to execute classes they must be available on the classpath that
  1382. the browser is launched with.</li>
  1383. </ul>
  1384. </li>
  1385. </ul>
  1386. <h2><a name="1.0beta1ajde">AJDE</a></h2>
  1387. <ul>
  1388. <li>The performance and UI of the structure tree has been improved.</li>
  1389. <li>Compilation now runs in a separate thread and a progress monitor is
  1390. updated during the compile.</li>
  1391. <li>The structure view now persists across IDE launches.</li>
  1392. <li>Limitations:<ul>
  1393. <li>If an error occurs in the javac pass it will not display properly in the
  1394. error messages pane. To view the error you have check the output of the
  1395. console that the IDE was launched from. No more errors should be passed
  1396. to javac, so please report this behavior and the corresponding error message
  1397. as a bug.</li>
  1398. </ul>
  1399. </li>
  1400. </ul>
  1401. <h4>AJDE for JBuilder</h4>
  1402. <ul>
  1403. <li>Known bugs have been fixed.</li>
  1404. <li>Classpath separator character is no longer hardcoded.</li>
  1405. <li>Keyboard shortcuts for compilation (ctrl-F11) and execution (ctrl-F12)
  1406. have been added.</li>
  1407. <li>Limitations:<ul>
  1408. <li>The debugger has not seen much use and it's stability and performance is
  1409. limited.</li>
  1410. </ul>
  1411. </li>
  1412. </ul>
  1413. <h4>AJDE for Forte</h4>
  1414. <ul>
  1415. <li>Known bugs have been fixed.</li>
  1416. <li>Limitations:<ul>
  1417. <li>"Mode" switching is not supported in this version--you must do all of your
  1418. AspectJ work in the "Editing" mode. If you switch modes the IDE has to
  1419. be restarted for the AspectJ window to show again.</li>
  1420. <li>There are no keyboard compile/execute shortcuts.</li>
  1421. <li>The debugger has not seen much use and it's stability and performance is
  1422. limited.</li>
  1423. </ul>
  1424. </li>
  1425. </ul>
  1426. <h4>Aspectj-mode and AJDEE: AspectJ support in Emacs</h4>
  1427. <p> AspectJ Development Environment for Emacs has been split into two pieces,
  1428. aspectj-mode (an extension of java-mode), and AJDEE (an extension of JDE).
  1429. Additionally, a switch, -emacssym, has been added to ajc that generates
  1430. AspectJ declarations information directly, thus beanshell is no longer
  1431. required for use of these modes.
  1432. </p>
  1433. <hr />
  1434. <h2><a name="1.0alpha1">1.0alpha1</a></h2>
  1435. <p> This is the first alpha release of the 1.0 language and tools.
  1436. There have been many changes in the language, and many improvements to
  1437. the tools. We wish to thank our users for putting up with the high
  1438. volatility of AspectJ in the push to 1.0. </p>
  1439. <ul>
  1440. <li><a href="#1.0alpha1language">Language</a></li>
  1441. <li><a href="#1.0alpha1compiler">Compiler</a></li>
  1442. <li><a href="#1.0alpha1documentation">Documentation</a></li>
  1443. <li><a href="#1.0alpha1ajdoc">AJDoc</a></li>
  1444. <li><a href="#1.0alpha1ant">Ant</a></li>
  1445. <li><a href="#1.0alpha1ajbrowser">AJBrowser</a></li>
  1446. <li><a href="#1.0alpha1ajde">AJDE</a></li>
  1447. </ul>
  1448. <h3><a name="1.0alpha1language">Language</a></h3>
  1449. <p> There have been many changes to make the 1.0 language both simpler
  1450. and more powerful. User feedback has driven most of these design
  1451. changes. Each email we've received either making a suggestion or just
  1452. asking a question about a confusing part of the language has played a
  1453. part in shaping this design. We'd like to thank all of our users for
  1454. their contributions.
  1455. <p>While we don't have room to thank all of our users by name, we'd
  1456. like to specifically mention a few people for their high-quality
  1457. sustained contributions to the users@aspectj.org mailing list as well
  1458. as through their feature requests and bug reports. Robin Green
  1459. (who'll be very happy to see <code>declare error</code>), Stefan
  1460. Hanenberg (who should appreciate the '+' wildcard in type patterns),
  1461. and Rich Price (who suggested final pointcuts, more flexible
  1462. dominates, and many other improvements).<p>
  1463. <p> Note that entries into the <a href="porting.html">porting
  1464. notes</a> for this release are linked from the various language
  1465. changes. </p>
  1466. <h4>Pointcuts</h4>
  1467. <p> Perhaps the least interesting -- but most pervasive -- change is
  1468. that the names of the single-kinded pointcut designators (the ones
  1469. that pick out only one kind of join point) </p>
  1470. <blockquote>calls executions gets sets handlers initializations
  1471. staticinitializations</blockquote>
  1472. <p> have been
  1473. <a href="porting.html#1.0a1-plural-to-singular">changed</a> to be
  1474. singular rather than plural nouns </p>
  1475. <blockquote>call execution get set handler initialization
  1476. staticinitialization</blockquote>
  1477. <p> Although a side benefit is that the names are one character
  1478. shorter, the real benefit is that their combination with the
  1479. <CODE>&amp;&amp;</CODE> and <code>||</code> operators now reads much
  1480. more naturally. No longer does "and" mean "or" and "or" mean "and".
  1481. </p>
  1482. <p> You'll notice that <code>receptions</code> doesn't appear on the
  1483. table as being shortened to <code>reception</code>. That's because
  1484. call and reception join points have been merged, and the
  1485. <code>receptions</code> pointcut declaration has been
  1486. <a href="porting.html#1.0a1-remove-receptions">eliminated</a>. Now,
  1487. <code>call</code> join points describe the action of making a call,
  1488. including both the caller and callee. Eliminating reception join
  1489. points makes AspectJ much simpler to understand (reception join points
  1490. were a commonly misunderstood feature) without giving up expressive
  1491. power.</p>
  1492. <p> We have <a href="porting.html#1.0a1-fixing-state-access">changed
  1493. the mechanism for accessing state</a> at join points, which has the
  1494. benefit of making our treatment of signatures
  1495. <a href="porting.html#1.0a1-no-subs-in-sigs">cleaner</a> and easier to
  1496. read. As a part of this, the <code>instanceof</code> pointcut
  1497. designator has now been
  1498. <a href="porting.html#1.0a1-fixing-instanceof">split into two
  1499. different pointcut designators</a>, <code>this</code> and
  1500. <code>target</code>, corresponding to a join point's currently
  1501. executing object and target object, respectively. </p>
  1502. <p> The new <code>args</code> pointcut adds expressive power to the
  1503. language by allowing you to capture join points based on the actual
  1504. type of an argument, rather than the declared type of its formal. So
  1505. even though the <code>HashSet.removeAll</code> method takes a
  1506. <code>Collection</code> as an argument, you can write advice that only
  1507. runs when it is actually passed a <code>HashSet</code> object. </p>
  1508. <p> AspectJ's notion of object construction and initialization, a
  1509. complicated process in Java, has been clarified. This affects some
  1510. uses of the
  1511. <a href="porting.html#1.0a1-initializations">initializations
  1512. pointcut</a> and
  1513. <a href="porting.html#1.0a1-constructor-calls">constructor calls</a>
  1514. pointcut. </p>
  1515. <p> The little-used pointcuts
  1516. <a href="porting.html#1.0a1-hasaspect"><code>hasaspect</code></a> and
  1517. <a href="porting.html#1.0a1-withinall"><code>withinall</code></a> have
  1518. been removed. </p>
  1519. <p> The <code>returns</code> keyword is
  1520. <a href="porting.html#1.0a1-user-defined-returns">no longer
  1521. necessary</a> for user-defined pointcuts. </p>
  1522. <p> Pointcuts may now be declared <code>static</code>, and
  1523. <a href="porting.html#1.0a1-static-pointcuts">only static
  1524. pointcuts</a> may be declared in classes and referred to with
  1525. qualified references (such as <code>MyAspect.move()</code>). </p>
  1526. <p> Non-abstract pointcuts may now be declared <code>final</code>.
  1527. </p>
  1528. <p> We have finally added an extremely general pointcut,
  1529. <code>if(<var>BooleanExpression</var>)</code>, that picks out
  1530. join points programatically. </p>
  1531. <h4>Type patterns</h4>
  1532. <p> Our treatment of
  1533. <a href="porting.html#1.0a1-new-wildcards">* and ..</a> in type
  1534. patterns is cleaner. </p>
  1535. <p> Type patterns now have the ability to include array types, and
  1536. there is a new wildcard, +, to pick out all subtypes of a given type.
  1537. Previously, the subtypes operator was only allowed in introduction,
  1538. and was <a href="porting.html#1.0a1-subtypes-to-plus">spelled
  1539. differently</a>. </p>
  1540. <h4>Advice</h4>
  1541. <p> Around advice is treated much more like a method, with a
  1542. <a href="porting.html#1.0a1-around-returns">return value</a> and an
  1543. optional <a href="porting.html#1.0a1-around-throws">throws clause</a>.
  1544. </p>
  1545. <p> The advice precedence rules have been
  1546. <a href="porting.html#1.0a1-advice-precedence">changed</a>. Now, for
  1547. example, a piece of after advice that appears lexically later than
  1548. another piece of after advice will run later, as well. Previously,
  1549. the relationship was the other way around, which caused no small
  1550. amount of confusion. </p>
  1551. <p> After returning advice has lost a
  1552. <a href="porting.html#1.0a1-after-returning">useless set of
  1553. parentheses</a> when not using the return value. </p>
  1554. <p> The <code>thisStaticJoinPoint</code> reflective object has been
  1555. <a href="porting.html#1.0a1-this-static-join-point">renamed</a>, and
  1556. the <code>thisJoinPoint</code> object hierarchy has been
  1557. <a href="porting.html#1.0a1-this-join-point">simplified</a>. </p>
  1558. <h4>Introduction and static crosscutting</h4>
  1559. <p> On the static side of the language, introduction hasn't changed,
  1560. but there is now a new keyword, <code>declare</code>, that is used to
  1561. declare various statically-crosscutting properties. One of these
  1562. properties is subtyping, so we've
  1563. <a href="porting.html#1.0a1-plus-implements-extends">gotten rid of</a>
  1564. the ugly keywords <code>+implements</code> and
  1565. <code>+extends</code>. </p>
  1566. <p> We have provided two new forms, <code>declare error</code> and
  1567. <code>declare warning</code>, for the often-asked-for property of
  1568. compile-time error detection based on crosscutting properties. </p>
  1569. <p> AspectJ's interaction with checked exceptions is now firmly on the
  1570. side of static crosscutting, since Java treats such exceptions at
  1571. compile-time. A new form, <code>declare soft</code>, can be used to
  1572. "soften" checked exceptions into an unchecked form. This may affect
  1573. some uses of <a href="porting.html#1.0a1-now-use-soft">around
  1574. advice</a> that previously mucked with the exception checking
  1575. system.</p>
  1576. <h4>Aspects</h4>
  1577. <p> The "of each" modifiers have been
  1578. <a href="porting.html#1.0a1-aspects">renamed</a>. Apart from the
  1579. spelling, the main interesting difference is the splitting up of
  1580. <code>of eachobject</code> into two different modifiers, parallel with
  1581. the split of <code>instanceof</code> into <code>this</code> and
  1582. <code>target</code>. </p>
  1583. <p> The <code>dominates</code> keyword now takes a type pattern,
  1584. rather than a type. This allows an aspect A, for example, to declare
  1585. that its advice should dominate the advice of another aspect B as well
  1586. as its subtypes, with the new + subtypes operator: <code>aspect A
  1587. dominates B+</code>.
  1588. </p>
  1589. <h3><a name="1.0alpha1compiler">Compiler</a></h3>
  1590. <p> The most important change in the compiler is that it supports the
  1591. new language. In addition, all reported bugs in the last release have
  1592. been fixed. Thanks for your bug reports.</p>
  1593. <p>The compiler also gets a new <code>-encoding</code> flag in this
  1594. release for handling source files that are not in standard US-ASCII
  1595. format. Thanks to Nakamura Tadashi for both suggesting this feature
  1596. and for submitting a nice patch to implement it.
  1597. <h4>Known Limitations</h4>
  1598. <p> The previous compiler's limitations regarding join points that
  1599. occurred in anonymous classes have all been eliminated.
  1600. Unfortunately, eliminating this restriction has resulted in
  1601. preprocessed source code that is less readable than in previous
  1602. releases. More care will be taken in the next release to mitigate
  1603. this effect. </p>
  1604. <p> Many semantic errors are not caught by ajc but fall through to
  1605. javac. Moreover, some errors regarding the initialization of final
  1606. fields might never show up when using ajc. This will be fixed
  1607. shortly. </p>
  1608. <h3><a name="1.0alpha1documentation">Documentation</a></h3>
  1609. <p> Although we spent much of our time this release cycle updating the
  1610. documentation to the new language rather than improving its content,
  1611. we did make some structural improvements. The old <cite>Primer</cite> has been
  1612. split into a <cite>Programming Guide</cite>, covering the language, and a
  1613. <cite>Development Environment Guide</cite>, covering the develompent tools. In
  1614. addition, printable versions of both guides (in PDF) are finally
  1615. included in the documentation package. </p>
  1616. <h3><a NAME="1.0alpha1ajdoc">Ajdoc</a></h3>
  1617. <p> Ajdoc was rewritten to conform with the language changes and provide support
  1618. for other AspectJ/Java compilers. Our doclet is used by default creating
  1619. AspectJ-specific documentation, or Sun's standard doclet can be used by
  1620. passing the '-standard' flag to Ajdoc to produce regular Javadoc documentation
  1621. (excluding AspectJ-specifics).
  1622. </p>
  1623. <h3><a NAME="1.0alpha1ant">Ant</a></h3>
  1624. <p> An Ajdoc task is now available. The Ajc ant task was improved to
  1625. be completely back-compatible with the Javac task.</p>
  1626. <h3><a NAME="1.0alpha1ajbrowser">AJBrowser</a></h3>
  1627. <p> The "AspectJ Browser" is a new standalone source code browsing application.
  1628. It will let you compile ".lst" files, view the structure for those files and
  1629. navigate the corresponding source code.</p>
  1630. <h3><a name="1.0alpha1ajde">AJDE</a></h3>
  1631. <h4>AJDE for JBuilder</h4>
  1632. <h5>Installation</h5>
  1633. <ul>
  1634. <li>Use the installer to place the "ajdeForJBuilder.jar" and "aspectjrt.jar"
  1635. in to JBuilder's lib/ext directory.</li>
  1636. </ul>
  1637. <h5>Key Improvements</h5>
  1638. <ul>
  1639. <li>The "AspectJ Structure View" replaces JBuilder's structure view instead of
  1640. being launched in a separate window.</li>
  1641. <li>AJDE can be toggled on/off with the "AJ" button--when it is turned off all
  1642. of the menus, resources, and event listeners that it uses will be removed.</li>
  1643. <li>Projects no longer require the manual adding of the "aspectjrt.jar"
  1644. libarary.</li>
  1645. </ul>
  1646. <h5>Known Bugs &amp; Limitations</h5>
  1647. <ul>
  1648. <li>There is no compiler progress dialog--the way to tell if the compile is
  1649. finished is to watch the "status" area of the main window.</li>
  1650. <li>There are no keyboard compile/execute shortcuts.</li>
  1651. <li>The structure view is not persistent between IDE launches--you must
  1652. compile to view the structure for a program.</li>
  1653. <li>The debugger has not seen much use and it's stability and performance is
  1654. limited.</li>
  1655. <li>There is no ajdoc tool support.</li>
  1656. <li>Linux testing has been very limited.</li>
  1657. </ul>
  1658. <h4>AJDE for Forte</h4>
  1659. <h5>Installation</h5>
  1660. <ul>
  1661. <li>Use the installer to place the "ajdeForForte.jar" in Forte's
  1662. modules directory and "aspectjrt.jar"
  1663. in to Forte's lib/ext directory.</li>
  1664. <li>
  1665. In the "Tools" menu select "Global Options"</li>
  1666. <li>
  1667. Right-click the "Modules" item and select "New Module from
  1668. File..."</li>
  1669. <li>
  1670. Find the ajdeForForte.jar in the directory that you installed into (e.g.
  1671. c:\forte4j\modules) and
  1672. select it.</li>
  1673. </ul>
  1674. <h5>Key Improvements</h5>
  1675. <ul>
  1676. <li>AJDE can be toggled on/off with the "AJ" button--when it is turned off all
  1677. of the menus, resources, and event listeners that it uses will be removed.</li>
  1678. <li>The AJDE functionality is now contained within it's own toolbar and menu.</li>
  1679. </ul>
  1680. <h5>Known Bugs &amp; Limitations</h5>
  1681. <ul>
  1682. <li>"Mode" switching is not supported in this version--you must do all of your
  1683. AspectJ work in the "Editing" mode. If you switch modes the IDE has to
  1684. be restarted for the AspectJ window to show again.</li>
  1685. <li>There is no compiler progress dialog--the way to tell if the compile is
  1686. finished is to watch the "status" area of the main window.</li>
  1687. <li>There are no keyboard compile/execute shortcuts.</li>
  1688. <li>The structure view is not persistent between IDE launches--you must
  1689. compile to view the structure for a program.</li>
  1690. <li>The debugger has not seen much use and it's stability and performance is
  1691. limited.</li>
  1692. <li>There is no ajdoc tool support.</li>
  1693. <li>Linux testing has been very limited.</li>
  1694. </ul>
  1695. <h4>AJDE for Emacs</h4>
  1696. <p> AspectJ-mode now includes a toggle in the AspectJ menu that
  1697. disables its intrusive functions, enabling easy switching between Java
  1698. and AspectJ projects. See the README and CHANGES files in the
  1699. distribution for additional details. </p>
  1700. <p> AJDEE is now compatible with JDEE 2.2.7.1, JDEE 2.2.8beta4, and speedbar
  1701. 0.14alpha. It a toggle in the AspectJ menu that disables its intrusive
  1702. functions, enabling easy switching between Java and AspectJ projects. See
  1703. the README and CHANGES files in the distribution for additional details.
  1704. </p>
  1705. <hr />
  1706. </body>
  1707. </html>