1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046
|
<!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-2008 Contributors.
All rights reserved.
</small></div>
<h2>Changes in AspectJ</h2>
<ul>
<li> <a href="#1.6.0">1.6.0</a> (released 2008-04)</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.0">1.6.0</a></h2>
<p>This release rebases AspectJ on the Eclipse Compiler version 785_R33X - making it Java6 compliant.</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&short_desc_type=allwordssubstr&short_desc=&product=AspectJ&target_milestone=1.6.0+M1&target_milestone=1.6.0+M2&target_milestone=1.6.0+RC1&target_milestone=1.6.0&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">Bugzilla</a>.
</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>
|