system • Construct to select these points • Construct to dynamically change app behaviour • Construct to alter static structure of the system • Module to gather all contracts in one place
with lower priority • Higher priority after*() advices weaves AFTER Aspects with lower priority • Higher priority around advices incapsulate advice with lower priority
body Support Exception softening Method and data introduction Privileged access Low ITD abilities Doesn’t need AJC to compile code. Additional step to build process Need ajc Poor support in Android Studio Good IDE/Plugins support/Spring intro AspectJ vs @AspectJ
access to ajc small size good for pure java projects not good for android works with multidex and lambda native toolchain can weave kotlin/scala/ groovy support Instant run Gradle 2/3/4 support do not support AspectJ native syntax docs/issues in Chinese written in Groovy works with multidex 100% Kotlin supports both syntaxes highly customisable supports instrumented tests issues with native lambda(milestone to 3.3.0) Plugins
especially in Android •Increased binary file size •Would be better if aspects was language feature •Increased build time/class load time Pros … Pros and cons