Skip to content

Aspect Weaver

A software utility that selects program sites and integrates separately specified aspect behavior or structure into eligible code or running applications.

Version
v1 · 2026-10-17 · History
Domain-specific #
14060
Domain group
Applied Sciences & Engineering
Origin domain
Computer Science & Software Engineering
Subdomains
Aspect Oriented Programming, Software Tooling → Computer Science & Software Engineering
Aliases
Aspect-oriented weaver

Core Idea

An aspect weaver is a software utility that can take a base program and a separately specified concern, choose eligible program sites, and make the concern operative there. The available utility is different from one weaving event and from the woven result. AspectJ can weave class files during compilation, after compilation, or as a class loader defines them; AspectC++ uses a source-to-source C++ front end.[ref-f8ad2500e419][ref-39b891d27631]

Scope of Application

The same five-part tool contract—available capacity, two inputs, site selection, integration, and operative effect—appears in unlike software settings:

  • AspectJ load time: An enabled agent or weaving loader receives base classes and visible configured aspects.[^ref-f8ad2500e419] Type patterns and pointcuts limit sites; weaving occurs as a class is defined.[ref-f8ad2500e419][ref-79ad13a4af92] This route does not itself alter an already defined JVM class.[^ref-f8ad2500e419]
  • AspectC++ Reusable Observer: The authors' ac++ front end takes C++ code and aspect definitions.[^ref-39b891d27631] Pointcuts select subject and observer sites; introductions and after advice are integrated into generated C++ for a later compiler.[^ref-39b891d27631] This worked example was inspected, not rerun.

  • PROSE boundary: The archived ETH project account reports extensions deployed into a running Java application and selectively withdrawn.[^ref-b95b9c85cd9a] Its debugger, JIT-hook, and bytecode mechanisms describe alternative versions, not ingredients of every instance.[^ref-b95b9c85cd9a] The original 2002 paper's accessible abstract establishes only the research aim here.[^ref-ba096d833717]

Clarity

Ask whether the object is an available tool, an invocation, its result, or later execution of integrated behavior. A pointcut checker that only reports sites lacks integration; a hardcoded text splice lacks reusable concern-to-site selection. AspectJ advice and inter-type declarations are different ways a selected concern can take effect, so not every addition is a before-or-after action.[^ref-79ad13a4af92]

Manages Complexity

When an expected effect is absent, check the base and concern inputs, selector, eligible phase, and operative result separately. For AspectJ load-time weaving, loader visibility and pre-definition timing can matter.[^ref-f8ad2500e419] For AspectC++, the supported C++ source and aspect headers reach a different front end.[^ref-39b891d27631] The same diagnostic questions travel; the implementation rules do not.

Abstract Reasoning

The tool remains describable while idle: it retains a callable selection-and-integration capacity even when no weave is underway. A generic compiler can participate in a weave, as ajc or ac++ does, but compilation alone does not supply that whole contract.[ref-c72d35107c7f][ref-39b891d27631] No current strict parent has the full tool signature across these variants. Compiler and program transformation describe possible routes or performed operations, rather than the reusable utility in every instance.

Knowledge Transfer

The five questions help compare class-file, source, and runtime variants without treating their outputs or phases as interchangeable. A generated file is not necessary for every documented weaver; the PROSE account describes an effect in a running program.[ref-f8ad2500e419][ref-39b891d27631][^ref-b95b9c85cd9a] This comparison does not establish a universal efficiency ranking, verified PROSE benchmark numbers, or an aspect-weaver identity for every compiler plugin. Keep language support, site reach, phase, and observed effect attached to each case.

Neighborhood in Abstraction Space

Aspect Weaver sits in a sparse region of the domain-specific corpus (100th percentile for distinctiveness): few abstractions share its structure, so a faithful description tends to retrieve it precisely.

Family — Unclustered & Miscellaneous (2721 abstractions)

Nearest neighbors

Computed from structural-signature embeddings · 2026-10-17

References

[^ref-f8ad2500e419]: Eclipse AspectJ Project. “Load-Time Weaving.” AspectJ Programming Guide, current online edition. https://eclipse.dev/aspectj/doc/latest/devguide/ltw.html. Retained full maintainer-guide capture; Introduction and “Load-time Weaving Requirements” plus configuration sections. Supports AspectJ input/output and compile, post-compile, load-time variants; loader visibility and already-defined-class limits.

[^ref-79ad13a4af92]: Eclipse AspectJ Project. “The AspectJ Language.” AspectJ Programming Guide, current online edition. https://eclipse.dev/aspectj/doc/latest/progguide/language.html. Retained full maintainer-guide capture; join points, pointcuts, advice, inter-type declarations, and static versus dynamic join-point context.

[^ref-c72d35107c7f]: Eclipse AspectJ Project. “The ajc Command.” AspectJ Development Guide, current online edition. https://eclipse.dev/aspectj/doc/latest/devguide/ajc.html. Retained full maintainer-guide capture; compiler/weaver inputs and options. This citation establishes the combined tool route, not a universal compiler parent.

[^ref-39b891d27631]: Olaf Spinczyk, Daniel Lohmann, and Matthias Urban. “Advances in AOP with AspectC++.” Software Methodologies, Tools and Techniques (SoMeT 2005), pp. 33–53. Author-hosted full PDF: https://www.aspectc.org/doc/somet-2005.pdf. Relevant PDF pages 4–6 (pointcuts and advice), 12–13 (Reusable Observer and Win32 Errorhandling), 14–16 (ac++ source-to-source architecture), and 18 (overhead discussion). The PDF carries a stale 2003 template header; the author publication index supplies the 2005 bibliographic identity. Worked examples were inspected as author accounts, not rerun.

[^ref-b95b9c85cd9a]: ETH Zurich PROSE Project. “PROSE.” Archived project account. https://prose.ethz.ch/. Overview and “About the PROSE project” describe extension deployment, affected execution points, retraction, and alternative debugger, JIT, and bytecode mechanisms. This is a primary project retrospective rather than inspected 2002 methods or benchmark tables.

[^ref-ba096d833717]: Andrei Popovici, Thomas R. Gross, and Gustavo Alonso. “Dynamic Weaving for Aspect-Oriented Programming.” Proceedings of the 1st International Conference on Aspect-Oriented Software Development (AOSD 2002). https://doi.org/10.1145/508386.508404. Original-paper title, author, year, and indexed abstract were inspected through the ETH publication listing and metadata; full paper was unavailable here. Cited only for abstract-level research aim, never for mechanics or numerical results.