Эти платформы манипулируют байт-кодом ваших классов, чтобы они могли добавить в них поддержку своих функций. Например, Hibernate может кодировать в методы получения / установки класса, чтобы помочь ему отследить, когда объект был обновлен (испачкан), и / или вернуть прокси-объекты дочерних объектов, которые содержат код для выполнения отложенной загрузки.
Aspectj манипулирует байт-кодом, чтобы добавить аспекты, которые вы запросили, чтобы обеспечить их выполнение. Например, если вы хотите добавить рекомендации ко всем методам класса для записи в журнал, когда они вызываются, aspectj может добавить байт-код (который выполняет эту регистрацию) к каждому методу.