| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> <head> |
| <meta http-equiv="Content-Language" content="en-us"> |
| <title>Changes in AspectJ</title> |
| <STYLE TYPE="text/css"> |
| <!-- |
| |
| /* FOR THE SDA PAGE */ |
| |
| /* |
| BODY {margin-top: 15px; margin-left: 15px; margin-right: 15px;} |
| */ |
| |
| A:link { |
| color:#4756AC; |
| } |
| A:visited { |
| color:#60657B; |
| } |
| A:hover { |
| color:red |
| } |
| |
| INPUT {font:12px "Courier New", sans-serif;} |
| |
| H2 { |
| font:18px/18px Verdana, Arial, Helvetica, sans-serif; |
| color:black; |
| font-weight:bold; |
| margin-left: 10px; |
| line-height:110%; |
| } |
| H3 { |
| font:17px/17px Verdana, Arial, Helvetica, sans-serif; |
| color:black; |
| //font-weight:bold; |
| margin-left: 10px; |
| line-height:110%; |
| } |
| H4 { |
| font:15px/16px Verdana, Arial, Helvetica, sans-serif; |
| color:black; |
| font-weight:bold; |
| margin-left: 10px; |
| line-height:140%; |
| } |
| P { |
| font:13px/13px Verdana, Arial, Helvetica, sans-serif; |
| margin-right: 10px; |
| margin-left: 10px; |
| line-height:130%; |
| } |
| .paragraph { |
| font:13px/13px Verdana, Arial, Helvetica, sans-serif; |
| margin-right: 10px; |
| margin-left: 10px; |
| line-height:130%; |
| } |
| .smallParagraph { |
| font:11px/11px Verdana, Arial, Helvetica, sans-serif; |
| margin-right: 10px; |
| margin-left: 10px; |
| line-height:130%; |
| } |
| LI { |
| font:13px/13px Verdana, Arial, Helvetica, sans-serif; |
| text-align:justify; |
| margin-right: 10px; |
| margin-left: 15px; |
| line-height:120%; |
| } |
| /* |
| UL { |
| font:13px/13px Verdana, Arial, Helvetica, sans-serif; |
| text-align:justify; |
| margin-right: 10px; |
| margin-left: 15px; |
| line-height:120%; |
| }*/ |
| |
| DL { |
| font:13px/13px Verdana, Arial, Helvetica, sans-serif; |
| text-align:justify; |
| margin-right: 10px; |
| margin-left: 15px; |
| line-height:120%; |
| } |
| B { font:13px/13px Verdana, Arial, Helvetica, sans-serif; |
| font-weight:bold; |
| line-height:140%; |
| } |
| .footer { |
| font:10px/10px Verdana, Arial, Helvetica, sans-serif; |
| color:#888888; |
| text-align:left |
| } |
| .figureTitle { |
| font:13px/13px Verdana, Arial, Helvetica, sans-serif; |
| text-align:justify; |
| text-align:center |
| } |
| .copyrightNotice { |
| font:10px/10px Verdana, Arial, Helvetica, sans-serif; |
| color:#999999; |
| line-height:110%; |
| } |
| .smallHeading { |
| font:13px/13px Verdana, Arial, Helvetica, sans-serif; |
| font-weight:bold; |
| line-height:110%; |
| } |
| .tinyHeading { |
| font:11px/11px Verdana, Arial, Helvetica, sans-serif; |
| font-weight:bold; |
| line-height:120%; |
| } |
| .newsText { |
| font:11px/11px Verdana, Arial, Helvetica, sans-serif; |
| line-height:130%; |
| } |
| .smallParagraph { |
| font:11px/11px Verdana, Arial, Helvetica, sans-serif; |
| line-height:130%; |
| } |
| .fancyHeading { |
| font:20px/20px Chantilly, Arial, Helvetica, sans-serif; |
| margin-right: 10px; |
| color:#6f7a92; |
| margin-left: 10px; |
| line-height:130%; |
| } |
| |
| --> |
| </STYLE> |
| </head> |
| <body> |
| |
| <div align=right><small> |
| © Copyright 1998-2002 Palo Alto Research Center Incorporated |
| 2003-2006 Contributors. |
| All rights reserved. |
| </small></div> |
| |
| <h2>Changes in AspectJ</h2> |
| |
| <ul> |
| |
| <li> <a href="#1.6.0m1">1.6.0m1</a> (released 2008-01)</li> |
| <li> <a href="#1.5.4">1.5.4</a> (released 2007-12)</li> |
| <li> <a href="#1.5.3">1.5.3</a> (released 2006-11)</li> |
| <li> <a href="#1.5.2">1.5.2</a> (released 2006-06)</li> |
| <li> <a href="#1.5.1">1.5.1</a> (released 2006-04)</li> |
| <li> <a href="#1.5.0">1.5.0</a> (released 2005-12)</li> |
| <li> <a href="#1.2.1">1.2.1</a> (released 2004-10)</li> |
| <li> <a href="#1.2">1.2</a> (released 2004-05) |
| </li> |
| <li> <a href="#1.1.1">1.1.1</a> (released 2003-09) |
| </li> |
| <li> 1.1.0 (released 2003-06-06) |
| See <a href="README-11.html">README-11.html</a> |
| </li> |
| |
| <li><a href="#1.0.6">1.0.6</a> (released 2002-07-24) |
| <ul> |
| <li><a href="#1.0.6compiler">Compiler</a></li> |
| <li><a href="#1.0.6ajde">AJDE</a></li> |
| <li><a href="#1.0.6ajdoc">Ajdoc</a></li> |
| </ul> |
| </li> |
| |
| <li><a href="#1.0.5">1.0.5</a> (released 2002-06-27) |
| </li> |
| |
| <li><a href="#1.0.4">1.0.4</a> (released 2002-04-17) |
| </li> |
| |
| <li><a href="#1.0.3">1.0.3</a> (released 2002-02-08) |
| </li> |
| <li><a href="#1.0.2">1.0.2</a> (released 2002-02-06) |
| </li> |
| <li><a href="#1.0.1">1.0.1</a> (released 2001-12-18) |
| </li> |
| <li><a href="#1.0.0">1.0.0</a> (released 2001-11-30) |
| </li> |
| <li><a href="#1.0rc3">1.0rc3</a> (released 2001-11-14) |
| </li> |
| <li><a href="#1.0rc2">1.0rc2</a> (released 2001-10-12) |
| </li> |
| <li><a href="#1.0rc1">1.0rc1</a> (released 2001-10-5) |
| </li> |
| <li><a href="#1.0beta1">1.0beta1</a> (released 2001-08-29) |
| </li> |
| <li><a href="#1.0alpha1">1.0alpha1</a> (released 2001-08-09) |
| </li> |
| <li><a href="porting.html">Porting and Transition</a></li> |
| </ul> |
| |
| <hr /> |
| |
| <h2><a name="1.6.0m1">1.6.0m1</a></h2> |
| <p>This release rebases AspectJ on the Eclipse Compiler version 785_R33X - making it Java6 compliant.</p> |
| |
| <h2><a name="1.5.4">1.5.4</a></h2> |
| <p>This release contains around 40 bug fixes and enhancements since the 1.5.3 release.</p> |
| |
| <p>A full list of bugs fixed and enhancements implemented can be found in |
| <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"/> |
| Bugzilla</a> |
| </p> |
| |
| <h2><a name="1.5.3">1.5.3</a></h2> |
| <p>This release contains around 80 bug fixes and enhancements since the 1.5.2 release.</p> |
| |
| <p>A full list of bugs fixed and enhancements implemented can be found in |
| <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"/> |
| Bugzilla</a> |
| </p> |
| |
| <h2><a name="1.5.2">1.5.2</a></h2> |
| <p>This release contains around 60 bug fixes and enhancements since the 1.5.1 release.</p> |
| |
| <p>A full list of bugs fixed and enhancements implemented can be found in |
| <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"/> |
| Bugzilla</a> |
| </p> |
| |
| <h2><a name="1.5.1">1.5.1</a></h2> |
| <p>This release contains over 70 bug fixes and enhancements since the 1.5.0 release.</p> |
| |
| <p>A full list of bugs fixed in AspectJ 5 can be found in |
| <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"/> |
| Bugzilla</a> |
| </p> |
| |
| <h2><a name="1.5.0">1.5.0</a></h2> |
| <p>This release contains nearly 400 bug fixes and enhancements since the 1.2.1 release. |
| Major updates to the language are documented in the |
| <a href="adk15notebook/index.html">AspectJ 5 Developer's Notebook</a>. There are |
| also a number of enhancements to accompanying tools documented in the |
| <a href="devguide/index.html">Developer's Guide</a> |
| </p> |
| |
| <p>A full list of bugs fixed in AspectJ 5 can be found in |
| <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>. |
| </p> |
| |
| <h2><a name="1.2.1">1.2.1</a></h2> |
| <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.2.1&bug_status=RESOLVED&resolution=FIXED">full list of fixes and |
| enhancements</a> can be found on bugzilla. |
| Some of the more significant bug fixes and enhancements include: |
| <ul> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=53981">53981</a> |
| Any occurence of proceed(..) within the body of around advice is treated as the |
| special proceed form (even if the aspect defines a method named proceed) unless |
| a target other than the aspect instance is specified as the recipient of the |
| call. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=48990">48990</a> |
| Optimisations added for the special cases of if(true) and if(false) in pointcut |
| expressions. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=69319">69319</a> |
| The Eclipse JDT compiler inside AspectJ has been upgraded to the Eclipse 3.0 release |
| version. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=61572">61572</a> |
| AspectJ 1.2.1 correctly detects an attempt to access instance variables of the |
| declaring aspect of an inter-type declared method from within the body of that |
| method. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=65319">65319</a> |
| Error message now correctly produced when attempting to bind a pointcut formal |
| in both a this() and a target() pointcut sub-expression. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=70619">70619</a> |
| Conflicting declare precedence statements are now handled gracefully. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=42573">42573</a> |
| Relative paths specified in .lst files are now resolved relative to the lst file |
| location. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=57666">57666</a> |
| Resource copying from jar files correctly handles duplicate manifests. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=61768">61768</a> |
| Static inner types of an aspect can now be referenced within the body of inter-type |
| declared methods in that aspect. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=62642">62642</a> |
| after-throwing advice on a static initialization join point no longer swallows |
| ExceptionInInitializer errors. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=67578">67578</a> |
| AspectJ 1.2.1 correctly handles privileged access to members defined in a different |
| package to the privileged aspect. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=67592">67592</a> |
| The Object[] given in response to a getArgs() call on a JoinPoint object is now |
| a value copy. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=68991">68991</a> |
| Initialisers of inter-type declared fields now have field-set join points. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=69459">69459</a> |
| A static inter-type method declaration is not allowed to hide an instance method. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=70794">70794</a> |
| An inter-type declaration of an abstract method on a target type which is an interface |
| must be declared as public. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=71372">71372</a> |
| Calls can be made to private static methods of enclosing types from the body of |
| around advice in an inner aspect. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=71377">71377</a> |
| Join points are now correctly detected for calls to private methods and set/get of |
| private fields within the body of around advice. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=71723">71723</a> |
| A non-privileged inter-type declared method cannot call protected methods defined in |
| parent classes of the target type. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=74238">74238</a> |
| Any privileged calls made by the AspectJ runtime library are now correctly |
| wrapped in doPrivileged blocks, with fall-back implementations, allowing |
| usage in restricted environments. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=74245">74245</a> |
| Specifying the -proceedOnError flag will now cause the compiler to attempt |
| weaving even in the face of errors. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=76030">76030</a> |
| Runtime optimisations for cflow (in the case where there are no arguments bound in |
| the cflow pointcut) have been implemented. This can dramatically speed-up some programs |
| making heavy use of cflow. Thanks to the abc compiler team for detecting this performance |
| related bug and for piloting the fix. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54421">54421</a> |
| String concatentation (using "+") is now allowed for the message associated with |
| a declare error or warning statement. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=69011">69011</a> |
| ajdoc now correctly handles types in the default package. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=36747">36747</a> |
| The 1.2.1 compiler supports an additional option, -showWeaveInfo, which will |
| produce informational messages concerning the activity of the weaver. For example: |
| </br> |
| <pre> |
| Type 'tjp.Demo' (Demo.java:30) advised by around advice from 'tjp.GetInfo' |
| (GetInfo.java:26) [RuntimeTest=true] |
| </pre> |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=44191">44191</a> |
| AspectJ 1.2.1 improves the error messages issued in many of the infamous "can't find type" |
| scenarios. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=46298">46298</a> |
| The code generated by ajc is now more easily digested by many decompilers (but you |
| wouldn't want to do that anyway would you?? ;) ). |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=49743">49743</a> |
| Performance optimisations in the AspectJ runtime library when using getSignature() and |
| toString(). |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=61374">61374</a> |
| AspectJ now includes its own version of BCEL under the org.aspectj namespace which eliminates |
| unwanted conflicts with BCEL versions inside JDKs or on classpaths in general. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=68494">68494</a> |
| ajdoc now supports ".aj" files. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=72154">72154</a> |
| The AspectJ 1.2.1 compiler includes the ability to dump information about the current state of the |
| compiler on failure. By default this only happens on an abort, but it can also be forced to |
| dump on error by specifying the property: org.aspectj.weaver.Dump.condition=error |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=37020">37020</a> |
| The line number locations for method execution and static initialization join points now give |
| the first line of the method declaration (rather than the line number of the first line of code in |
| the method body) when the source code is compiled by ajc. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=73369">73369</a> |
| A new jar, aspectjweaver.jar is included in the lib directory, which contains the subset |
| of aspectjtools.jar needed for weaving. The "aj" script is also moved into the bin directory. |
| </ul> |
| |
| |
| <h2><a name="1.2">1.2</a></h2> |
| <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.2">full list of fixes and |
| enhancements</a> can be found on bugzilla. |
| Some of the more significant bug fixes and enhancements include: |
| <ul> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=46347">46347</a> |
| The ajc compiler now can read .class files from directories as well as |
| zip files for bytecode weaving, via the new -inpath option. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=48080">48080</a> |
| Error and warning messages emitted as a result of a declare error or |
| declare warning statement now include context information that indicates |
| the matched join point. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54819">54819</a> |
| Error and warning messages coming from the weaving phase of compilation now |
| show source context wherever it is available, and also indicate as the source |
| location of the error either the class file or jar file from which the binary |
| source unit came. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=36430">36430</a> |
| A new -Xreweavable option has been added which allows class files to be woven |
| more than once. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=49250">49250</a> |
| SoftException now supports getCause(). |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=51320">51320</a> |
| AspectJ 1.2 now gives a compilation error if one of the non-statically determinable |
| pointcut forms is used in a declare statement. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=53012">53012</a> |
| Declaring precedence on a class type (rather than an aspect type) is now an |
| error unless subtypes are included. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=36069">36069</a> |
| The source information for inlined advice is now correct (using JSR 45). |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=34206">34206</a> |
| (See also <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=44587">44587</a>). |
| Errors occuring during static initialisation of an aspect are now handled much more gracefully. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41952">41952</a> |
| A new Xlint warning warns users specifying declaring type patterns in |
| call pointcut designators if the pointcut does not match at places they |
| may expect it to. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=42574">42574</a> |
| -extdirs opion now recognises .zip files as well as .jar. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=48091">48091</a> |
| New option -XlazyTjp defers creation of JoinPoint objects until just before |
| calling the advice body that requires them. This allows the cost of creating |
| JoinPoint objects to be avoided using an if() pointcut test that returns |
| false when the advice body is not required to be executed. Speed-ups of 10-100X are |
| obtained via this optimisation (as compared to putting the test inside the advice |
| body). |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=45441">45441</a> |
| IncompatibleClassChangeError at runtime when compiling with the -1.4 option. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54625">54625</a> |
| Incremental compilation did not support the -outjar option, but silently |
| failed if it was specified. AspectJ 1.2 always performs a full build when |
| the -outjar option is present. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54965">54965</a> |
| Incremental compilation under AspectJ 1.2 is approximately twice as fast as |
| under AspectJ 1.1.1. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=55134">55134</a> |
| Incremental compilation now deletes any additional class files generated during |
| the weave phase when the class file from whence they came is deleted. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54621">54621</a> |
| Incremental compilation will now detect changes (add, delete, modify) to class |
| files in directories on the inpath and will include them in incremental compilation. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54621">54621</a> |
| Incremental compilation will now detect changes to jars on the inpath (and injars), |
| and trigger a full build if a jar is modified. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54622">54622</a> |
| Incremental compilation will now detect changes to resources on the inpath. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54618">54618</a> |
| Incremental compilation will now detect changes to any of the paths affecting |
| compilation, and triggers a full build if there has been any change since the |
| last build. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=50200">50200</a> |
| The aspectjrt.jar manifest file now has the correct (upper) case. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=49457">49457</a> |
| No error given when overloading pointcuts, unless variables are bound. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=50776">50776</a> |
| Compilation failure when overriding an inter-type declared method with a |
| different throws clause. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=51919">51919</a> |
| Polymorphic inter-type declaration fails. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=52464">52464</a> |
| Declare warning coupled with inter-type declaration causes compiler crash. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41125">41125</a> |
| Variable names in the local variable table (for debugging) are now correctly |
| preserved in all cases. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=43792">43792</a> |
| Improved support for non-US locales (and significantly boosted weaver |
| performance at the same time). |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=35636">35636</a> |
| AspectJ 1.2 behaves much more gracefully when running out of memory. (It also |
| requires less memory than 1.1.1 did in any case). |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=42711">42711</a> |
| Super-types of parameters not recognised when calling priveleged methods. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=43972">43972</a> |
| (See also <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=45676">45676</a>). |
| Incorrectly adding synthetic attribute to generated methods. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=45184">45184</a> |
| External pointcut references not resolved when a named pointcut is used by a |
| declare statement. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=46750">46750</a> |
| Declare soft does not work inside a nested aspect. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=47754">47754</a> |
| No error signalled when attempting to declare a static method on an interface |
| using an inter-type declaration. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=48522">48522</a> |
| Declare soft softens all exceptions at matched join points, not just the |
| exception declared to be soft. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=49295">49295</a> |
| AspectJ 1.2 no longer supports inter-type constructor declarations on interfaces. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=51929">51929</a> |
| Call to a protected super-type method within a advice body causes java.lang.VerifyError. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=52928">52928</a> |
| Private members introduced via an interface are incorrectly visible within implementing classes. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=47910">47910</a> |
| An output jar file created by AspectJ when using the -outjar option does not contain a |
| valid manifest file. |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=59909">59909</a> |
| Thread local storage used to manage cflow stacks when available - improves cflow performance |
| when working with a multi-threaded application. |
| </li> |
| </ul> |
| |
| <h2><a name="1.1.1">1.1.1</a></h2> |
| |
| <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> |
| (49 in all) can be found on bugzilla.</p> |
| |
| <p>Some of the more significant bug fixes and enhancements in this release include: |
| <ul> |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=40943">40943</a> |
| The ajc compiler now copies resource files from jars specified using the |
| -injars option. When compiling with source directories, resources are <i>not</i> |
| copied - mirroring the behaviour of javac so as to cause minimum disruption |
| when switching between ajc and javac. |
| (To copy resources from source directories, use the iajc Ant task |
| <tt>sourceRootCopyFilter</tt> option.) |
| Thanks to Matthew |
| Webster for contributing many of the patches for this enhancement. |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=39626">39626</a> |
| ajc was erroneously putting aspectjtools.jar in the classpath of a compilation. |
| This caused problems when attempting to compile projects using different versions |
| of any of the classes in aspectjtools.jar. Thanks to George Harley and Igor |
| Hjelmstrom Vinhas Ribeiro for their assistance in tracking this down. |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=40257">40257</a> |
| Relative paths are now supported in ".lst" files. |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=40771">40771</a> |
| The Ajde apis are no longer coupled to swing. This is of most significance to AJDT |
| users on the Mac OS X platform, enabling AJDT to be used with Mac OS X. |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41254">41254</a> |
| Of interest to those writing tools that need to interact with the structure model for |
| AspectJ programs: the interface to the AspectJ structure model was significantly revised |
| and enhanced in 1.1.1. |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=39462">39462</a> |
| A compiler exception was thrown when an abstract aspect in a library was extended by |
| a concrete aspect using cflow. Thanks to Takao Naguchi for an easy to reproduce bug report. |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=39479">39479</a> |
| Compiler crashes when a constructor delegates to another constructor that uses a switch statement. |
| Thanks to Andy Clement for both the easy to reproduce bug report and the patch. |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41175">41175</a> |
| Declared exceptions were being lost on inter-type declarations made from binary |
| aspects in an aspect library. |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41359">41359</a> |
| Aspect per-clauses were not inherited by sub-aspects when using binary aspect libraries. |
| Thanks to Chris Bozic for the easy to reproduce bug report. |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=42539">42539</a> |
| The "+" pattern was being ignored for type patterns used in throws clauses. Thanks to |
| Keith Sader for the easy to reproduce bug report. |
| <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=40807">40807</a> |
| If you specify no output directory, the iajc Ant task now defaults to using |
| the source directory, following ajc and javac. |
| As a result, now you can use ajc to compile JSP's in Tomcat. |
| Thanks to Ron Bodkin for investigating how to integrate ajc with Tomcat. |
| </ul> |
| </p> |
| |
| <h2><a name="1.0.6">1.0.6</a></h2> |
| |
| <p> This release contains mainly bug fixes for ajde and ajdoc. |
| |
| <h3><a name="1.0.6compiler">Compiler</a></h3> |
| |
| <p>We fixed a bug with switch statements, thanks largely |
| to Jason Rimmer's diligence in helping us isolate the problem. |
| Also, to help Log4J parse stack traces, we changed class file |
| symbolic line references to use [] instead of () for the |
| virtual start lines of each file. |
| </p> |
| |
| <h3><a name="1.0.6ajde">AJDE</a></h3> |
| |
| <p><b>AJDE Framework, AJBrowser, and AJDE for Forte/NetBeans</b></p> |
| |
| <p>The memory use of the structure model has been streamlined in order to reduce |
| footprint when working with large systems. Error tolerance has also been |
| improved for dealing with a structure model that is out of synch with resources |
| on disk.</p> |
| |
| <h4>AJDE for JBuilder</h4> |
| |
| <p>JBuilder 7 is now supported. All known bugs have been fixed including:</p> |
| |
| <ul> |
| <li><a href="http://aspectj.org/bugs/resolved?id=787">787</a> |
| AJDE for JBuilder throws exception given non-existent file</li> |
| <li><a href="http://aspectj.org/bugs/resolved?id=788">788</a> |
| Label too small in error message </li> |
| <li><a href="http://aspectj.org/bugs/resolved?id=789">789</a> |
| Index-out-of-bounds exception in JBuilder AJDE </li> |
| <li><a href="http://aspectj.org/bugs/resolved?id=792">792</a> |
| Required libraries disappear from JBuilder 6 </li> |
| <li><a href="http://aspectj.org/bugs/resolved?id=795">795</a> |
| Unable to compile open tools </li> |
| <li><a href="http://aspectj.org/bugs/resolved?id=802">802</a> |
| AJDE loses current (cursor) position in file when switching files </li> |
| </ul> |
| |
| <p>In addition, thanks to user feedback that indicated trouble building JBuilder |
| OpenTools with AJDE/JBuilder, the OpenTool is now being built with itself. </p> |
| |
| <h3><a name="1.0.6ajdoc">Ajdoc</a></h3> |
| <ul> |
| <li>Fixed <a href="http://aspectj.org/bugs/resolved?id=790">790</a> |
| aspect code comments suppressed by fix to bug 710 |
| </li> |
| <li>Known problems: <a href="http://aspectj.org/bugs/ajdoc"> |
| http://aspectj.org/bugs/ajdoc |
| </a></li> |
| </ul> |
| |
| <hr /> |
| |
| <h2><a name="1.0.5">1.0.5</a></h2> |
| |
| |
| <p>This release includes significant improvements to AspectJ Development |
| Environment (AJDE) support. The entire user interface has been revised and |
| streamlined. The AJDE features are more tightly integrated into JBuilder and |
| NetBeans/Forte support. JBuilder support now includes graphical configuration |
| file editing and an integrated AspectJ Browser tool. </p> |
| |
| <ul> |
| <li><a href="#1.0.5compiler">Compiler</a></li> |
| <li><a href="#1.0.5ajde">AJDE</a></li> |
| <li><a href="#1.0.5ajdoc">Ajdoc</a></li> |
| <li><a href="#1.0.5anttasks">Ant tasks</a></li> |
| </ul> |
| |
| <h3><a name="1.0.5compiler">Compiler</a></h3> |
| |
| <p> This was another compiler release primarily concerned with fixing |
| corner cases in the language implementation. Our handling of nested |
| classes, the assert statement, and cflow were the principal offenders |
| this time. Thanks to Nicholas Alex Leidenfrost and Patrick Chan for |
| their clear and concise bug reports on some of these issues. </p> |
| |
| <h3><a name="1.0.5ajde">AJDE</a></h3> |
| |
| <h4><span style="font-weight: 400">This release includes significant |
| improvements to AspectJ Development Environment (AJDE) support. All known bugs |
| have been fixed, and the core framework quality has been significantly increased |
| thanks to the adoption of a unit test suite. The following changes apply |
| to all of the AJDE NetBeans/Forte, JBuilder, and the AspectJ Browser support. |
| NetBeans/Forte and JBuilder-specific changes are listed below. </span></h4> |
| |
| |
| <ul> |
| <li><span style="font-weight: 400">The entire user interface has been revised |
| and streamlined.</span></li> |
| <li>The structure view and browser have a new UI, and offer both a file-based |
| and global structure views. All views expose node ordering, node |
| filtering, and association filtering functionality. The global views |
| expose a package tree as well as the global inheritance and crosscutting |
| structure. </li> |
| <li>Structure view navigation now has a history exposed by back/forward.</li> |
| <li>The is a new build configuration management UI.</li> |
| <li>The compiler preferences UI now includes access to all build options.</li> |
| <li>Error messages have been improved, and the structure views include |
| annotations of nodes with errors and warnings.</li> |
| </ul> |
| |
| <h4>AJDE for JBuilder</h4> |
| |
| |
| <p>Integration into the JBuilder IDE is more streamlined. In addition:</p> |
| |
| |
| <ul> |
| <li>The AspectJ Browser is included as a tool that replaces JBuilder's |
| "Project View" and can be used to navigate the global structure of your system |
| (including the crosscutting and inheritance structure).</li> |
| <li>Inline structure annotations in the editor's gutter can now expose all of |
| the structure presented in the structure view, and can be used to navigate in |
| a similar way. Note that there are preferences for toggling which of |
| these appear.</li> |
| <li>Building is better integrated and the JBuilder build toolbar is removed |
| when AJDE is enabled.</li> |
| <li>Build configurations can be selected from the build button's menu.</li> |
| <li>Execution is better integrated: instead of a separate "run" button |
| JBuilder's run and debug can be used. Note that for new projects you |
| will need to use the "AspectJ Runtime" library, which will be added to your |
| preferences automatically.</li> |
| <li>A new graphical build configuration editor can be used by double-clicking |
| ".lst" files that have been added to the project. </li> |
| <li>Error messages now match JBuilder's look-and-feel and behavior. |
| Seeking to column numbers now works in addition to line numbers.</li> |
| </ul> |
| |
| |
| <h4>AJDE for Forte/NetBeans</h4> |
| |
| |
| <p>Integration into the NetBeans IDE is more streamlined. In addition:</p> |
| |
| |
| <ul> |
| <li>NetBeans 3.3.2 and SunONE Studio 4 are supported.</li> |
| <li>Multiple filesystems are supported.</li> |
| <li>Default project build configurations (all project files) are now |
| supported.</li> |
| <li>Build configurations can be selected in the tool bar.</li> |
| <li>Regular NetBeans execution and debugging is supported. Note that you |
| have to add netbeans/lib/ext/aspectjrt.jar file to your project configuration.</li> |
| <li>Class files are generated beside source files (NetBeans/javac default). |
| There is currently no way to specify a target directory.</li> |
| </ul> |
| |
| |
| <h4>AJBrowser</h4> |
| |
| |
| <ul> |
| <li>The browser now supports main class execution. Set the main class in |
| the options dialog, and make sure that both the Java executable is on your |
| path, and the class that you expect to execute on your classpath.</li> |
| <li>The error messages UI has been improved.</li> |
| </ul> |
| |
| |
| <h3><a name="1.0.5ajdoc">Ajdoc</a></h3> |
| <p>Bug fixes: |
| </p> |
| <ul> |
| <li><a href="http://aspectj.org/bugs/resolved?id=710">710 - |
| compiler-generated constructor shown with class comment |
| </a></li> |
| <li><a href="http://aspectj.org/bugs/resolved?id=712">712 - |
| comments lost in aspect docs for methods |
| or constructors declared on other types. |
| </a></li> |
| <li><a href="http://aspectj.org/bugs/resolved?id=719">719 - |
| poor support for @link, @see tags |
| </a></li> |
| <li><a href="http://aspectj.org/bugs/resolved?id=742">742 - |
| crash with @see tag |
| </a></li> |
| <li><a href="http://aspectj.org/bugs/resolved?id=751">751 - |
| error loading doclet resource |
| </a></li> |
| </ul> |
| |
| <h3><a name="1.0.5anttasks">Ant tasks</a></h3> |
| <p>Bug fixes: |
| </p> |
| <ul> |
| <li><a href="http://aspectj.org/bugs/resolved?id=730">730 - |
| document all supported ajc flags <a></li> |
| </ul> |
| |
| <hr /> |
| |
| <h2><a name="1.0.4">1.0.4</a></h2> |
| |
| <ul> |
| <li><a href="#1.0.4compiler">Compiler</a></li> |
| <li><a href="#1.0.4ajde">AJDE</a></li> |
| <li><a href="#1.0.4ajdoc">Ajdoc</a></li> |
| <li><a href="#1.0.4taskdefs">Ant taskdefs</a></li> |
| <li><a href="#1.0.4doc">Documentation</a></li> |
| </ul> |
| |
| <h3><a name="1.0.4compiler">Compiler</a></h3> |
| <ul> |
| <li>Over a dozen people independently reported a bug in error |
| handling for the wrong number number of arguments to |
| <code>proceed</code>. This has been turned into a nice error |
| message. A number of other bug reports related to around advice and |
| proceed have also been fixed, including the ability to change the |
| bindings for <code>this</code> and <code>target</code> using proceed |
| in around advice. |
| </li> |
| <li>David Walend gets the <em>black thumb</em> award for the most |
| bug reports submitted by a new user. His bug report on the |
| behavior of after returning advice led to some valuable clarifications |
| of this part of the language spec. |
| </li> |
| <li>A number of places where ajc didn't fully comply with the Java |
| Language Spec have been fixed in this release. Thanks to Neal |
| Gafter for reporting many of these. |
| </li> |
| </ul> |
| |
| <h4>Incompatible changes</h4> |
| |
| <p>Two potentially surprising incompatible changes have been made to |
| ajc in order to bring the compiler into compliance with the 1.0 |
| language design. These changes will be signalled by clear warning or |
| error messages at compile-time and will not cause any run-time |
| surprises. We expect most users to never notice these changes.</p> |
| |
| <ul> |
| <li>The obsolete class |
| <code>org.aspectj.lang.MultipleAspectsBoundException</code> has been |
| removed from aspectjrt.jar. This class had not been used since |
| AspectJ-0.8 and should have been removed prior to the 1.0 release. |
| It is not documented as part of the 1.0 language spec. This change |
| will cause a compile-time type not found error in any code that |
| refers to this exception.</code> |
| |
| <li>The compiler was not correctly implementing the AspectJ-1.0 |
| language design for some uses of after returning advice. This |
| compiler behavior was fixed, and advice whose behavior might be |
| changed by this bug fix will be highlighted with a compiler |
| warning. More information about some of these changes can be found |
| in the <a href="porting.html#pre-1.0.4">porting notes</a>.</li> |
| </ul> |
| |
| <h3><a name="1.0.4ajde">AJDE</a></h3> |
| |
| |
| <p>This is the first release of AJDE support with significant external |
| contribution. A big thanks goes out to Phil Sager for porting the AJDE for |
| Forte/NetBeans support to NetBeans 3.3.1 and improving the integration into |
| NetBeans.</p> |
| |
| |
| <h4>AJDE for JBuilder</h4> |
| |
| <ul> |
| <li>Updates<ul> |
| <li>This is a bug fix release only. </li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h4>AJDE for Forte/NetBeans</h4> |
| |
| <ul> |
| <li>Updates<ul> |
| <li>NetBeans 3.3.1 is now supported in addition to NetBeans 3.2 and Forte CE |
| 3.</li> |
| <li>Native NetBeans main class execution can now be used. After doing |
| a "Compile with AJC" browse to the main class in the "Filesystems" Explorer, |
| right-click the class and select "Execute". </li> |
| <li>The debugger can now be used if the project main class is set ("Project" |
| menu -> "Set Project Main Class...").</li> |
| <li>Numerous bugs have been fixed.</li> |
| </ul> |
| </li> |
| <li>Known limitations<ul> |
| <li>Breakpoint setting does not work in the debugger.</li> |
| <li>In the "Filesystems" Explorer red Xs appear on files with AspectJ source |
| code. The "AspectJ" Explorer understands the structure of AspectJ |
| projects and should be used for navigating structure instead.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h4>AJDE for Emacs</h4> |
| |
| |
| <ul> |
| <li>This is a bug fix release only.</li> |
| </ul> |
| |
| |
| <h3><a name="1.0.4ajdoc">Ajdoc</a></h3> |
| <p>Ajdoc now runs under J2SE 1.4, but still requires the tools.jar |
| from J2SE 1.3 be on the classpath. |
| </p> |
| |
| <h3><a name="1.0.4taskdefs">Ant tasks</a></h3> |
| <ul> |
| <li>Repackaged to fit into the AspectJ product directory - e.g., |
| <code>aspectj-ant.jar</code> moved to <code>lib</code> |
| as expected by <code>examples/build.xml</code>. |
| </li> |
| <li>Fixed bugs, esp. <a href="http://aspectj.org/bugs/resolved?id=682">682</a>: |
| Throw BuildException if failonerror and ajdoc detects misconfiguration. |
| </li> |
| </ul> |
| <h3><a name="1.0.4doc">Documentation</a></h3> |
| <p>Added a 1-page quick reference guide. Improved javadoc documentation for |
| the org.aspectj.lang package. |
| </p> |
| |
| |
| <hr/> |
| |
| <h2><a name="1.0.3">1.0.3</a></h2> |
| |
| <ul> |
| <li><a href="#1.0.3compiler">Compiler</a></li> |
| <li><a href="#1.0.3taskdefs">Ant taskdefs</a></li> |
| </ul> |
| |
| <h3><a name="1.0.3compiler">Compiler</a></h3> |
| <p> This release fixes a single significant bug in 1.0.2 where ajc |
| could generate unreachable code in <code>-usejavac</code> or |
| <code>-preprocess</code> mode. This would happen when around advice |
| was placed on void methods whose body consisted solely of a |
| <code>while (true) {}</code> loop. We now properly handle the |
| flow-analysis for this case and generate code that is acceptable to |
| javac. Thanks to Rich Price for reporting this bug. |
| </p> |
| |
| <h3><a name="1.0.3taskdefs">Ant taskdefs</a></h3> |
| <p>Added support to the Ajc taskdef for the -source 1.4 and -X options generally. |
| </p> |
| |
| <hr /> |
| |
| <h2><a name="1.0.2">1.0.2</a></h2> |
| |
| <p> This release is mainly about keeping up with the Joneses. To keep |
| up with SUN's release candidate for J2SE1.4, we now officially support |
| the new 1.4 assertions and running on the 1.4 VM. In honor of the |
| public review of JSR-45 Debugging Support for Other Languages we |
| implement this spec for AspectJ. We support Borland's recent release |
| of JBuilder 6, and since some of our users are starting to work on Mac |
| OSX, AJDE now works nicely on this platform. We also fixed almost all of |
| the bugs you reported in 1.0.1. |
| </p> |
| |
| <ul> |
| <li><a href="#1.0.2compiler">Compiler</a></li> |
| <li><a href="#1.0.2ajde">AJDE</a></li> |
| <li><a href="#1.0.2ajdb">AJDB</a></li> |
| </ul> |
| |
| <h3><a name="1.0.2compiler">Compiler</a></h3> |
| |
| <ul> |
| <li>Official support for <code>-source 1.4</code> option to compile new |
| <a href="http://java.sun.com/j2se/1.4/docs/guide/lang/assert.html">1.4 assertions</a>. |
| This makes ajc completely compatible with j2se-1.4. |
| </li> |
| <li>Implementation of <a href="http://jcp.org/jsr/detail/45.jsp"> |
| JSR-45 Debugging Support for Other Languages</a> so that debuggers which |
| correctly implement this specification will be able to accurately debug |
| any AspectJ program at a source code level. We are not currently |
| aware of any debuggers that implement this so far, but expect that |
| as j2se-1.4 becomes widely available this will change. |
| </li> |
| <li>As proposed by Arno Schmidmeier and seconded by Nick Lesiecki, we now have an |
| experimental <code>-Xlint</code> option that will provide warnings when |
| type patterns used in pcds have no bindings. We are very interested in |
| feedback on the usefulness and suggested improvements for this feature. |
| </li> |
| <li>Several significant bugs in the implementation of around advice have been fixed. |
| These include issues with <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=632"> |
| dynamic tests</a>, with |
| <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=620"> |
| complicated local types in an around body</a>, and with |
| <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=636"> |
| capturing proceed in a closure</a>. |
| </li> |
| <li>All but two (<a href="http://aspectj.org/jitterbug/aspectj-bugs/compiler?id=626">1</a>, |
| <a href="http://aspectj.org/jitterbug/aspectj-bugs/compiler?id=645">2</a>) |
| verified bugs in 1.0.1 have been fixed. The two outstanding bugs |
| have relatively easy work-arounds. Thanks as usual to everyone who |
| submitted a bug report. |
| </li> |
| <li>We no longer use the <code>SYNTHETIC</code> attribute to label declarations |
| added by the aspectj compiler. We were using this attribute in compliance |
| with <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#80128"> |
| the JVM Specification</a>; however, we've found that many tools expect |
| this attribute to only be used for the narrow purpose of implementing |
| Java's inner classes and that using it for other synthetic members can confuse |
| them. This led to problems both |
| <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=649">with javap</a> and |
| <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=646">with javac</a>. |
| </li> |
| <li>Changes required adding runtime classes, so please compile and run using the latest |
| <code>aspectjrt.jar</code> |
| </li> |
| |
| </ul> |
| |
| <h3><a name="1.0.2ajde">AJDE</a></h3> |
| |
| <p align="left">This is a bug fix release only. </p> |
| |
| <ul> |
| <li> |
| |
| <p align="left">Thanks to Dave Yost and Matt Drance for submitting the AJDE |
| patches for Mac OSX (context popup menus and keyboard shortcuts did not work). </p> |
| |
| </li> |
| <li> |
| |
| <p align="left">Bugs in history navigation (back-forward buttons in the |
| structure view) have been fixed.</p> |
| |
| </li> |
| <li> |
| |
| <p align="left">"Declares" are now handled properly in the structure view.</p> |
| |
| </li> |
| <li> |
| |
| <p align="left">Other GUI and usability improvements have been made the AspectJ |
| Browser and core framework.</p> |
| |
| </li> |
| </ul> |
| |
| <h4>AJDE for JBuilder</h4> |
| |
| |
| <ul> |
| <li>Support has been extended to JBuilder 6, and support for Enterprise |
| version features has been improved.</li> |
| <li>Fixed bug causing inline source code annotations in the editor pane to not |
| be updated after a recompile.</li> |
| <li>Keyboard shortcuts were fixed to work with Mac OSX.</li> |
| </ul> |
| |
| |
| <h4>AJDE for Forte</h4> |
| |
| |
| <ul> |
| <li>Keyboard shortcuts were fixed to work with Mac OSX.</li> |
| </ul> |
| |
| <h4><a name="1.0.2ajdb">AJDB</a></h4> |
| |
| <p> Some minor bug fixes, but this is still early-access software. |
| Please try using another JPDA-compliant debugger. If it uses |
| JDI correctly, then it should navigate to line numbers |
| when the classes are run under J2SE1.4, based on |
| the new JSR-45 debugging support described above. |
| We would appreciate any reports of success or failure. |
| </p> |
| |
| <hr /> |
| |
| <h2><a name="1.0.1">1.0.1</a></h2> |
| |
| <ul> |
| <li><a href="#1.0.1compiler">Compiler</a></li> |
| <li><a href="#1.0.1ajde">AJDE</a></li> |
| <li><a href="#1.0.1ajdb">AJDB</a></li> |
| </ul> |
| |
| <h3><a name="1.0.1compiler">Compiler</a></h3> |
| |
| <p> This release fixes a significant performance issue in the |
| compiler, reported by Rich Price, that could lead to extremely long |
| compiles in systems with many aspects and classes. Several other |
| small bugs related to reporting compilation errors have also been |
| fixed, see <a |
| href=http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=610>this |
| bug report</a> for an example. |
| </p> |
| |
| <p> A new experimental flag has been added, |
| <code>-XaddSafePrefix</code>, that will cause the prefix |
| <code>aspectj$</code> to be inserted in front of all methods generated |
| by ajc. This mode should be helpful when using aspectj with tools |
| that do reflection based on method names, such as EJB tools. Thanks |
| to Vincent Massol for pointing out the importance of this. It is |
| expected that this prefix will either become the default compiler |
| behavior in the future or a non-experimental flag will replace it. |
| </p> |
| |
| |
| <h3><a name="1.0.1ajde">AJDE</a></h3> |
| |
| <p align="left">Minor bug fixes, including: AJDE for JBuilder failed to preserve |
| application parameters from project settings when executing the application.</p> |
| |
| <p align="left">Source builds were cleaned up for JBuilder and Forte sources.</p> |
| |
| <h3><a name="1.0.1ajdb">AJDB</a></h3> |
| |
| <p>Two bugs were reported and have been fixed in this release. |
| (Note that ajdb is still considered early-access software.)</p> |
| |
| <ul> |
| <li>bug 611: NullPointerException dumping non-primitive values</li> |
| <li>bug 617: -X and -D options not passed to debug VM correctly</li> |
| </ul> |
| |
| <h2><a name="1.0.0">1.0.0</a></h2> |
| |
| <ul> |
| <li><a href="#1.0.0language">Language</a></li> |
| <li><a href="#1.0.0compiler">Compiler</a></li> |
| <li><a href="#1.0.0ajde">AJDE</a></li> |
| <li><a href="#1.0.0ajdoc">AJDoc</a></li> |
| <li><a href="#1.0.0taskdefs">Ant taskdefs</a></li> |
| </ul> |
| |
| <h2><a name="1.0.0language">Language</a></h2> |
| |
| <p>There were no language changes for this release.</p> |
| |
| <h2><a name="1.0.0compiler">Compiler</a></h2> |
| |
| <p>Several minor bugs primarily in error handling were reported and |
| have been fixed in this release. The two most serious bugs are |
| described below:</p> |
| |
| <ul> |
| <li>Niall Smart and Stephan Schmidt reported related bugs (variants |
| of which are also produced by other compilers) that caused verify |
| errors when dealing with nested try-finally and synchronized |
| statements. These are now fixed. More details are available |
| <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=601"> |
| here</a> and |
| <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=595"> |
| here</a> |
| </li> |
| |
| <li>Jan Hannemann submitted a <a |
| href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=600"> |
| succint and clear bug report</a> for a difficult intermittant bug. |
| The bug led to the compiler sometimes generating illegal code when |
| introduced methods on a class overrode introduced methods on an |
| interface implemented by that class. This is now fixed.</li> </ul> |
| |
| <h2><a name="1.0.0ajde">AJDE</a></h2> |
| |
| <p align="left">Numerous user interface refinements were made to the browser and |
| core AJDE functionality. Error handling and reporting has been improved. |
| All of the AJDE tools now support the ".aj" file extension.</p> |
| |
| <h4>AJDE for JBuilder</h4> |
| |
| |
| <ul> |
| <li>The AspectJ Browser now uses JBuilder's icons and distinguishes nodes by |
| visibility.</li> |
| <li>Project-setting VM parameters are now supported by the "AJDE Run" button.</li> |
| </ul> |
| |
| |
| <h4>AJDE for Forte</h4> |
| |
| |
| <ul> |
| <li>The AspectJ Browser now uses Forte's icons and distinguishes nodes by |
| visibility</li> |
| </ul> |
| |
| |
| <h4>AJBrowser</h4> |
| |
| |
| <ul> |
| <li>Documentation for the browser is now available at |
| <a href="http://aspectj.org/docs">http://aspectj.org/docs</a> </li> |
| </ul> |
| |
| |
| <h4>Emacs Support: aspectj-mode and AJDEE</h4> |
| |
| <ul> |
| <li>Improved updating of annotations during editing.</li> |
| <li>Pop-up jump menu now placed (with mouse pointer) near cursor.</li> |
| <li>[AJDEE only] Improved filtering of legal code completions.</li> |
| </ul> |
| |
| <h4><a name="1.0.0ajdoc">AJDoc</a></h4> |
| |
| <ul> |
| <li>Runs only in J2SE 1.3 - not 1.2 or 1.4. |
| You can document 1.x-reliant programs by using the options |
| to compile using 1.x libraries.</li> |
| <li>Disabled some non-functioning options, documented as |
| <code>unsupported</code> in the syntax message.</li> |
| </ul> |
| |
| <h4><a name="1.0.0taskdefs">Ant taskdefs</a></h4> |
| <ul> |
| <li>Fork is not supported in the AJDoc taskdef</li> |
| </ul> |
| |
| <h2><a name="1.0rc3">1.0rc3</a></h2> |
| |
| <h2><a name="1.0rc3language">Language</a></h2> |
| |
| <p>There have been several minor clarifications/changes to the |
| language.</p> |
| |
| <ul> |
| <li>Thanks to Robin Green for suggesting that we could relax the |
| rules for inheriting multiple concrete members in order to allow |
| those unambiguous cases where one member has already overridden the |
| other. <a href=http://aspectj.org/pipermail/users/2001/001289.html> |
| More details...</a></li> |
| |
| <li>Ron Bodkin encouraged us to examine the details of privileged |
| aspects more closely. This led to several small improvements and |
| clarifications to this language feature. |
| <a href=http://aspectj.org/pipermail/users/2001/001258.html> More |
| details...</a></li> |
| </ul> |
| |
| <h2><a name="1.0rc3compiler">Compiler</a></h2> |
| |
| <p>This release saw several changes to the compiler in order to |
| work-around known bugs in different JVMs, or to otherwise mimic the |
| behavior of javac rather than necessarily following the Java Language |
| Specification.</p> |
| |
| <ul> |
| <li>Hanson Char reported a bug where ajc's correctly generated |
| bytecodes for some references to interface fields result in verify |
| errors on certain JVMs. While this is a known bug in those JVMs, |
| we've modified ajc to be bug compatible with all the other Java |
| compilers out there to work-around this JVM bug. |
| <a href=http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=551> |
| More details...</a></li> |
| |
| <li>Frank Hunleth discovered a similar bug where ajc's correct |
| bytecodes could lead to essentially random method dispath due to a |
| bad bug in the 1.3.0 JVM from Sun. Even though this bug was fixed |
| in the 1.3.1 and 1.2.2 JVMs, we have introduced the appropriate |
| work-around in ajc's code generation. <a |
| href=http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=580>More |
| details...</a></li> |
| |
| <li>Thomas Haug (as well as several other members of his group) |
| reported a problem with name binding where ajc was behaving |
| differently than javac. This problem was resolved to come from a |
| class created by an obfuscator that conflicted with his package |
| names. The JLS doesn't clearly specify which of these two behaviors |
| is correct. Nevertheless, ajc has been changed to treat packages |
| more like javac does in order to minimize this sort of problem in |
| the future. <a |
| href=http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=574> More |
| details...</a></li> |
| |
| <li>Several "real" bugs in ajc were also reported and fixed. Toby |
| Allsopp gets credit for reporting two of them. The most interesting |
| of these bugs to me was his report that we just didn't support |
| qualified anonymous inner constructors. This is a part of the Java |
| language that ajc has never supported over its almost 3 year |
| history. We'd just noticed this ourselves when running the jacks |
| compiler test suite from the jikes group, and had added the feature |
| days before getting our first bug report for it not being |
| there.</li> |
| </ul> |
| |
| <h2><a name="1.0rc3ajde">AJDE</a></h2> |
| |
| <ul> |
| <li>The structure view has been improved. </li> |
| <li>Multiple user-configurable views are supported.</li> |
| <li>Structure tree filtering and ordering has been added. </li> |
| <li>A split tree mode has been added to permit the navigation of multiple |
| views on the same structure. </li> |
| <li>The view can also be toggled between a file-based and a system-based mode |
| which determines whether the root of the structure tree is the current file or |
| the project root. </li> |
| <li>The signatures of tree nodes have been improved and several new node |
| associations are now navigable. </li> |
| <li>A depth slider for controlling tree-expansion has been added.</li> |
| </ul> |
| |
| <h4>AJDE for JBuilder</h4> |
| |
| |
| <ul> |
| <li>Changes:</li> |
| <li>Inline annotations support have been improved and made consistent with the |
| structure tree (annotations only show up for intra-declaration structure).</li> |
| <li>The current structure view persists across IDE launches.</li> |
| <li>An enabled AJDE no longer slows down JBuilder shutdown.</li> |
| </ul> |
| |
| |
| <h4>AJDE for Forte</h4> |
| |
| |
| <ul> |
| <li>Execution remembers main class.</li> |
| <li>The bug causing an error during a "Mode" and "Explorer" switch has been |
| fixed.</li> |
| </ul> |
| |
| |
| <h4>AJBrowser</h4> |
| |
| |
| <ul> |
| <li>AJBrowser is currently an undocumented demonstration application. To use |
| it type: ajbrowser <lst file1> <lst file2> ...</li> |
| <li>Multiple source locations can be shown by selecting multiple nodes and |
| right-clicking to select the "Display Sources" command.</li> |
| </ul> |
| |
| |
| <h4>Emacs Support: aspectj-mode and AJDEE</h4> |
| |
| <ul> |
| <li>Numerous jump-menu improvements, including operation of pop-ups.</li> |
| <li>For AJDEE, compatibility with JDEE 2.2.9beta4. Also, fixes in completion, |
| ajdoc launch, and speedbar.</li> |
| </ul> |
| |
| <h3><a name="1.0rc3ajdoc">AJDoc</a></h3> |
| |
| <p>Some of the more obvious NullPointerException bugs in Ajdoc were fixed, but |
| Ajdoc does not implement all the functionality of Javadoc and has some bugs:</p> |
| <ul> |
| <li>Split indexes do not work correctly</li> |
| <li>Inner classes are not listed in indexes </li> |
| <li>Synthetic methods are documented</li> |
| <li>There is no package frame even when packages are specified on the command line</li> |
| <li>-group option is not implemented</li> |
| <li>-use targets are not all calculated correctly</li> |
| <li>Exception information may not be printed for the @throws tag</li> |
| <li>Verbose output should go to stderr, not stdout</li> |
| <li>Extra links are generated (should be unlinked text) </li> |
| </ul> |
| <p>Further, Ajdoc has not been testing on variants of the J2SE (it uses javadoc classes). |
| |
| <h3><a name="1.0rc3taskdefs">Ant taskdefs</a></h3> |
| <p>The Ajc taskdef was updated to support the new compiler options and the .aj extension, |
| and some NullPointerException bugs were fixed (thanks to Vincent Massol for a bug |
| report listing the line number of the fix). The AJDoc cannot be run repeatedly |
| in a single Ant run, and has trouble loading the doclet unless the libraries |
| are installed in ${ant.home}/lib. |
| <p> |
| <hr /> |
| <h2><a name="1.0rc2">1.0rc2</a></h2> |
| |
| <ul> |
| <li><a href="#1.0rc2language">Language</a></li> |
| <li><a href="#1.0rc2compiler">Compiler</a></li> |
| <li><a href="#1.0rc2ajde">AJDE</a></li> |
| </ul> |
| |
| <h2><a name="1.0rc2language">Language</a></h2> |
| |
| <p>There are no language changes in this release. This is a bug fix release |
| only.</p> |
| |
| <h2><a name="1.0rc2compiler">Compiler</a></h2> |
| |
| <p>A bug in handling inner type names that conflict with enclosing |
| type names was fixed. Many error messages were improved.</p> |
| |
| <h2><a name="1.0rc2ajde">AJDE</a></h2> |
| |
| <ul> |
| <li>This is a bug fix release only.</li> |
| </ul> |
| |
| <h4>AJDE for JBuilder</h4> |
| |
| <ul> |
| <li>Changes:<ul> |
| <li>Fixed bug causing the output path to be ignored and .class files to be |
| generated into the JBuilder install's "bin" directory.</li> |
| <li>Fixed bugs in Browser listener causing NullPointerExceptions to be thrown |
| if no node editor was present.</li> |
| <li>Fixed bug permitting "-bcg" option to be passed to the compiler.</li> |
| <li>Fixed bug preventing ajc from compiling all of the project source files |
| when automatic package discovery was on (JBuilder Proffessional and Enterprise |
| editions).</li> |
| <li>If the "-preprocess" flag is used resulting source files will be placed in |
| the project's "Working directory".</li> |
| </ul> |
| |
| </li> |
| <li>Limitations:<ul> |
| <li>"Automatic package discovery" mode is not supported in this release.</li> |
| <li>The debugger has not seen much use and it's stability and performance is |
| limited.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h4>AJDE for Forte</h4> |
| |
| <ul> |
| <li>Changes:<ul> |
| <li>Moved the "AspectJ" menu into the "Tools" menu in order to make it less |
| intrusive.</li> |
| <li>Added a "ctrl-alt-shift-F9" keyboard compile shortcut.</li> |
| </ul> |
| |
| </li> |
| <li>Limitations:<ul> |
| <li>Known bug: "Mode" switching is not supported in this version--you must |
| do all of your AspectJ work in the "Editing" mode. If you switch modes the |
| IDE has to be restarted for the AspectJ window to show again. Switching to a |
| different tab in the ProjectExplorer has the same effect.</li> |
| <li>The debugger has not seen much use and it's stability and performance is |
| limited.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h4>AJBrowser</h4> |
| |
| <ul> |
| <li>Changes:<ul> |
| <li>...</li> |
| </ul> |
| |
| </li> |
| <li>Limitations:<ul> |
| <li>AJBrowser is currently an undocumented demonstration application. To use |
| it type:<br> |
| > ajbrowser <lst file1> <lst file2> ...</li> |
| </ul> |
| |
| </li> |
| </ul> |
| |
| <h4>Emacs Support: aspectj-mode and AJDEE</h4> |
| |
| <p align="left"> This release now properly displays annotations for call sites and |
| introductions. Robustness has been improved in several dimensions, |
| including performance at startup. The compile menu now recomputes |
| properly when changing directories.</p> |
| |
| <hr /> |
| |
| <h2><a name="1.0rc1">1.0rc1</a></h2> |
| |
| <ul> |
| <li><a href="#1.0rc1language">Language</a></li> |
| <li><a href="#1.0rc1compiler">Compiler</a></li> |
| <li><a href="#1.0rc1ajde">AJDE</a></li> |
| </ul> |
| |
| <h2><a name="1.0rc1language">Language</a></h2> |
| |
| <p>Some of the details of the specification for perthis and pertarget |
| have changed. These changes make these language constructs |
| implementable on current JVMs without memory leaks (this wasn't true |
| of the previous version). Most people will probably not notice these |
| changes, but the correct semantics are described in |
| <a href="progguide/semantics.html">the semantics section of the programming |
| guide</a>. |
| </p> |
| |
| <p>In a related change, aspects are not allowed to implement either |
| the <code>java.io.Serializable</code> or the |
| <code>java.lang.Cloneable</code> interface. It is unclear what the |
| correct behavior of a system should be when an aspect is serialized or |
| cloned, and rather than make an arbitrary choice right now we've |
| chosen to leave the most room to design them right in a future |
| release.</p> |
| |
| <h2><a name="1.0rc1compiler">Compiler</a></h2> |
| |
| <p>ajc now directly generates .class files without using javac as a |
| back-end. This should result in improved compiler performance, better |
| error messages and better stack-traces and debugging info in those |
| .class files. -preprocess mode is still available for those who want |
| to generate legal Java source code and a new -usejavac mode is |
| available if you have a requirement to continue to use javac as a |
| back-end.</p> |
| |
| <p>ajc now officially supports source files with the .aj extension. |
| We plan to extend this support to the rest of our tools as time |
| permits. |
| </p> |
| |
| <p>This release of ajc includes support for the "-source 1.4" option |
| that enables the new 'assert' keyword in jdk1.4. This option only |
| works correctly when compiling against the jdk1.4 libraries. In |
| addition, this release of ajc will run under SUN's jdk1.4beta2. |
| However, we still strongly recommend that most users use the non-beta |
| jdk1.3.</p> |
| |
| <h2><a name="1.0rc1ajde">AJDE</a></h2> |
| |
| <ul> |
| <li>The structure view can now be configured (using the "Options" dialog) to |
| display different kinds of associations between program elements that appear |
| in the tree.</li> |
| <li>Structure view history navigation has been added. </li> |
| <li>When navigating links the structure view will stay synchronized with the |
| editor.</li> |
| </ul> |
| |
| <h4>AJDE for JBuilder</h4> |
| |
| <ul> |
| <li>Changes:<ul> |
| <li>Inline structural navigation annotations appear in the gutter of the |
| editor and can be used to navigate associations such as advice and |
| introduction.</li> |
| </ul> |
| |
| </li> |
| <li>Limitations:<ul> |
| <li>"Automatic package discovery" mode is not supported in this release.</li> |
| <li>The debugger has not seen much use and it's stability and performance is |
| limited.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h4>AJDE for Forte</h4> |
| |
| <ul> |
| <li>Changes:<ul> |
| <li>Support for Forte 3 and Netbeans 3.2 has been added.</li> |
| <li>The module is now installed by default on the first use without having to |
| go to the IDE options to enable it.</li> |
| </ul> |
| |
| </li> |
| <li>Limitations:<ul> |
| <li>Known bug: "Mode" switching is not supported in this version--you must |
| do all of your AspectJ work in the "Editing" mode. If you switch modes the |
| IDE has to be restarted for the AspectJ window to show again. Switching to a |
| different tab in the ProjectExplorer has the same effect.</li> |
| <li>The debugger has not seen much use and it's stability and performance is |
| limited.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h4>AJBrowser</h4> |
| |
| <ul> |
| <li>Changes:<ul> |
| <li>Build configuration file editor added.</li> |
| </ul> |
| |
| </li> |
| <li>Limitations:<ul> |
| <li>AJBrowser is currently an undocumented demonstration application. To use |
| it type:<br> |
| > ajbrowser <lst file1> <lst file2> ...</li> |
| </ul> |
| |
| </li> |
| </ul> |
| |
| <h4>Aspectj-mode and AJDEE: AspectJ support in Emacs</h4> |
| |
| <p align="left">This release of AspectJ support for Emacs includes corrections to the |
| documentation and the appearance of annotations and jumps in the editing |
| view. Also, advice are now shown on non-declarations, when appropriate, |
| such as call advice. The internal event model has been revised to reduce |
| computational overhead. </p> |
| |
| <hr /> |
| |
| <h2><a name="1.0beta1">1.0beta1</a></h2> |
| |
| <ul> |
| <li><a href="#1.0beta1language">Language</a></li> |
| <li><a href="#1.0beta1compiler">Compiler</a></li> |
| <li><a href="#1.0beta1ajbrowser">AJBrowser</a></li> |
| <li><a href="#1.0beta1ajde">AJDE</a></li> |
| </ul> |
| |
| <h2><a name="1.0beta1language">Language</a></h2> |
| |
| <p>There is one language change since 1.0alpha1. The static modifier is |
| no longer needed or allowed on pointcut declarations. Name binding |
| for pointcut declarations works like class methods now. Thanks to |
| Robin Green for encouraging us to look at this one last time.</p> |
| |
| <p>The current implementation of perthis/pertarget has the possibility of |
| memory leaks (thanks to Arno Schmidmeier for pointing this out). The |
| design of this part of the language will almost certainly see some |
| changes in the next release to address issues of implementability on |
| the JVM as well as related issues.</p> |
| |
| <h2><a name="1.0beta1compiler">Compiler</a></h2> |
| |
| <p>The ajc compiler should now catch all errors in source code and you |
| should no longer see errors coming from files in 'ajworkingdir'. |
| Please report any errors in 'ajworkingdir' as bugs.</p> |
| |
| <p>All reported bugs in 1.0alpha1 have been fixed. Thanks to everyone |
| for your bug reports. Most notably, the 'if' pcd that was added in |
| 1.0alpha1 should work correctly in this release. Thanks to Morgan |
| Deters for a very thorough bug report on this broken feature days |
| after the 1.0alpha1 release.</p> |
| |
| <h2><a name="1.0beta1ajbrowser">AJBrowser</a></h2> |
| |
| <ul> |
| <li>Support for executing classes has been added.</li> |
| <li>.lst can now be passed as arguments on the command line.</li> |
| <li>Compiler options can be set.</li> |
| <li>Know limitations:<ul> |
| <li>In order to execute classes they must be available on the classpath that |
| the browser is launched with.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h2><a name="1.0beta1ajde">AJDE</a></h2> |
| |
| <ul> |
| <li>The performance and UI of the structure tree has been improved.</li> |
| <li>Compilation now runs in a separate thread and a progress monitor is |
| updated during the compile.</li> |
| <li>The structure view now persists across IDE launches.</li> |
| <li>Limitations:<ul> |
| <li>If an error occurs in the javac pass it will not display properly in the |
| error messages pane. To view the error you have check the output of the |
| console that the IDE was launched from. No more errors should be passed |
| to javac, so please report this behavior and the corresponding error message |
| as a bug.</li> |
| </ul> |
| |
| </li> |
| </ul> |
| |
| <h4>AJDE for JBuilder</h4> |
| |
| <ul> |
| <li>Known bugs have been fixed.</li> |
| <li>Classpath separator character is no longer hardcoded.</li> |
| <li>Keyboard shortcuts for compilation (ctrl-F11) and execution (ctrl-F12) |
| have been added.</li> |
| <li>Limitations:<ul> |
| <li>The debugger has not seen much use and it's stability and performance is |
| limited.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h4>AJDE for Forte</h4> |
| |
| <ul> |
| <li>Known bugs have been fixed.</li> |
| <li>Limitations:<ul> |
| <li>"Mode" switching is not supported in this version--you must do all of your |
| AspectJ work in the "Editing" mode. If you switch modes the IDE has to |
| be restarted for the AspectJ window to show again.</li> |
| <li>There are no keyboard compile/execute shortcuts.</li> |
| <li>The debugger has not seen much use and it's stability and performance is |
| limited.</li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h4>Aspectj-mode and AJDEE: AspectJ support in Emacs</h4> |
| |
| <p> AspectJ Development Environment for Emacs has been split into two pieces, |
| aspectj-mode (an extension of java-mode), and AJDEE (an extension of JDE). |
| Additionally, a switch, -emacssym, has been added to ajc that generates |
| AspectJ declarations information directly, thus beanshell is no longer |
| required for use of these modes. |
| </p> |
| |
| <hr /> |
| |
| <h2><a name="1.0alpha1">1.0alpha1</a></h2> |
| |
| <p> This is the first alpha release of the 1.0 language and tools. |
| There have been many changes in the language, and many improvements to |
| the tools. We wish to thank our users for putting up with the high |
| volatility of AspectJ in the push to 1.0. </p> |
| |
| <ul> |
| <li><a href="#1.0alpha1language">Language</a></li> |
| <li><a href="#1.0alpha1compiler">Compiler</a></li> |
| <li><a href="#1.0alpha1documentation">Documentation</a></li> |
| <li><a href="#1.0alpha1ajdoc">AJDoc</a></li> |
| <li><a href="#1.0alpha1ant">Ant</a></li> |
| <li><a href="#1.0alpha1ajbrowser">AJBrowser</a></li> |
| <li><a href="#1.0alpha1ajde">AJDE</a></li> |
| </ul> |
| |
| <h3><a name="1.0alpha1language">Language</a></h3> |
| |
| <p> There have been many changes to make the 1.0 language both simpler |
| and more powerful. User feedback has driven most of these design |
| changes. Each email we've received either making a suggestion or just |
| asking a question about a confusing part of the language has played a |
| part in shaping this design. We'd like to thank all of our users for |
| their contributions. |
| |
| <p>While we don't have room to thank all of our users by name, we'd |
| like to specifically mention a few people for their high-quality |
| sustained contributions to the users@aspectj.org mailing list as well |
| as through their feature requests and bug reports. Robin Green |
| (who'll be very happy to see <code>declare error</code>), Stefan |
| Hanenberg (who should appreciate the '+' wildcard in type patterns), |
| and Rich Price (who suggested final pointcuts, more flexible |
| dominates, and many other improvements).<p> |
| |
| <p> Note that entries into the <a href="porting.html">porting |
| notes</a> for this release are linked from the various language |
| changes. </p> |
| |
| <h4>Pointcuts</h4> |
| |
| <p> Perhaps the least interesting -- but most pervasive -- change is |
| that the names of the single-kinded pointcut designators (the ones |
| that pick out only one kind of join point) </p> |
| |
| <blockquote>calls executions gets sets handlers initializations |
| staticinitializations</blockquote> |
| |
| <p> have been |
| <a href="porting.html#1.0a1-plural-to-singular">changed</a> to be |
| singular rather than plural nouns </p> |
| |
| <blockquote>call execution get set handler initialization |
| staticinitialization</blockquote> |
| |
| <p> Although a side benefit is that the names are one character |
| shorter, the real benefit is that their combination with the |
| <CODE>&&</CODE> and <code>||</code> operators now reads much |
| more naturally. No longer does "and" mean "or" and "or" mean "and". |
| </p> |
| |
| <p> You'll notice that <code>receptions</code> doesn't appear on the |
| table as being shortened to <code>reception</code>. That's because |
| call and reception join points have been merged, and the |
| <code>receptions</code> pointcut declaration has been |
| <a href="porting.html#1.0a1-remove-receptions">eliminated</a>. Now, |
| <code>call</code> join points describe the action of making a call, |
| including both the caller and callee. Eliminating reception join |
| points makes AspectJ much simpler to understand (reception join points |
| were a commonly misunderstood feature) without giving up expressive |
| power.</p> |
| |
| <p> We have <a href="porting.html#1.0a1-fixing-state-access">changed |
| the mechanism for accessing state</a> at join points, which has the |
| benefit of making our treatment of signatures |
| <a href="porting.html#1.0a1-no-subs-in-sigs">cleaner</a> and easier to |
| read. As a part of this, the <code>instanceof</code> pointcut |
| designator has now been |
| <a href="porting.html#1.0a1-fixing-instanceof">split into two |
| different pointcut designators</a>, <code>this</code> and |
| <code>target</code>, corresponding to a join point's currently |
| executing object and target object, respectively. </p> |
| |
| <p> The new <code>args</code> pointcut adds expressive power to the |
| language by allowing you to capture join points based on the actual |
| type of an argument, rather than the declared type of its formal. So |
| even though the <code>HashSet.removeAll</code> method takes a |
| <code>Collection</code> as an argument, you can write advice that only |
| runs when it is actually passed a <code>HashSet</code> object. </p> |
| |
| <p> AspectJ's notion of object construction and initialization, a |
| complicated process in Java, has been clarified. This affects some |
| uses of the |
| <a href="porting.html#1.0a1-initializations">initializations |
| pointcut</a> and |
| <a href="porting.html#1.0a1-constructor-calls">constructor calls</a> |
| pointcut. </p> |
| |
| <p> The little-used pointcuts |
| <a href="porting.html#1.0a1-hasaspect"><code>hasaspect</code></a> and |
| <a href="porting.html#1.0a1-withinall"><code>withinall</code></a> have |
| been removed. </p> |
| |
| <p> The <code>returns</code> keyword is |
| <a href="porting.html#1.0a1-user-defined-returns">no longer |
| necessary</a> for user-defined pointcuts. </p> |
| |
| <p> Pointcuts may now be declared <code>static</code>, and |
| <a href="porting.html#1.0a1-static-pointcuts">only static |
| pointcuts</a> may be declared in classes and referred to with |
| qualified references (such as <code>MyAspect.move()</code>). </p> |
| |
| <p> Non-abstract pointcuts may now be declared <code>final</code>. |
| </p> |
| |
| <p> We have finally added an extremely general pointcut, |
| <code>if(<var>BooleanExpression</var>)</code>, that picks out |
| join points programatically. </p> |
| |
| |
| <h4>Type patterns</h4> |
| |
| <p> Our treatment of |
| <a href="porting.html#1.0a1-new-wildcards">* and ..</a> in type |
| patterns is cleaner. </p> |
| |
| <p> Type patterns now have the ability to include array types, and |
| there is a new wildcard, +, to pick out all subtypes of a given type. |
| Previously, the subtypes operator was only allowed in introduction, |
| and was <a href="porting.html#1.0a1-subtypes-to-plus">spelled |
| differently</a>. </p> |
| |
| <h4>Advice</h4> |
| |
| <p> Around advice is treated much more like a method, with a |
| <a href="porting.html#1.0a1-around-returns">return value</a> and an |
| optional <a href="porting.html#1.0a1-around-throws">throws clause</a>. |
| </p> |
| |
| <p> The advice precedence rules have been |
| <a href="porting.html#1.0a1-advice-precedence">changed</a>. Now, for |
| example, a piece of after advice that appears lexically later than |
| another piece of after advice will run later, as well. Previously, |
| the relationship was the other way around, which caused no small |
| amount of confusion. </p> |
| |
| <p> After returning advice has lost a |
| <a href="porting.html#1.0a1-after-returning">useless set of |
| parentheses</a> when not using the return value. </p> |
| |
| <p> The <code>thisStaticJoinPoint</code> reflective object has been |
| <a href="porting.html#1.0a1-this-static-join-point">renamed</a>, and |
| the <code>thisJoinPoint</code> object hierarchy has been |
| <a href="porting.html#1.0a1-this-join-point">simplified</a>. </p> |
| |
| <h4>Introduction and static crosscutting</h4> |
| |
| <p> On the static side of the language, introduction hasn't changed, |
| but there is now a new keyword, <code>declare</code>, that is used to |
| declare various statically-crosscutting properties. One of these |
| properties is subtyping, so we've |
| <a href="porting.html#1.0a1-plus-implements-extends">gotten rid of</a> |
| the ugly keywords <code>+implements</code> and |
| <code>+extends</code>. </p> |
| |
| <p> We have provided two new forms, <code>declare error</code> and |
| <code>declare warning</code>, for the often-asked-for property of |
| compile-time error detection based on crosscutting properties. </p> |
| |
| <p> AspectJ's interaction with checked exceptions is now firmly on the |
| side of static crosscutting, since Java treats such exceptions at |
| compile-time. A new form, <code>declare soft</code>, can be used to |
| "soften" checked exceptions into an unchecked form. This may affect |
| some uses of <a href="porting.html#1.0a1-now-use-soft">around |
| advice</a> that previously mucked with the exception checking |
| system.</p> |
| |
| <h4>Aspects</h4> |
| |
| <p> The "of each" modifiers have been |
| <a href="porting.html#1.0a1-aspects">renamed</a>. Apart from the |
| spelling, the main interesting difference is the splitting up of |
| <code>of eachobject</code> into two different modifiers, parallel with |
| the split of <code>instanceof</code> into <code>this</code> and |
| <code>target</code>. </p> |
| |
| <p> The <code>dominates</code> keyword now takes a type pattern, |
| rather than a type. This allows an aspect A, for example, to declare |
| that its advice should dominate the advice of another aspect B as well |
| as its subtypes, with the new + subtypes operator: <code>aspect A |
| dominates B+</code>. |
| </p> |
| |
| <h3><a name="1.0alpha1compiler">Compiler</a></h3> |
| |
| <p> The most important change in the compiler is that it supports the |
| new language. In addition, all reported bugs in the last release have |
| been fixed. Thanks for your bug reports.</p> |
| |
| <p>The compiler also gets a new <code>-encoding</code> flag in this |
| release for handling source files that are not in standard US-ASCII |
| format. Thanks to Nakamura Tadashi for both suggesting this feature |
| and for submitting a nice patch to implement it. |
| |
| <h4>Known Limitations</h4> |
| |
| <p> The previous compiler's limitations regarding join points that |
| occurred in anonymous classes have all been eliminated. |
| Unfortunately, eliminating this restriction has resulted in |
| preprocessed source code that is less readable than in previous |
| releases. More care will be taken in the next release to mitigate |
| this effect. </p> |
| |
| <p> Many semantic errors are not caught by ajc but fall through to |
| javac. Moreover, some errors regarding the initialization of final |
| fields might never show up when using ajc. This will be fixed |
| shortly. </p> |
| |
| |
| <h3><a name="1.0alpha1documentation">Documentation</a></h3> |
| |
| <p> Although we spent much of our time this release cycle updating the |
| documentation to the new language rather than improving its content, |
| we did make some structural improvements. The old <cite>Primer</cite> has been |
| split into a <cite>Programming Guide</cite>, covering the language, and a |
| <cite>Development Environment Guide</cite>, covering the develompent tools. In |
| addition, printable versions of both guides (in PDF) are finally |
| included in the documentation package. </p> |
| |
| <h3><a NAME="1.0alpha1ajdoc">Ajdoc</a></h3> |
| |
| <p> Ajdoc was rewritten to conform with the language changes and provide support |
| for other AspectJ/Java compilers. Our doclet is used by default creating |
| AspectJ-specific documentation, or Sun's standard doclet can be used by |
| passing the '-standard' flag to Ajdoc to produce regular Javadoc documentation |
| (excluding AspectJ-specifics). |
| </p> |
| |
| <h3><a NAME="1.0alpha1ant">Ant</a></h3> |
| |
| <p> An Ajdoc task is now available. The Ajc ant task was improved to |
| be completely back-compatible with the Javac task.</p> |
| |
| <h3><a NAME="1.0alpha1ajbrowser">AJBrowser</a></h3> |
| |
| <p> The "AspectJ Browser" is a new standalone source code browsing application. |
| It will let you compile ".lst" files, view the structure for those files and |
| navigate the corresponding source code.</p> |
| |
| <h3><a name="1.0alpha1ajde">AJDE</a></h3> |
| |
| <h4>AJDE for JBuilder</h4> |
| |
| <h5>Installation</h5> |
| <ul> |
| <li>Use the installer to place the "ajdeForJBuilder.jar" and "aspectjrt.jar" |
| in to JBuilder's lib/ext directory.</li> |
| </ul> |
| |
| <h5>Key Improvements</h5> |
| |
| <ul> |
| <li>The "AspectJ Structure View" replaces JBuilder's structure view instead of |
| being launched in a separate window.</li> |
| <li>AJDE can be toggled on/off with the "AJ" button--when it is turned off all |
| of the menus, resources, and event listeners that it uses will be removed.</li> |
| <li>Projects no longer require the manual adding of the "aspectjrt.jar" |
| libarary.</li> |
| </ul> |
| |
| <h5>Known Bugs & Limitations</h5> |
| |
| <ul> |
| <li>There is no compiler progress dialog--the way to tell if the compile is |
| finished is to watch the "status" area of the main window.</li> |
| <li>There are no keyboard compile/execute shortcuts.</li> |
| <li>The structure view is not persistent between IDE launches--you must |
| compile to view the structure for a program.</li> |
| <li>The debugger has not seen much use and it's stability and performance is |
| limited.</li> |
| <li>There is no ajdoc tool support.</li> |
| <li>Linux testing has been very limited.</li> |
| </ul> |
| |
| |
| <h4>AJDE for Forte</h4> |
| |
| |
| <h5>Installation</h5> |
| |
| <ul> |
| <li>Use the installer to place the "ajdeForForte.jar" in Forte's |
| modules directory and "aspectjrt.jar" |
| in to Forte's lib/ext directory.</li> |
| <li> |
| In the "Tools" menu select "Global Options"</li> |
| <li> |
| Right-click the "Modules" item and select "New Module from |
| File..."</li> |
| <li> |
| Find the ajdeForForte.jar in the directory that you installed into (e.g. |
| c:\forte4j\modules) and |
| select it.</li> |
| </ul> |
| |
| <h5>Key Improvements</h5> |
| |
| <ul> |
| <li>AJDE can be toggled on/off with the "AJ" button--when it is turned off all |
| of the menus, resources, and event listeners that it uses will be removed.</li> |
| <li>The AJDE functionality is now contained within it's own toolbar and menu.</li> |
| </ul> |
| |
| <h5>Known Bugs & Limitations</h5> |
| |
| <ul> |
| <li>"Mode" switching is not supported in this version--you must do all of your |
| AspectJ work in the "Editing" mode. If you switch modes the IDE has to |
| be restarted for the AspectJ window to show again.</li> |
| <li>There is no compiler progress dialog--the way to tell if the compile is |
| finished is to watch the "status" area of the main window.</li> |
| <li>There are no keyboard compile/execute shortcuts.</li> |
| <li>The structure view is not persistent between IDE launches--you must |
| compile to view the structure for a program.</li> |
| <li>The debugger has not seen much use and it's stability and performance is |
| limited.</li> |
| <li>There is no ajdoc tool support.</li> |
| <li>Linux testing has been very limited.</li> |
| </ul> |
| |
| <h4>AJDE for Emacs</h4> |
| |
| <p> AspectJ-mode now includes a toggle in the AspectJ menu that |
| disables its intrusive functions, enabling easy switching between Java |
| and AspectJ projects. See the README and CHANGES files in the |
| distribution for additional details. </p> |
| |
| <p> AJDEE is now compatible with JDEE 2.2.7.1, JDEE 2.2.8beta4, and speedbar |
| 0.14alpha. It a toggle in the AspectJ menu that disables its intrusive |
| functions, enabling easy switching between Java and AspectJ projects. See |
| the README and CHANGES files in the distribution for additional details. |
| </p> |
| |
| |
| <hr /> |
| |
| </body> |
| </html> |