You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.adoc 11KB

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