АспектJ


AspectJ — это расширение аспектно-ориентированного программирования (АОП), созданное в PARC для языка программирования Java . Он доступен в проектах с открытым исходным кодом Eclipse Foundation , как автономных, так и интегрированных в Eclipse . AspectJ стал широко используемым стандартом де-факто для АОП, подчеркивая простоту и удобство использования для конечных пользователей. Он использует синтаксис, подобный Java, и включает интеграцию IDE для отображения сквозной структуры с момента его первого публичного выпуска в 2001 году.

Все допустимые программы Java также являются допустимыми программами AspectJ, но AspectJ позволяет программистам определять специальные конструкции, называемые аспектами . Аспекты могут содержать несколько сущностей, недоступных стандартным классам. Это:

AspectJ также поддерживает ограниченные формы статической проверки на основе pointcut и повторного использования аспектов (путем наследования). Более подробное описание языка см. в Руководстве по программированию AspectJ .

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

Ключом к успеху стали инженерные и языковые решения, которые делают язык пригодным для использования и развертываемыми программами. Исходная реализация Xerox AspectJ использовала плетение исходного кода, что требовало доступа к исходному коду. Когда Xerox предоставила код для Eclipse, AspectJ был переопределен с использованием Java-компилятора Eclipse и программы обработки байт-кода на основе BCEL., чтобы разработчики могли писать аспекты кода в двоичной форме (.class). В то время язык AspectJ был ограничен поддержкой модели каждого класса, необходимой для инкрементальной компиляции и переплетения во время загрузки. Это сделало интеграцию IDE такой же гибкой, как и ее аналоги на Java, и позволило разработчикам развертывать аспекты, не изменяя процесс сборки. Это привело к более широкому распространению, поскольку AspectJ стал доступен нетерпеливым Java-программистам и развертываниям на уровне предприятия. С тех пор команда Eclipse повысила производительность и корректность, обновила язык AspectJ для поддержки функций языка Java 5, таких как обобщения и аннотации , а также интегрировала аспекты чистой Java в стиле аннотаций от AspectWerkz .

Проект Eclipse поддерживает интерфейсы как командной строки, так и Ant . Связанный проект Eclipse постоянно улучшал поддержку Eclipse IDE для AspectJ (называемого AspectJ Development Tools ( AJDT ) ) и других поставщиков сквозной структуры. Поддержка IDE для emacs , NetBeans и JBuilder прекратилась, когда Xerox разместила их в открытом исходном коде, но поддержка Oracle JDeveloper все же появилась. Поддержка IDE была ключом к Java-программистам, использующим AspectJ и понимающим сквозные проблемы.