[[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[API] and link:https://github.com/eclipse-aspectj/aspectj/tree/master/docs/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] |This is a four-page quick
reference for the AspectJ 5 language.

|xref:quickref/quick.pdf[AspectJ Quick Reference] |This is a two-page quick
reference for the AspectJ language.

|xref:adk15notebook/index.adoc[AspectJ 5 Developer's Notebook] +
(xref:adk15notebook/adk15notebook.adoc[single page]) |This 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.

|xref:progguide/index.adoc[Programming Guide] +
(xref:progguide/progguide.adoc[single page]) |This 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.

|xref:devguide/index.adoc[Development Environment Guide] +
(xref:devguide/devguide.adoc[single page]) |This is a guide to
xref:devguide/ajc.adoc[ajc], the command-line compiler;
and the
xref:devguide/antsupport.adoc[Ant tasks] for building AspectJ programs.

|xref:pdguide/index.adoc[Problem Diagnosis Guide] +
(xref:pdguide/pdguide.adoc[single page]) |This has a guide to the
various 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 API] |API documentation for AspectJ
runtime classes. JoinPoint shows the state automatically available at
each join point. See also the xref:weaver-api/index.html[Weaver API]

|xref:faq/faq.adoc#faq[FAQ] |Frequently-asked questions about the AspectJ
language, tools, and project.

|README's |Changes and porting guide for AspectJ
xref:dist/doc/README-1.9.21.adoc[1.9.21],
xref:dist/doc/README-1.9.20.adoc[1.9.20 and 1.9.20.1], xref:dist/doc/README-1.9.19.adoc[1.9.19],
xref:dist/doc/README-1.9.9.adoc[1.9.9 and 1.9.9.1], xref:dist/doc/README-1.9.8.adoc[1.9.8],
xref:dist/doc/README-1.9.7.adoc[1.9.7], xref:dist/doc/README-1.9.6.adoc[1.9.6],
xref:dist/doc/README-1.9.5.adoc[1.9.5], xref:dist/doc/README-1.9.4.adoc[1.9.4],
xref:dist/doc/README-1.9.3.adoc[1.9.3], xref:dist/doc/README-1.9.2.adoc[1.9.2],
xref:dist/doc/README-1.9.1.adoc[1.9.1], xref:dist/doc/README-1.9.0.adoc[1.9.0],
xref:dist/doc/README-1.8.11.adoc[1.8.11], xref:dist/doc/README-1.8.10.adoc[1.8.10],
xref:dist/doc/README-1.8.9.adoc[1.8.9], xref:dist/doc/README-1.8.8.adoc[1.8.8],
xref:dist/doc/README-1.8.7.adoc[1.8.7], xref:dist/doc/README-1.8.6.adoc[1.8.6],
xref:dist/doc/README-1.8.5.adoc[1.8.5], xref:dist/doc/README-1.8.4.adoc[1.8.4],
xref:dist/doc/README-1.8.3.adoc[1.8.3], xref:dist/doc/README-1.8.2.adoc[1.8.2],
xref:dist/doc/README-1.8.1.adoc[1.8.1], xref:dist/doc/README-1.8.0.adoc[1.8.0],
xref:dist/doc/README-1.7.4.adoc[1.7.4], xref:dist/doc/README-1.7.3.adoc[1.7.3],
xref:dist/doc/README-1.7.2.adoc[1.7.2], xref:dist/doc/README-1.7.1.adoc[1.7.1],
xref:dist/doc/README-1.7.0.adoc[1.7.0], xref:dist/doc/README-1.6.12.adoc[1.6.12],
xref:dist/doc/README-1.6.11.adoc[1.6.11], xref:dist/doc/README-1.6.10.adoc[1.6.10],
xref:dist/doc/README-1.6.9.adoc[1.6.9], xref:dist/doc/README-1.6.8.adoc[1.6.8],
xref:dist/doc/README-1.6.7.adoc[1.6.7], xref:dist/doc/README-1.6.6.adoc[1.6.6],
xref:dist/doc/README-1.6.5.adoc[1.6.5], xref:dist/doc/README-1.6.4.adoc[1.6.4],
xref:dist/doc/README-1.6.3.adoc[1.6.3], xref:dist/doc/README-1.6.2.adoc[1.6.2],
xref:dist/doc/README-1.6.1.adoc[1.6.1], xref:dist/doc/README-1.6.0.adoc[1.6.0],
xref:dist/doc/README-1.5.4.adoc[1.5.4], xref:dist/doc/README-1.5.3.adoc[1.5.3],
xref:dist/doc/README-1.5.2.adoc[1.5.2], xref:dist/doc/README-1.5.1.adoc[1.5.1],
xref:dist/doc/README-1.5.0.adoc[1.5.0], xref:dist/doc/README-1.2.1.adoc[1.2.1],
xref:dist/doc/README-1.2.adoc[1.2.0], xref:dist/doc/README-1.1.adoc[1.1],
xref:dist/doc/porting.adoc[1.0].

|xref:dist/doc/changes.adoc[Changes] |Changes between historical releases up to 1.6.0.

|link:https://github.com/eclipse-aspectj/aspectj/tree/master/docs/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.

| xref:developer/index.adoc[AspectJ Design Overview] +
(xref:developer/design-overview.adoc[single page]) |Introductory information about
AspectJ language design, developer guides, module structure
|===

[[distributions]]

=== AspectJ distributions

[cols=",",options="header",]
|===
|Distributions |Description
|https://eclipse.org/aspectj[AspectJ] |The AspectJ distribution contains
binaries for the compiler, structure browser, and 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:https://github.com/eclipse-aspectj/aspectj/tree/master/docs/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]#
