aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorAlexander Kriegisch <Alexander@Kriegisch.name>2022-03-21 10:45:00 +0700
committerAlexander Kriegisch <Alexander@Kriegisch.name>2022-03-21 10:51:35 +0700
commit6dc09db0ca1589f8c53c4dca054e3a852eaaecba (patch)
tree9c480f1ab92b26d141a249513d89942b1a1e6b73 /docs
parentd3a06a6942b6f69ce9b5b4403d3c1cf1803cf01e (diff)
downloadaspectj-6dc09db0ca1589f8c53c4dca054e3a852eaaecba.tar.gz
aspectj-6dc09db0ca1589f8c53c4dca054e3a852eaaecba.zip
Prepare code, tests and docs for Java 18
- JDT Core dependency in pom.xml - Constants.java - LangUtil.java - AjcTask.java - messages_aspectj.properties - XMLBasedAjcTestCaseForJava17Only.java - XMLBasedAjcTestCaseForJava18*.java - tests/bugs199 - tests/features199 - JavaVersionCompatibility.md - README-199.html - GitHub CI build Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Diffstat (limited to 'docs')
-rw-r--r--docs/dist/doc/JavaVersionCompatibility.md1
-rw-r--r--docs/dist/doc/README-198.html9
-rw-r--r--docs/dist/doc/README-199.html126
3 files changed, 129 insertions, 7 deletions
diff --git a/docs/dist/doc/JavaVersionCompatibility.md b/docs/dist/doc/JavaVersionCompatibility.md
index be557d462..18a7dcae7 100644
--- a/docs/dist/doc/JavaVersionCompatibility.md
+++ b/docs/dist/doc/JavaVersionCompatibility.md
@@ -7,6 +7,7 @@ be easily concluded from the AspectJ version number anymore, and we are sorry fo
AspectJ version | Java version | Comments
----------------|--------------|--------
+1.9.9 | 18
1.9.8 | 17 | AspectJ compiler requires JDK 11+ during build time. During runtime, AspectJ still only requires Java 8+ for both compile-time and load-time weaving. Pure Java code can be compiled down to as old as 1.3 byte code level.
1.9.7 | 15, 16
1.9.6 | 14
diff --git a/docs/dist/doc/README-198.html b/docs/dist/doc/README-198.html
index 5beb81e3d..6b79b5ab9 100644
--- a/docs/dist/doc/README-198.html
+++ b/docs/dist/doc/README-198.html
@@ -73,7 +73,8 @@
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>
+ 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
@@ -110,12 +111,6 @@
craft a condy class with ASM</a>.
</li>
<li>
- Improvements for <tt>if()</tt> pointcuts in annotation syntax, see issues
- <a href="https://github.com/eclipse/org.aspectj/issues/115">#115</a>,
- <a href="https://github.com/eclipse/org.aspectj/issues/120">#120</a>,
- <a href="https://github.com/eclipse/org.aspectj/issues/122">#122</a>.
- </li>
- <li>
Thanks to Andrey Turbanov for several clean code contributions and to Dmitry Mikhaylov for fixing a potential
concurrency problem.
</li>
diff --git a/docs/dist/doc/README-199.html b/docs/dist/doc/README-199.html
new file mode 100644
index 000000000..8e09cd918
--- /dev/null
+++ b/docs/dist/doc/README-199.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+
+<head>
+<title>AspectJ 1.9.9 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>&copy; Copyright 2022 Contributors. All rights reserved.</small></div>
+
+<h1>AspectJ 1.9.9</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.9 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.9">here for Bugzilla</a>
+ and <a href="https://github.com/eclipse/org.aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.9">here for GitHub issues</a>.
+</p>
+
+<h2>New features</h2>
+
+<p>
+ AspectJ 1.9.9 supports <a href="https://openjdk.java.net/projects/jdk/18/">Java 18</a> and its final and preview
+ features, such as:
+</p>
+<ul>
+ <li>Pattern matching for <tt>switch</tt> (preview 2)</li>
+</ul>
+
+<h2>Improvements</h2>
+
+<h2>Code examples</h2>
+
+<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/java17">
+ Pattern matching for switch, preview 1
+ </a>
+ </li>
+ <li>
+ <a href="https://github.com/eclipse/org.aspectj/tree/master/tests/features199/java18">
+ Pattern matching for switch, preview 2
+ </a>
+ </li>
+</ul>
+
+<h2>Other changes and bug fixes</h2>
+
+<ul>
+ <li>
+ Fix a bug which led to <tt>NullPointerException</tt>s if too many JAR archives were on the classpath. Too many here
+ means the value system property <tt>org.aspectj.weaver.openarchives</tt> (1,000 by default). The AspectJ compiler is
+ meant to close archives upon cache exhaustion and then re-open them if it needs them again later. Re-opening was
+ broken, now the compiler works reliably even for cache sizes as small as 20. See issue
+ <a href="https://github.com/eclipse/org.aspectj/issues/125">#125</a>.
+ </li>
+ <li>
+ Improvements for <tt>if()</tt> pointcuts in annotation syntax, see issues
+ <a href="https://github.com/eclipse/org.aspectj/issues/115">#115</a>,
+ <a href="https://github.com/eclipse/org.aspectj/issues/120">#120</a>,
+ <a href="https://github.com/eclipse/org.aspectj/issues/122">#122</a>.
+ </li>
+ <li>
+ Thanks to Andrey Turbanov for several clean code contributions.
+ </li>
+</ul>
+
+<h2>AspectJ usage hints</h2>
+
+<h3>AspectJ compiler build system requirements</h3>
+
+<p>
+ Since 1.9.7, the AspectJ compiler <tt>ajc</tt> (contained in the <tt>aspectjtools</tt> library) no longer works on
+ JDKs 8 to 10. The minimum compile-time requirement is now 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
+ when compiling plain Java code or using plain Java ITD constructs which do not require the AspectJ runtime
+ <tt>aspectjrt</tt>, but the compiler itself needs JDK 11+. Just like in previous AspectJ versions, both the runtime
+ <tt>aspectjrt</tt> and the load-time weaver <tt>aspectjweaver</tt> still only require JRE 8+.
+</p>
+
+<h3>Use LTW on Java 16+</h3>
+
+<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> and related
+ subsequent JEPs. 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>
+
+<h3>Compile with Java preview features</h3>
+
+<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>
+
+<hr>
+
+<p>
+ <b>Available:</b> 1.9.9 available DD-MMM-2022
+</p>
+
+</body>
+
+</html>