© Copyright 2021 Contributors. All rights reserved.

AspectJ 1.9.7

AspectJ (binaries, source code, documentation) is now distributed under the Eclipse Public License v 2.0.

Please note that going forward Bugzilla for issue management is deprecated and new issues should be filed as GitHub issues. The list of issues addressed for 1.9.7 can be found here for Bugzilla and here for GitHub issues.

New features

AspectJ 1.9.7 supports Java 15 & Java 16 and their respective final and preview features:

For features marked as preview on a given JDK, you need to compile with ajc --enable-preview and run with java --enable-preview on that JDK.

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.

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):

Using LTW on Java 16+

Please note that if you want to use load-time weaving on Java 16+, the weaving agent collides with JEP 396 (Strongly Encapsulate JDK Internals by Default). Therefore, you need to set the JVM parameter --add-opens java.base/java.lang=ALL-UNNAMED 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.

Organisational and internal changes

For AspectJ 1.9.7, we implemented a lot of internal changes concerning the build and release process, most of which are not visible in the product itself but will help us to more easily maintain and release the product in the future and more easily on-boarding new developers or contributors. For example:

Other changes and bug fixes

Available: 1.9.7 available 24-Jun-2021