1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
|
[[top]]
= AspectJ Documentation and Resources
AspectJ^TM^ is a seamless aspect-oriented extension to Java^TM^. The compiler and development tools are available under
an open-source license, require Java 8 to run, and produce code that runs in JDK 1.3 and later VM's. For the latest
materials, see https://eclipse.org/aspectj. Not all of these materials have been updated for AspectJ 5.
[cols=",",]
|===
|+++Section+++ |+++Contents+++
|xref:#documentation[Documentation]
|xref:faq/faq.adoc#faq[FAQ], xref:quickref/quick5.pdf[Quick Reference (AspectJ 5)],
xref:quickref/quick.pdf[Quick Reference (1.2.1)], xref:adk15notebook/index.adoc[AspectJ 5 Developer's Notebook],
xref:progguide/index.adoc[programming], xref:devguide/index.adoc[development] and
xref:pdguide/index.adoc[problem diagnosis] guides, link:runtime-api/index.html[runtime API],
link:weaver-api/index.html[weaver API] and link:examples[example code]
|xref:#distributions[Distributions]
|https://eclipse.org/aspectj[AspectJ] development environment support for https://eclipse.org/ajdt[Eclipse]
|xref:#resources[Other resources]
|https://eclipse.org/aspectj[AspectJ project], the bug https://bugs.eclipse.org/bugs[db], and mailing lists for
mailto:aspectj-users@eclipse.org[users] and mailto:aspectj-dev@eclipse.org[developers].
|xref:#paths[Learning paths] |for those new to AspectJ
|===
[[documentation]]
== AspectJ documentation
[width="100%",cols="50%,50%",options="header",]
|===
|Documentation
|Description
|xref:quickref/quick5.pdf[AspectJ 5 Quick Reference]
|Four-page quick reference for the AspectJ 5 language
|xref:quickref/quick.pdf[AspectJ Quick Reference]
|Two-page quick reference for the AspectJ language
a|AspectJ 5 Developer's Notebook
* xref:adk15notebook/index.adoc[HTML multi-page]
* xref:adk15notebook/adk15notebook.adoc[HTML single page]
* xref:adk15notebook/adk15notebook.pdf[PDF]
|Describes the changes to the AspectJ language and tools introduced in the AspectJ 5 Development Kit. These changes are
additive, and are not yet reflected in the programming guide or quick reference.
a|Programming Guide
* xref:progguide/index.adoc[HTML multi-page]
* xref:progguide/progguide.adoc[HTML single page]
* xref:progguide/progguide.pdf[PDF]
|Introduces AOP and the AspectJ language. xref:progguide/gettingstarted.adoc[Getting Started] describes basic semantics
and shows development- and production-time applications. xref:progguide/language.adoc[The AspectJ Language] describes
join points, pointcuts, advice, and introduction, all features new to AOP. xref:progguide/examples.adoc[Examples] walks
you through the examples included with the documentation, and there are two short chapters on useful
xref:progguide/idioms.adoc[Idioms] and a few xref:progguide/pitfalls.html[Pitfalls]. +
The appendices have reference information: the xref:progguide/quickreference.adoc[Quick Reference] summarizes AspectJ
syntax, the xref:progguide/semantics.adoc[Language Semantics] best describes AspectJ usage, and
xref:progguide/implementation.adoc[Implementation Notes] describes how the current version is limited to code the
compiler controls.
a|Development Environment Guide
* xref:devguide/index.adoc[HTML multi-page]
* xref:devguide/devguide.adoc[HTML single page]
* xref:devguide/devguide.pdf[PDF]
|Guide to the command-line compiler xref:devguide/ajc.adoc[ajc] and the xref:devguide/antsupport.adoc[Ant tasks] for
building AspectJ programs
a|Problem Diagnosis Guide
* xref:pdguide/index.adoc[HTML multi-page]
* xref:pdguide/pdguide.adoc[HTML single page]
* xref:pdguide/pdguide.pdf[PDF]
|Guide to various debugging features available, such as messages and trace to help you both solve problems with you own
programs and report bugs to the AspectJ team
|xref:runtime-api/index.html[AspectJ Runtime API]
|API documentation for AspectJ runtime classes. `JoinPoint` shows the state automatically available at each join point.
`ProceedingJoinPoint` explains how to `proceed(..)` to the intercepted join point from an around advice.
|xref:weaver-api/index.html[AspectJ Weaver API]
|API documentation for AspectJ weaver classes. This is a superset of the runtime API plus all the additional classes
used for byte code weaving, both during compilation from source code and binary weaving during post-compile and
load-time weaving.
|xref:faq/faq.adoc#faq[FAQ]
|Frequently asked questions about the AspectJ language, tools, and project
|xref:release/JavaVersionCompatibility.adoc[Java version compatibility]
|Compatibility matrix, explaining which AspectJ compiler version supports which Java language version and needs which
JDK to run
|Release notes |Release notes, describing new features, improvements, bugfixes per AspectJ version: +
+
xref:release/README-1.9.21.adoc[1.9.21],
xref:release/README-1.9.20.adoc[1.9.20 and 1.9.20.1], xref:release/README-1.9.19.adoc[1.9.19],
xref:release/README-1.9.9.adoc[1.9.9 and 1.9.9.1], xref:release/README-1.9.8.adoc[1.9.8],
xref:release/README-1.9.7.adoc[1.9.7], xref:release/README-1.9.6.adoc[1.9.6],
xref:release/README-1.9.5.adoc[1.9.5], xref:release/README-1.9.4.adoc[1.9.4],
xref:release/README-1.9.3.adoc[1.9.3], xref:release/README-1.9.2.adoc[1.9.2],
xref:release/README-1.9.1.adoc[1.9.1], xref:release/README-1.9.0.adoc[1.9.0],
xref:release/README-1.8.11.adoc[1.8.11], xref:release/README-1.8.10.adoc[1.8.10],
xref:release/README-1.8.9.adoc[1.8.9], xref:release/README-1.8.8.adoc[1.8.8],
xref:release/README-1.8.7.adoc[1.8.7], xref:release/README-1.8.6.adoc[1.8.6],
xref:release/README-1.8.5.adoc[1.8.5], xref:release/README-1.8.4.adoc[1.8.4],
xref:release/README-1.8.3.adoc[1.8.3], xref:release/README-1.8.2.adoc[1.8.2],
xref:release/README-1.8.1.adoc[1.8.1], xref:release/README-1.8.0.adoc[1.8.0],
xref:release/README-1.7.4.adoc[1.7.4], xref:release/README-1.7.3.adoc[1.7.3],
xref:release/README-1.7.2.adoc[1.7.2], xref:release/README-1.7.1.adoc[1.7.1],
xref:release/README-1.7.0.adoc[1.7.0], xref:release/README-1.6.12.adoc[1.6.12],
xref:release/README-1.6.11.adoc[1.6.11], xref:release/README-1.6.10.adoc[1.6.10],
xref:release/README-1.6.9.adoc[1.6.9], xref:release/README-1.6.8.adoc[1.6.8],
xref:release/README-1.6.7.adoc[1.6.7], xref:release/README-1.6.6.adoc[1.6.6],
xref:release/README-1.6.5.adoc[1.6.5], xref:release/README-1.6.4.adoc[1.6.4],
xref:release/README-1.6.3.adoc[1.6.3], xref:release/README-1.6.2.adoc[1.6.2],
xref:release/README-1.6.1.adoc[1.6.1], xref:release/README-1.6.0.adoc[1.6.0],
xref:release/README-1.5.4.adoc[1.5.4], xref:release/README-1.5.3.adoc[1.5.3],
xref:release/README-1.5.2.adoc[1.5.2], xref:release/README-1.5.1.adoc[1.5.1],
xref:release/README-1.5.0.adoc[1.5.0], xref:release/README-1.2.1.adoc[1.2.1],
xref:release/README-1.2.adoc[1.2], xref:release/README-1.1.adoc[1.1].
|xref:release/changes.adoc[Changes] (historical)
|Changes between historical releases up to 1.6.0
|xref:release/porting.adoc[Porting guide] (historical)
|Porting guide for historical releases to 1.2
|link:examples[Examples]
|AspectJ code to demonstrate some language features and implement JavaBean properties, the Observer pattern, a tracing
library, and a game application where aspects handle display updating
a|AspectJ Design Overview
* xref:developer/index.adoc[HTML multi-page]
* xref:developer/design-overview.adoc[HTML single page]
* xref:developer/design-overview.pdf[PDF]
|Introductory information about AspectJ language design, developer guides, module structure
|===
[[distributions]]
== AspectJ distributions
[cols=",",options="header",]
|===
|Distributions
|Description
|https://eclipse.org/aspectj[AspectJ binary distribution]
|The AspectJ distribution contains a Java-based installer, binaries for the compiler, Ant taskdefs as well as the
documentation and examples.
|https://eclipse.org/aspectj[AspectJ source code]
|Source code for AspectJ is available under the open-source
https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt[Eclipse Public License v 2.0] license from the Git
repositories for the AspectJ project. See the xref:faq/faq.adoc#buildingsource[FAQ entry].
|https://eclipse.org/ajdt[AspectJ for Eclipse]
|AspectJ Development Environment support for Eclipse is available under Eclipse Public License v 1.0 from the
eclipse.org project site https://eclipse.org/ajdt
|===
[[resources]]
== Other AspectJ resources
[cols=",",options="header",]
|===
|Resources
|Description
|Mail lists
|AspectJ users discuss tips and best practices for writing AspectJ programs on aspectj-users@eclipse.org. AspectJ
developers discuss issues with developing the AspectJ tools on aspectj-dev@eclipse.org. To get occasional emails about
AspectJ releases and relevant events, subscribe to aspectj-announce@eclipse.org. To view list archives or subscribe to
the list, go to https://eclipse.org/aspectj[the AspectJ home page]. To find archived emails, use the Eclipse site
https://www.eclipse.org/search/search.cgi[search page].
|https://bugs.eclipse.org/bugs[Bug database]
|Use the Eclipse project's Bugzilla database to view and submit bugs against the AspectJ product components
https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&component=Compiler[Compiler] (for the AspectJ compiler, ajc),
https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&component=IDE[IDE] (for AJDE bugs),
https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&component=Ant[Ant] (for the Ant tasks) and
https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&component=Docs[Docs] (for the documentation).
Bugs all users should know about are
https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&keywords=info[flagged with the "info" keyword].
See the xref:faq/faq.adoc#ajcbugs[FAQ entry] for instructions on submitting compiler bugs.
|===
[[paths]]
== Suggested learning paths for those new to AspectJ
To learn the AspectJ language, read the xref:progguide/index.adoc[Programming Guide], keeping the
xref:progguide/semantics.adoc[Semantics appendix] nearby as the best reference for AspectJ usage. Focus initially on the
join point model and pointcuts, concepts AOP adds to OOP. To read about how the link:examples[examples] work, see the
xref:progguide/examples.adoc[Examples] section in the xref:progguide/index.adoc[Programming Guide]. View and navigate
the crosscutting structure using https://eclipse.org/ajdt[AJDT].
To start using AspectJ with your own code, modify the example aspects to apply to your classes. As you learn, use the
compiler's `-Xlint` flags to catch some common mistakes. (Understand that the
xref:progguide/implementation.adoc[current implementation] is limited to code the compiler controls.)
To plan how to adopt AspectJ into a project, read the xref:progguide/index.adoc[Programming Guide] on development- and
production-time aspects and the FAQ entries for xref:faq/faq.adoc#howToStartUsing[How should I start using AspectJ?],
xref:faq/faq.adoc#adoption[Deciding to adopt AspectJ], the Development tools sections
(xref:faq/faq.adoc#integrateWithDevTools[How does AspectJ integrate with existing Java development tools?],
xref:faq/faq.adoc#devtools[Integrating AspectJ into your development environment],
xref:faq/faq.adoc#ltw[Load-time weaving]), and xref:faq/faq.adoc#opensource[AspectJ as open-source]).
Enjoy the language!
The AspectJ Team
'''''
[.small]#xref:#top[Top]#
|