--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+
+<head>
+<title>AspectJ 1.9.8 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 2021 Contributors. All rights reserved.</small></div>
+
+<h1>AspectJ 1.9.8</h1>
+
+<p>
+ Please note that Bugzilla for issue management is deprecated and new issues should be filed as
+ <a href="https://github.com/eclipse/org.aspectj/issues/new">GitHub issues</a>.
+ The list of issues addressed for 1.9.8 can be found
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.8">here for Bugzilla</a>
+ and <a href="https://github.com/eclipse/org.aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.8">here for GitHub issues</a>.
+</p>
+
+<h2>New features</h2>
+
+<p>
+ AspectJ 1.9.8 supports <a href="https://openjdk.java.net/projects/jdk/17/">Java 17</a> and its final and preview
+ features, such as:
+</p>
+<ul>
+ <li>sealed classes (final in Java 17, previews in Java 15, 16 and AspectJ 1.9.7)</li>
+ <li>pattern matching for switch</li>
+</ul>
+<p>
+ For features marked as preview on a given JDK, you need to compile with <tt>ajc --enable-preview</tt> and run with
+ <tt>java --enable-preview</tt> on that JDK.
+</p>
+<p>
+ Please note that you cannot run code compiled with preview features on any other JDK than the one used for
+ compilation. For example, records compiled with preview on JDK 15 cannot be used on JDK 16 without recompilation. This
+ is a JVM limitation unrelated to AspectJ. Also, e.g. sealed classes are preview-1 on JDK 15 and preview-2 on JDK 16.
+ You still need to recompile, no matter what.
+</p>
+<p>
+ Furthermore, the <tt>--release N</tt> compiler option for correct cross-compilation to previous JDK bytecode + API
+ versions is now supported by AJC. Previously, the option existed (inherited by ECJ) but did not work correctly.
+</p>
+
+<h3>Code examples</h3>
+
+<p>
+ You can find some sample code in the AspectJ test suite under the respective AspectJ version in which the features
+ were first supported (possibly as JVM preview features):
+</p>
+<ul>
+ <li>
+ <a href="https://github.com/eclipse/org.aspectj/tree/master/tests/features198/compiler_release">
+ Cross-compilation to legacy JDK
+ </a>:
+ An example class which only works correctly on JDK 8 when compiled with <tt>--release 8</tt> due to API changes in
+ the JDK. Simply <tt>-source 8 -target 8</tt> would not be enough in this case.</li>
+ <li>
+ <a href="https://github.com/eclipse/org.aspectj/tree/master/tests/features198/java17">
+ Pattern matching for switch
+ </a>
+ </li>
+</ul>
+
+<h2>Using LTW on Java 16+</h2>
+
+<p>
+ Please note that if you want to use load-time weaving on Java 16+, the weaving agent collides with
+ <a href="https://openjdk.java.net/jeps/396">JEP 396 (Strongly Encapsulate JDK Internals by Default)</a>. Therefore,
+ you need to set the JVM parameter <tt>--add-opens java.base/java.lang=ALL-UNNAMED</tt> in order to enable aspect
+ weaving. This is due to the fact that the weaver uses internal APIs for which we have not found an adequate
+ replacement yet when defining classes in different classloaders.
+</p>
+
+<h2>Other changes and bug fixes</h2>
+
+<ul>
+ <li>
+ The AspectJ compiler no longer works on JDK 8-10. The minimum compile-time requirement for AspectJ is JDK 11 due
+ to upstream changes in the Eclipse Java Compiler (subset of JDT Core), which AspectJ is a fork of. You can still
+ compile to legacy target versions as low as Java 1.3, but the compiler itself (and probably also the load-time
+ weaver) needs JDK 11.
+ </li>
+ <li>Document build profiles and properties in <i>docs/developer/BUILD.md</i></li>
+ <li>Add a guide for setting up an AspectJ development environment in <i>docs/developer/IDE.md</i></li>
+ <li>Allowed JAR saving if <tt>-proceedOnError</tt> is specified</li>
+</ul>
+
+<p>
+ Available: 1.9.8 available DD-MMM-2021
+</p>
+
+</body>
+
+</html>
-<html>
+<html>
<head>
<title>AspectJ Documentation and Resources</title>
</head>
-<body>
+<body>
<a name="top"></a>
<h1>AspectJ Documentation and Resources</h1>
-<p/>
+<p/>
AspectJ <sup><small>tm</small></sup>
- is a seamless aspect-oriented extension to
+ is a seamless aspect-oriented extension to
Java<sup><small>tm</small></sup>.
- The compiler and development tools are available under
+ The compiler and development tools are available under
an open-source license, require Java 1.3 to run, and produce
- code that runs in JDK 1.1 and later VM's.
+ code that runs in JDK 1.1 and later VM's.
For the latest materials, see
<a href="http://eclipse.org/aspectj">http://eclipse.org/aspectj</a>.
Not all of these materials have been updated for AspectJ 5.
<table>
<tr><td><u>Section</u></td><td><u>Contents</u></td></tr>
<tr><td><a href="#documentation">docs</a></td><td>
- <a href="faq.html">FAQ</a>,
+ <a href="faq.html">FAQ</a>,
<a href="quick5.pdf">Quick Reference (AspectJ 5)</a>,
- <a href="quick.pdf">Quick Reference (1.2.1)</a>,
+ <a href="quick.pdf">Quick Reference (1.2.1)</a>,
<a href="adk15notebook/index.html">AspectJ 5 Developer's Notebook</a>,
- <a href="progguide/index.html">programming</a>,
- <a href="devguide/index.html">development</a> and
- <a href="pdguide/index.html">problem diagnosis</a> guides,
+ <a href="progguide/index.html">programming</a>,
+ <a href="devguide/index.html">development</a> and
+ <a href="pdguide/index.html">problem diagnosis</a> guides,
<a href="runtime-api/index.html">API</a> and
<a href="examples/">example code</a>.
</td></tr>
- <tr><td><a href="#distributions">distributions</a></td><td>
+ <tr><td><a href="#distributions">distributions</a></td><td>
<a href="http://eclipse.org/aspectj">AspectJ</a>;
- development environment support for
- <a href="http://eclipse.org/ajdt">Eclipse</a>
+ development environment support for
+ <a href="http://eclipse.org/ajdt">Eclipse</a>
and
- <a href="https://jdeveloperaop.dev.java.net/">JDeveloper</a>.
+ <a href="https://jdeveloperaop.dev.java.net/">JDeveloper</a>.
</td></tr>
<tr><td><a href="#resources">resources</a></td><td>
<a href="http://aosd.net">aosd.net</a>;
<a href="http://eclipse.org/aspectj">AspectJ project</a>
the bug <a href="http://bugs.eclipse.org/bugs">db</a>,
- and mailing lists for
+ and mailing lists for
<a href="mailto:aspectj-users@eclipse.org">users</a> and
<a href="mailto:aspectj-dev@eclipse.org">developers</a>.
</td></tr>
<a name="documentation"></a>
<h3>AspectJ documentation</h3>
<table border="1">
-<tr> <th>Documentation</th><th>Description</th>
+<tr> <th>Documentation</th><th>Description</th>
</tr>
<tr> <td><a href="quick5.pdf"> AspectJ 5 Quick Reference</a>
</td>
- <td>This is a four-page quick reference for the AspectJ 5 language.
+ <td>This is a four-page quick reference for the AspectJ 5 language.
</td> </tr>
<tr> <td><a href="quick.pdf"> AspectJ Quick Reference</a>
</td>
- <td>This is a two-page quick reference for the AspectJ language.
+ <td>This is a two-page quick reference for the AspectJ language.
</td> </tr>
<tr> <td><a href="adk15notebook/index.html">AspectJ 5 Developer's Notebook</a>
(printable <a href="adk15notebook/printable.html">html</a>)
</td>
<td>This describes the changes to the AspectJ language and tools introduced
- in the AspectJ 5 Development Kit. These changes are additive, and are not yet
+ in the AspectJ 5 Development Kit. These changes are additive, and are not yet
reflected in the programming guide or quick reference.</td>
</tr>
<tr> <td><a href="progguide/index.html">Programming Guide</a>
(printable <a href="progguide/printable.html">html</a>)
</td>
- <td>This introduces AOP and the AspectJ language.
+ <td>This introduces AOP and the AspectJ language.
<a href="progguide/starting.html">Getting Started</a>
describes basic semantics, and shows development- and production-time applications.
<a href="progguide/language.html">The AspectJ Language</a>
- describes join points, pointcuts, advice, and introduction, all features new to AOP.
- <a href="progguide/examples.html">Examples</a> walks you through the
+ describes join points, pointcuts, advice, and introduction, all features new to AOP.
+ <a href="progguide/examples.html">Examples</a> walks you through the
examples included with the documentation, and there are two short
chapters on useful <a href="progguide/idioms.html">Idioms</a> and a
few <a href="progguide/pitfalls.html">Pitfalls</a>
the <a href="progguide/quick.html">Quick Reference</a>
summarizes AspectJ syntax,
the <a href="progguide/semantics.html">Language Semantics</a>
- best describes AspectJ usage, and
+ best describes AspectJ usage, and
<a href="progguide/implementation.html">Implementation Notes</a>
describes how
the current version is limited to code the compiler controls.</td>
<tr> <td><a href="devguide/index.html">Development Environment Guide</a>
<br/>
-
+
(printable <a href="devguide/printable.html">html</a>)
</td>
- <td>This is a guide to
+ <td>This is a guide to
<a href="devguide/ajc-ref.html">ajc</a>, the command-line compiler;
<a href="devguide/ajbrowser.html">ajbrowser</a>, the stand-alone
- GUI for compiling and viewing crosscutting structure;
+ GUI for compiling and viewing crosscutting structure;
and the <a href="devguide/antTasks.html">Ant tasks</a>
for building AspectJ programs.
</td>
<tr> <td><a href="pdguide/index.html">Problem Diagnosis Guide</a>
<br/>
-
+
(printable <a href="pdguide/printable.html">html</a>)
</td>
- <td>This has a guide to
+ <td>This has a guide to
the various features available such as messages and trace to help you both solve problems
with you own programs and report bugs to the AspectJ team.
</td>
<tr> <td>README's
</td>
- <td>Changes and porting guide for AspectJ
+ <td>Changes and porting guide for AspectJ
+ <a href="README-198.html">1.9.8</a>,
<a href="README-197.html">1.9.7</a>,
<a href="README-196.html">1.9.6</a>,
<a href="README-195.html">1.9.5</a>,
<tr> <td><a href="examples/">Examples</a>
</td>
<td>AspectJ code to demonstrate some language features and implement
- JavaBean properties, the Observer pattern, a tracing library,
+ JavaBean properties, the Observer pattern, a tracing library,
and a game application where aspects handle display updating.
</td> </tr>
</tr>
<tr> <td><a href="http://eclipse.org/aspectj">AspectJ</a> source code
</td>
- <td>Source code for AspectJ is available
- under the open-source
+ <td>Source code for AspectJ is available
+ under the open-source
<a href="https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt">Eclipse Public License v 2.0</a>
license from the Git
repositories for the AspectJ project. See the
<a name="resources"></a>
<h3>Other AspectJ resources</h3>
<table border="1">
-<tr> <th>Resources</th><th>Description</th>
+<tr> <th>Resources</th><th>Description</th>
</tr>
-<tr> <td>Mail lists
+<tr> <td>Mail lists
</td>
<td>
AspectJ users discuss tips and
AspectJ developers discuss issues with developing
the AspectJ tools on
<a href="mailto:aspectj-dev@eclipse.org">
- aspectj-dev@eclipse.org</a>.
+ aspectj-dev@eclipse.org</a>.
To get occasional emails about AspectJ releases
- and relevant events, subscribe to
+ and relevant events, subscribe to
<tt>aspectj-announce@eclipse.org</tt>.
- To view list archives or subscribe to the list, go to
+ To view list archives or subscribe to the list, go to
<a href="http://eclipse.org/aspectj">
the AspectJ home page</a>.
- To find archived emails, use the Eclipse site
+ To find archived emails, use the Eclipse site
<a href="http://www.eclipse.org/search/search.cgi">search page</a>.
</td></tr>
<tr> <td><a href="http://bugs.eclipse.org/bugs">Bug database</a>
Bugs all users should know about are
<a href="http://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&keywords=info">
flagged with the "info" keyword</a>.
- See the
+ See the
<a href="faq.html#q:ajcbugs">
- FAQ entry</a> for instructions on submitting compiler bugs.
+ FAQ entry</a> for instructions on submitting compiler bugs.
</td> </tr>
<tr> <td> <a href="http://aosd.net">http://aosd.net</a> - the AOSD web site
</td>
<td>This site has discussion and announcements related to
- aspect-oriented software development (AOSD) in general.
+ aspect-oriented software development (AOSD) in general.
Use <a href="mailto:announce@aosd.net">announce@aosd.net</a>
to get and publish notices about AOSD
workshops, conferences, and technology releases.
<a name="paths"></a>
<h3>Suggested paths for those new to AspectJ</h3>
<p/>
- To learn the AspectJ language, read the
+ To learn the AspectJ language, read the
<a href="progguide/index.html">Programming Guide</a>,
keeping the <a href="progguide/semantics.html">Semantics appendix</a>
nearby as the best reference for AspectJ usage.
Focus initially on the join point model and
pointcuts, concepts AOP adds to OOP.
- To read about how the <a href="examples/">examples</a> work,
+ To read about how the <a href="examples/">examples</a> work,
see the <a href="progguide/examples.html">Examples </a> section
in the <a href="progguide/index.html">Programming Guide</a>.
- View and navigate the crosscutting structure using
+ View and navigate the crosscutting structure using
<a href="http://eclipse.org/ajdt">AJDT</a>; if you can't use Eclipse, try
the <code>ajbrowser</code> structure viewer, as described in
the <a href="devguide/ajbrowser.html">AspectJ Browser</a> section of
the <a href="devguide/index.html">Development Environment Guide</a>.
<p/>
- To start using AspectJ with your own code,
+ To start using AspectJ with your own code,
modify the example aspects to apply to your classes.
As you learn,
- use the compiler's <code>-Xlint</code> flags to catch some common
- mistakes. (Understand that the
+ use the compiler's <code>-Xlint</code> flags to catch some common
+ mistakes. (Understand that the
<a href="progguide/implementation.html">current implementation</a>
is limited to code the compiler controls.)
<p>
- To plan how to adopt AspectJ into a project, read the
+ To plan how to adopt AspectJ into a project, read the
<a href="progguide/index.html">Programming Guide</a>
- on development- and production-time aspects
- and the <a href="faq.html">FAQ</a> entries for
+ on development- and production-time aspects
+ and the <a href="faq.html">FAQ</a> entries for
<a href="faq.html#q:startUsingAJ">How should I start using AspectJ?</a>,
<a href="faq.html#adoption">Deciding to adopt AspectJ</a>,
the Development tools sections
(<a href="faq.html#q:integrateWithDevTools">one</a>,
- <a href="faq.html#devtools">two</a>,
- <a href="faq.html#ltw">Load-time weaving</a>
+ <a href="faq.html#devtools">two</a>,
+ <a href="faq.html#ltw">Load-time weaving</a>
), and
<a href="faq.html#q:opensource">AspectJ as open-source</a>.
</p>