aboutsummaryrefslogtreecommitdiffstats
path: root/docs/developer/modules.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'docs/developer/modules.adoc')
-rw-r--r--docs/developer/modules.adoc108
1 files changed, 108 insertions, 0 deletions
diff --git a/docs/developer/modules.adoc b/docs/developer/modules.adoc
new file mode 100644
index 000000000..b6ea33d62
--- /dev/null
+++ b/docs/developer/modules.adoc
@@ -0,0 +1,108 @@
+== AspectJ Modules
+
+There are a number of different structures [Parnas]: "the module structure, the uses structure, the runtime structure,
+..." This document overviews module structure and summarizes what is hidden by each. For detailed documentation refer to
+the individual module sources and docs available via CVS.
+
+=== Core Modules
+
+*CVS Location:* dev.eclipse.org:/cvsroot/technology/org.aspectj/modules
+
+To set up for building, one need only check out the module directories within the `modules/` directory. In Eclipse,
+check out each module into the workspace as a project. (Note: module dependencies may change at any time, so this
+documentation might be out of date. The Eclipse .classpath files specify the module dependencies, even when using Ant to
+build outside of Eclipse.)
+
+|===
+| *Module* | *Dependencies* | *Description*
+
+| ajbrowser | ajde, asm, bridge, util, taskdefs (pseudo, for build system) | This module contains the ajbrowser
+application. It depends on the ajde module for access to the aspectj compiler, and also for the swing user interface
+components that ajde provides.
+
+| ajde | asm, bridge, org.aspectj.ajdt.core, org.eclipse.jdt.core, util | Hides the details of accessing the AspectJ
+compiler and interpreting compilation results (error messages, structure model, etc.) from other applications (typically
+IDEs) that need to invoke it programmatically. Changing any public interface in ajde can break all the IDE integration
+projects and should be done with care. +
+ +
+It also contains a library of common swing user interface components that can be used by any swing based IDE. Ajbrowser
+and the non-eclipse IDE integration projects use this library (except for the emacs support).
+
+| asm | bridge | Contains the Abstract Structure Model, which represents the result of an aspectj compilation. Clients
+of ajde are returned an instance of the structure model which allows them to navigate and interpret the static structure
+of an aspectj program.
+
+| bridge | util | Contains an interface and implementation of classes realted to compiler messages including: source
+locations, handling, and formatting. Intended to minimize dependencies between testing, the compiler, and
+ajde.
+
+| org.aspectj.ajdt.core | asm, bridge, org.eclipse.jdt.core, runtime, testing-util, util, weaver | Front-end of the
+AspectJ compiler and extension of Eclipse's JDT compiler. Extends the JDT compiler's parsing and name resolution to
+understand AspectJ declarations. Also extends incremental behavior with understanding of AspectJ dependencies.
+
+| org.eclipse.jdt.core | | The Eclipse JDT compiler, slightly patched for AspectJ and stored in binary form to avoid
+accidental changes. Sources are available in CVS at dev.eclipse.org:/cvsroot/technology/org.aspectj/shadows.
+
+| runtime | | Small runtime library required for building and running AspectJ programs
+
+| taskdefs | bridge, org.aspectj.ajdt.core, util | Ant taskdef for the AspectJ compiler/weaver, ajc.
+
+| util | | Common utility classes including data type, file, and stream manipulation
+
+| weaver | asm, bridge, runtime, testing-util, util | Back-end of the AspectJ compiler, built on top of the BCEL
+bytecode toolkit. All advice planning and weaving is done here. Takes an aspect bytecode format and other Java
+classfiles as input.
+|===
+
+=== Supporting Modules
+
+*CVS Location:* dev.eclipse.org:/cvsroot/technology/org.aspectj/modules
+
+|===
+| *Module* | *Description*
+| build | Ant files, scripts, taskdefs required for building the AspectJ distribution. Also contains the GUI installer.
+| docs | Programmer and developer documentation
+| lib | Libraries required for building AspectJ
+| testing | Test support classes
+| testing-client | Client used for running the harness and reporting results
+| testing-drivers | Testing harness drivers and support classes
+| testing-util | Common testing utility classes used by the unit test suites in the core modules
+| tests | AspectJ test suite, including all language tests, regression tests, and test system sources
+|===
+
+=== Eclipse AspectJ Development Tools (AJDT)
+
+*CVS Location:* dev.eclipse.org:/cvsroot/technology/org.eclipse.ajdt/plugins/org.eclipse.ajdt
+
+|===
+| *Plug-in* | *Dependencies* | *Description*
+| org.eclipse.ajdt.ui | org.aspectj.ajde | AspectJ IDE support for Eclipse
+| org.aspectj.ajde | ajde, asm, bridge | AspectJ libraries plug-in
+|===
+
+=== JBuilder Support
+
+*CVS Location:* cvs.aspectj4jbuildr.sourceforge.net:/cvsroot/aspectj4jbuildr
+
+|===
+| *OpenTool* | *Dependencies* | *Description*
+| jbuilder | ajde, asm, bridge | AspectJ IDE support for JBuilder
+|===
+
+=== NetBeans Support
+
+*CVS Location:* cvs.aspectj4netbean.sourceforge.net:/cvsroot/aspectj4netbean
+
+|===
+| *Module* | *Dependencies* | *Description*
+| netbeans | ajde, asm, bridge | AspectJ IDE support for NetBeans and SunONE Studio
+|===
+
+=== Emacs Support
+
+*CVS Location:* cvs.aspectj4emacs.sourceforge.net:/cvsroot/aspectj4emacs
+
+|===
+| *Module* | *Dependencies* | *Description*
+| emacs | ajde, asm, bridge | AspectJ support for Emacs and XEmacs
+|===