Diferencia entre llamada y ejecución en AOP

Estoy tratando de entender la diferencia entre ejecución y llamada en AOP de la manera más simple posible. Por lo que deduzco, execute () agregará un punto de unión en el código de ejecución, así queHelloWorldSayer.sayHello() en este caso, pero si el punto de corte eracall(), entonces el punto de unión seráHelloWorldSayer.main(). ¿Es esto correcto?

public class HelloWorldSayer {
    public static void main (String[] args) {
        sayHello();
    }

    public static void sayHello() {
        System.out.println("Hello");
    }
}

public aspect World {
    public hello():
        execution(static void HelloWorldSayer.sayHello());

    after() hello() {
        System.out.println("Bye");
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta