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.adoc 66KB

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