AspectJ
패러다임 | 객체 지향 |
---|---|
개발자 | 이클립스 재단 |
발표일 | 2001년 (2001) |
최근 버전 | 1.9.22.1[1] ![]() |
최근 버전 출시일 | 2024년 5월 11일(3개월 전)(2024년 5월 11일) |
구현 언어 | 자바 |
운영 체제 | 크로스 플랫폼 |
라이선스 | 이클립스 퍼블릭 라이선스 |
파일 확장자 | aj |
웹사이트 | www |
주요 구현체 | |
이클립스를 위한 The AspectJ Development Tools |
AspectJ는 PARC에서 개발한 자바 프로그래밍 언어용 관점 지향 프로그래밍 (AOP) 확장 기능이다. 이클립스 재단 오픈 소스 프로젝트에서 독립형 또는 이클립스로 통합하여 이용 가능하다. AspectJ는 최종 사용자를 위한 단순함과 이용성을 강조함으로써 폭넓게 사용되는 AOP에 대한 데 팍토 표준이 되었다. 자바 계열 문법을 사용하며 2001년 초기 출시 이후 횡단 구조를 표시하기 위한 IDE 연동을 포함하였다.
단순 언어 설명
유효한 모든 자바 프로그램들은 유효한 AspectJ 프로그램들이기도 하지만 AspectJ는 프로그래머들이 관점(aspect)이라 불리는 특수한 생성자를 정의한다. 관점들은 표준 클래스들에 이용할 수 없는 여러 엔티티를 포함할 수 있다. 이들은 다음과 같다:
- 확장 메소드(extension method)
- 프로그래머가 메소드, 필드, 인터페이스를 aspect 내의 기존 클래스들에 추가할 수 있게 한다. 이 예는
acceptVisitor
(비지터 패턴 참고) 메소드를Point
클래스에 추가한다:
aspect VisitAspect { void Point.acceptVisitor(Visitor v) { v.visit(this); } }
- 포인트컷(Pointcut)
- 프로그래머가 조인 포인트를 지정할 수 있게 한다. 모든 포인트컷은 주어진 조인 포인트와 일치하는지를 결정하는 식이다. 이를테면, 포인트컷은 이름이
set
으로 시작하는Point
형의 오브젝트의 임의의 인스턴스 메소드의 실행과 일치한다:
pointcut set() : execution(* set*(..) ) && this(Point);
- 어드바이스(Advice)
- 프로그래머가 포인트컷에 의해 일치되는 조인 포인트에서 실행할 코드를 지정할 수 있게 한다. 이 동작은 지정된 조인 포인트의 앞("before"), 뒤("after"), 주변("around")에서 수행할 수 있다. 여기에서 어드바이스는 위에 선언된 포인트컷을 사용하여
Point
상의 무언가가 설정될 때마다 화면을 새로 고친다:
after () : set() { Display.update(); }
또, AspectJ는 제한된 형태의 포인트컷 기반 정적 검사와 aspect 재사용(상속을 통해)을 지원한다. 언어의 더 자세한 설명에 대해서는 AspectJ 프로그래밍 가이드 참고.
역사 및 기여자
Gregor Kiczales는 PARC 팀을 시작, 주도하면서 최종적으로 AspectJ를 개발하였다. 그는 크로스커팅(crosscutting), 즉 "횡단"이라는 용어를 만들어냈다. 크리스 마에다(Crhis Maeda)는 관점 지향 프로그래밍(aspect-oriented programming)이라는 용어를 만들어냈다.
AspectWerkz
AspectWerkz는 자바용의 가벼운 동적 고성능 AOP/AOSD 프레임워크이다. AspectJ 프로젝트와 병합되었으며 AspectJ 5 이후로 AspectWerkz 기능을 지원한다.
같이 보기
- 관점 지향 프로그래밍
- 스프링 AOP (스프링 프레임워크의 일부)
- 관점 지향 소프트웨어 개발
참고 문헌
- Laddad, Ramnivas (2009년 9월 28일), 《AspectJ in Action: Enterprise AOP with Spring》 2판, Manning Publications, 550쪽, ISBN 978-1-933988-05-4
- Miles, Russ (2004년 12월 20일), 《AspectJ Cookbook》 1판, 오라일리 미디어, 354쪽, ISBN 978-0-596-00654-9
- Colyer, Adrian; Clement, Andy; Harley, George; Webster, Matthew (2004년 12월 24일), 《Eclipse AspectJ: Aspect-Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools》 1판, en:Addison-Wesley Professional, 504쪽, ISBN 978-0-321-24587-8
- Gradecki, Joseph D.; Lesiecki, Nicholas (2003년 3월 7일), 《Mastering AspectJ: Aspect-Oriented Programming in Java》 1판, Wiley, 456쪽, ISBN 978-0-471-43104-6
각주
- ↑ “Release 1.9.22.1”. 2024년 5월 11일. 2024년 5월 20일에 확인함.
외부 링크
- AJDT
- Aspect bench : https://web.archive.org/web/20170816093700/http://www.sable.mcgill.ca/abc/
- AspectJ Home Page
- AspectWerkz Project homepage
- Improve modularity with aspect-oriented programming
- Spring AOP and AspectJ Introduction
- The AspectJTM Programming Guide
- Xerox has 미국 특허 6,467,086 for AOP/AspectJ, but published AspectJ source code under the Common Public License, which grants some patent rights.