Сравнивая CDI и AspectJ - PullRequest
       19

Сравнивая CDI и AspectJ

0 голосов
/ 16 декабря 2011

Мы пытаемся оценить CDI и AspectJ в нашем проекте.Кто-то здесь сделал что-то подобное?Кто-нибудь может поделиться своими взглядами на использование CDI или AspectJ по некоторым темам, таким как: 1. Кривая обучения 2. Переносимость на разные серверы 3. Поддержка обслуживания 4. Отладка

Спасибо

1 Ответ

4 голосов
/ 16 декабря 2011

Это на самом деле очень разные технологии. CDI - это стек внедрения зависимостей (например, Spring или Guice) с некоторыми функциями AOP (достаточно в типичных случаях использования). AspectJ - это полноценный аспектно-ориентированный язык программирования , который на самом деле не предлагает никаких функций внедрения зависимостей.

0,1. Кривая обучения

Обе технологии имеют много материалов. CDI новый, но вокруг него много шума. Например. см. Учебное пособие CDI AOP: Учебное пособие по перехвату стандартных методов Java .

AspectJ намного старше, и о нем мало фантастических книг. Но я бы сказал, что это немного сложнее.

0,2. Переносимость на разные серверы

CDI - это стандарт Java для DI. Мы увидим все больше и больше серверов, реализующих его. AspectJ - это язык, который работает на уровне байт-кода. Он должен работать практически на любой виртуальной машине Java (мобильной, настольной системе, сервере, апплете ...)

Что касается удобства обслуживания и отладки - это действительно разные технологии, поэтому я не буду вдаваться в их сравнение. Однако CDI - это стандартный код Java, в то время как AspectJ в основном генерирует код на уровне байт-кода. С другой стороны, сгенерированный AspectJ код (трассировка стека, декомпиляция) может быть более читабельным, чем тонны рефлексивных прокси и сгенерированные CGLIB классы с CDI.

...