2016-12-27 27 views

ответ

2

ASM - это структура/библиотека, которая предоставляет вам API для управления существующим байт-кодом и/или генерации нового байт-кода.

AspectJ, с другой стороны, является языковым расширением на языке Java с его собственным синтаксисом, специально разработанным для расширения возможностей Java-среды исполнения с концепциями аспектно-ориентированного программирования. Он включает компилятор/ткач, который можно запускать во время компиляции или во время выполнения.

Они похожи в том смысле, что оба достигают своих целей путем манипуляции байт-кодом существующего байт-кода и/или создания нового байт-кода.

ASM является более общим в том смысле, что у него нет мнения о том, как вы хотите изменить существующий байт-код, он просто дает вам API, и вы можете делать с ним все, что хотите. AspectJ, с другой стороны, более конкретный, более узкий, он поддерживает только несколько предопределенных конструкций AOP, но он дает вам интерфейс (язык aspectj), с которым гораздо легче работать, если вы можете вписаться в те конструкции предоставляет вам.

Для большинства случаев использования, которые я видел, AspectJ более чем достаточно, но в тех редких случаях, когда этого не будет, ASM может быть хорошей альтернативой, но вам потребуется больше работы по программированию для достижения аналогичных результатов ,

 Смежные вопросы

  • Нет связанных вопросов^_^