| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> | 
 | <html> <head> | 
 | <title>AspectJ 1.2.1 Readme</title> | 
 | <style type="text/css"> | 
 | <!-- | 
 |   P   { margin-left:  20px; } | 
 |   PRE { margin-left:  20px; } | 
 |   LI  { margin-left:  20px; } | 
 |   H4  { margin-left:  20px; } | 
 |   H3  { margin-left:  10px; } | 
 | --> | 
 | </style> | 
 | </head> | 
 |  | 
 | <body> | 
 | <div align="right"><small> | 
 | © Copyright 2004 Contributors. | 
 | All rights reserved. | 
 | </small></div> | 
 |  | 
 | <h1>AspectJ 1.2.1 Readme</h1> | 
 |  | 
 | <p>AspectJ 1.2.1 is largely a bug-fix release and the definition of the  | 
 | 	AspectJ language is unchanged from the 1.2.0 release (with the exception | 
 | 	that AspectJ 1.2.1 permits the use of the '+' operator to concatenate | 
 | 	the messages for declare error and warning statements). | 
 | This document describes the tools differences between AspectJ versions 1.2 and 1.2.1. | 
 | Users familiar with AspectJ 1.2 may find this document | 
 | a quicker way to learn what changed in the tools. | 
 | </p> | 
 |  | 
 | <p>This document summarizes changes in: | 
 | <ul> | 
 | 	<li>Weaver messages</li> | 
 | 	<li>Dump support</li> | 
 | 	<li>JDT Compiler version</li> | 
 | 	<li>Line number information for join points</li> | 
 | 	<li>Runtime performance</li> | 
 | 	<li>String concatentation in declare error and warning statements</li> | 
 | 	<li>Load-time weaving support</li> | 
 | 	<li>Use of aspect libraries generated by ajc 1.2.1 with earlier versions of ajc</li> | 
 | </ul>	 | 
 | 	 | 
 | </p> | 
 | <p> | 
 | 	See the <a href="changes.html">changes document</a> for more details, or | 
 | 	<a href="#allchanges">all the changes</a> as detailed in the bugzilla  | 
 | 	database. | 
 | </p> | 
 |  | 
 | <h2>Weaver Informational Messages</h2> | 
 | <p>  | 
 | 	The AspectJ 1.2.1 compiler can produce informational messages about the | 
 | 	weaving process. To see these messages, use the -showWeaveInfo compiler | 
 | 	option, or set showweaveinfo=true in the iajc ant task. | 
 | </p>	 | 
 | <p>The following is an example of the messages produced when this option is enabled:</p> | 
 | <pre> | 
 | 	C:\aspectj1.2.1\doc\examples\tjp>ajc -showWeaveInfo *.java | 
 |  | 
 |     Type 'tjp.Demo' (Demo.java:20) advised by around advice from 'tjp.GetInfo'  | 
 |     (GetInfo.java:26) [RuntimeTest=true] | 
 |  | 
 |     Type 'tjp.Demo' (Demo.java:30) advised by around advice from 'tjp.GetInfo'  | 
 |     (GetInfo.java:26) [RuntimeTest=true] | 
 |  | 
 |     Type 'tjp.Demo' (Demo.java:34) advised by around advice from 'tjp.GetInfo'  | 
 |     (GetInfo.java:26) [RuntimeTest=true] | 
 | </pre> | 
 |  | 
 | <h2>Dump Support</h2> | 
 | <p>In the event of a compiler crash, AspectJ 1.2.1 will produce a dump file giving | 
 | 	important information about the state of the compiler at the time of the crash.  | 
 | 	These dump files should enable us to analyze problems more effectively. In the | 
 | 	rare event that you witness a compiler crash, please attach the dump file to  | 
 | 	the bug report.</p> | 
 | <p>In addition to producing a dump file when an abort condition is detected, the | 
 | 	AspectJ 1.2.1 compiler can also be requested to create a dump file on detection | 
 | 	of a compilation error. Set the property org.aspectj.weaver.Dump.condition=error to | 
 | 	enable this behaviour.</p> | 
 |  | 
 | <h2>JDT Compiler Version</h2> | 
 | <p>AspectJ 1.2.1 is based on the Eclipse 3.0 final JDT compiler.</p> | 
 |  | 
 | <h2>Line Number Information for Join Points</h2> | 
 | <p>For source files compiled by ajc (as opposed to binary inputs to the compiler | 
 | 	compiled with some other java compiler), ajc now emits better line number information | 
 | 	for execution join points. In particular, for a method, constructor or advice | 
 | 	execution join point (as matched for example by a declare error or declare warning | 
 | 	statement), ajc 1.2.1 reports the first line number of the declaration, | 
 | 	as opposed to the line number of the first line of code in the body. </p> | 
 |  | 
 | <h2>Runtime Performance</h2> | 
 | <p>AspectJ 1.2.1 contains a small number of runtime performance optimisations, including | 
 | 	optimisations of if(true) and if(false) pointcut expressions, caching of getSignature() | 
 | 	and toString() results on JoinPoint objects, and an optimised implementation of cflow.</p> | 
 | 	<p>In the case where there are no arguments bound in | 
 |      the cflow pointcut, programs compiled under AspectJ 1.2.1 and that make | 
 |      heavy use of cflow will run significantly faster. Thanks to the abc compiler team  | 
 |      for detecting this performance related bug and for piloting the fix. </p> | 
 |  | 
 | <h2>String Concatentation in Declare Error/Warning Statements</h2> | 
 | <p>String concatentation in declare error and warning statements is now supported.  | 
 | 	For example, you can write:</p> | 
 | 	<pre> | 
 | 		declare warning : jdbcCall() && !inDataLayer() | 
 | 		                : "Please don't make calls to JDBC " + | 
 | 		                  "outside of the data layer."; | 
 | 	</pre> | 
 | 	 | 
 | <h2>Load-time Weaving Support</h2> | 
 | <p> | 
 | 	The AspectJ 1.2.1 distribution contains a new jar in the lib directory, | 
 | 	aspectjweaver.jar, that contains the subset of aspectjtools.jar needed | 
 | 	for weaving only. This jar may be used in situations where you wish to | 
 | 	exploit AspectJ's binary weaving capabilities, but do not want the full | 
 | 	aspectjtools.jar around (aspectjweaver.jar is approx. 5 times smaller). | 
 | </p> | 
 | <p> | 
 | 	In addition, the load-time weaving "aj" script which was included in the | 
 | 	doc/examples/ltw directory in the 1.2 distribution has been moved into | 
 | 	the regular bin directory. See <a href="README-12.html">README-12</a> for | 
 | 	details of using this script. | 
 | </p> | 
 |  | 
 | <h2>Binary Compatibility</h2> | 
 | <p>AspectJ 1.2.1 introduces a backwards-incompatible change to the class | 
 | 	file format generated by the AspectJ compiler. Classes generated by | 
 | 	ajc v1.2.1 cannot be used on the inpath or aspectpath of a weaver from | 
 | 	a prior version of the compiler. Classes generated by prior versions of | 
 | 	the compiler can of course be placed on the inpath or aspectpath of the | 
 | 	1.2.1 weaver.</p> | 
 | <p> | 
 | 	As ever, you should use the AspectJ runtime library (aspectjrt.jar) that  | 
 | 	comes with the distribution you used to build your application. | 
 | </p> | 
 | <hr/> | 
 |  | 
 |  | 
 | 	<a name="allchanges"></a> | 
 | 	<h2>All changes are listed in the bug database</h2> | 
 | 	For a complete list of changes in the 1.2.1 release, search for  | 
 | 	<code>target 1.2.1</code> in the bug database: | 
 | 	<a href="https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&component=Compiler&target_milestone=1.2.1"> | 
 | 		https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&target_milestone=1.2.1&bug_status=RESOLVED&resolution=FIXED | 
 | 	</a> | 
 |    | 
 | </body> </html> |