Examine individual changes
Appearance
This page allows you to examine the variables generated by the Edit Filter for an individual change.
Variables generated for this change
Variable | Value |
---|---|
Edit count of the user (user_editcount ) | 4 |
Name of the user account (user_name ) | 'Kriegaex' |
Age of the user account (user_age ) | 496113388 |
Groups (including implicit) the user is in (user_groups ) | [
0 => '*',
1 => 'user'
] |
Rights that the user has (user_rights ) | [
0 => 'createaccount',
1 => 'read',
2 => 'edit',
3 => 'createtalk',
4 => 'writeapi',
5 => 'viewmyprivateinfo',
6 => 'editmyprivateinfo',
7 => 'editmyoptions',
8 => 'abusefilter-log-detail',
9 => 'urlshortener-create-url',
10 => 'centralauth-merge',
11 => 'abusefilter-view',
12 => 'abusefilter-log',
13 => 'vipsscaler-test',
14 => 'collectionsaveasuserpage',
15 => 'reupload-own',
16 => 'move-rootuserpages',
17 => 'createpage',
18 => 'minoredit',
19 => 'editmyusercss',
20 => 'editmyuserjson',
21 => 'editmyuserjs',
22 => 'sendemail',
23 => 'applychangetags',
24 => 'viewmywatchlist',
25 => 'editmywatchlist',
26 => 'spamblacklistlog',
27 => 'mwoauthmanagemygrants'
] |
Whether or not a user is editing through the mobile interface (user_mobile ) | false |
Global edit count of the user (global_user_editcount ) | 24 |
Whether the user is editing from mobile app (user_app ) | false |
Page ID (page_id ) | 237214 |
Page namespace (page_namespace ) | 0 |
Page title without namespace (page_title ) | 'AspectJ' |
Full page title (page_prefixedtitle ) | 'AspectJ' |
Edit protection level of the page (page_restrictions_edit ) | [] |
Last ten users to contribute to the page (page_recent_contributors ) | [
0 => 'Kriegaex',
1 => 'Kinkreet',
2 => 'Osarius',
3 => 'Palosirkka',
4 => 'NaTRenKO',
5 => 'Monkbot',
6 => 'Udittmer',
7 => 'Trivialist',
8 => 'GZWDer',
9 => 'InternetArchiveBot'
] |
Page age in seconds (page_age ) | 656513997 |
Action (action ) | 'edit' |
Edit summary/reason (summary ) | 'AspectWerkz & AspectJ merge announcement' |
Old content model (old_content_model ) | 'wikitext' |
New content model (new_content_model ) | 'wikitext' |
Old page wikitext, before the edit (old_wikitext ) | '{{Infobox programming language
| name = AspectJ
| logo =
| caption = [[Cross-cutting concern|crosscutting]] objects for better modularity
| paradigm = [[Aspect-oriented programming|aspect-oriented]]
| released = {{Start date|2001}}
| designer =
| developer = [[Eclipse Foundation]]
| latest release version = {{wikidata|property|reference|edit|P348}}
| latest release date = {{Start date and age|{{wikidata|qualifier|P348|P577}}}}
| typing =
| implementations = [[The AspectJ Development Tools]] for [[Eclipse (software)|Eclipse]]
| dialects =
| influenced by =
| influenced =
| programming language = [[Java (programming language)|Java]]
| operating system = [[Cross-platform]]
| license = [[Eclipse Public License]]
| website = {{URL|http://www.eclipse.org/aspectj/}}
| file ext = aj
| wikibooks =
}}
'''AspectJ''' is an [[aspect-oriented programming]] (AOP) extension for the [[Java (programming language)|Java]] programming language, created at [[PARC (company)|PARC]]. It is available in [[Eclipse Foundation]] open-source projects, both stand-alone and integrated into [[Eclipse (computing)|Eclipse]]. AspectJ has become a widely used de facto standard for AOP by emphasizing simplicity and usability for end users. It uses Java-like syntax, and included IDE integrations for displaying [[Cross-cutting concern|crosscutting structure]] since its initial public release in 2001.
==Simple language description==
All valid Java programs are also valid AspectJ programs, but AspectJ lets programmers define special constructs called ''[[Aspect-oriented software development#Aspects|aspects]]''. Aspects can contain several entities unavailable to standard classes. These are:
;[[Extension method]]s: Allow a programmer to add methods, fields, or interfaces to existing classes from within the aspect. This example adds an <code>acceptVisitor</code> (see [[visitor pattern]]) method to the <code>Point</code> class:
:<syntaxhighlight lang="aspectj">
aspect VisitAspect {
void Point.acceptVisitor(Visitor v) {
v.visit(this);
}
}
</syntaxhighlight>
;[[Pointcut]]s: Allow a programmer to specify [[join point]]s (well-defined moments in the execution of a program, like method call, object instantiation, or variable access). All pointcuts are expressions ([[Aspect-oriented software development#Quantification and obliviousness|quantifications]]) that determine whether a given join point matches. For example, this point-cut matches the execution of any instance method in an object of type <code>Point</code> whose name begins with <code>set</code>:
:<syntaxhighlight lang="aspectj">
pointcut set() : execution(* set*(..) ) && this(Point);
</syntaxhighlight>
;[[Advice (programming)|Advices]]: Allow a programmer to specify code to run at a join point matched by a [[pointcut]]. The actions can be performed ''before'', ''after'', or ''around'' the specified [[join point]]. Here, the advice refreshes the display every time something on <code>Point</code> is set, using the pointcut declared above:
:<syntaxhighlight lang="aspectj">
after () : set() {
Display.update();
}
</syntaxhighlight>
AspectJ also supports limited forms of pointcut-based static checking and aspect reuse (by inheritance). See the [http://www.eclipse.org/aspectj/doc/released/progguide/index.html AspectJ Programming Guide] for a more detailed description of the language.
==AspectJ compatibility and implementations==
AspectJ can be implemented in many ways, including [[source-weaving]] or [[bytecode-weaving]], and directly in the [[virtual machine|virtual machine (VM)]]. In all cases, the AspectJ program becomes a valid Java program that runs in a Java VM. Classes affected by aspects are binary-compatible with unaffected classes (to remain compatible with classes compiled with the unaffected originals). Supporting multiple implementations allows the language to grow as technology changes, and being Java-compatible ensures platform availability.
Key to its success has been engineering and language decisions that make the language usable and programs deployable. The original Xerox AspectJ implementation used source weaving, which required access to source code. When Xerox contributed the code to Eclipse, AspectJ was reimplemented using the Eclipse Java compiler and a bytecode weaver based on [[BCEL]], so developers could write aspects for code in binary (.class) form. At this time the AspectJ language was restricted to support a per-class model essential for incremental compilation and load-time weaving. This made IDE integrations as responsive as their Java counterparts, and it let developers deploy aspects without altering the build process. This led to increased adoption, as AspectJ became usable for impatient Java programmers and enterprise-level deployments. Since then, the Eclipse team has increased performance and correctness, upgraded the AspectJ language to support [[Java 5]] language features like [[Generics in Java|generics]] and [[Java annotation|annotations]], and integrated annotation-style pure-java aspects from [[AspectWerkz]].
The Eclipse project supports both command-line and [[Apache Ant|Ant]] interfaces. A related Eclipse project has steadily improved the Eclipse IDE support for AspectJ (called ''AspectJ Development Tools ([[AJDT]])'') and other providers of crosscutting structure. IDE support for [[emacs]], [[NetBeans]], and [[JBuilder]] foundered when Xerox put them into open source, but support for Oracle's JDeveloper did appear. IDE support has been key to Java programmers using AspectJ and understanding crosscutting concerns.
BEA has offered limited VM support for aspect-oriented extensions, but for extensions supported in all Java VM's would require agreement through Sun's Java Community Process (see also the java.lang.instrument package available since Java SE 5 — which is a common ground for JVM load-time instrumentation).
Academic interest in the semantics and implementation of [[Aspect-oriented programming|aspect-oriented]] languages has surrounded AspectJ since its release. The leading research implementation of AspectJ is the [http://www.sable.mcgill.ca/abc/ AspectBench Compiler], or ''abc''; it supports extensions for changing the syntax and semantics of the language and forms the basis for many AOP experiments that the AspectJ team can no longer support, given its broad user base.
Many programmers discover AspectJ as an enabling technology for other projects, most notably [[Spring Framework (Java)#Aspect-oriented programming framework|Spring AOP]]. A sister Spring project, [[Spring Roo]], automatically maintains AspectJ [[mixins|inter-type declarations]] as its principal code generation output.
==History and contributors==
[[Gregor Kiczales]] started and led the [[Xerox PARC]] team that eventually developed AspectJ. He coined the term ''crosscutting''. Fourth on the team, [[Chris Maeda]] coined the term ''aspect-oriented programming.'' [[Jim Hugunin]] and [[Erik Hilsdale]] ([[Xerox PARC]] team members 12 and 13) were the original compiler and weaver engineers, [[Mik Kersten]] implemented the IDE integration and started the [http://eclipse.org/ajdt Eclipse AJDT] project with [[Adrian Colyer]] and [[Andrew Clement]]. After Adrian Colyer, Andrew Clement took over as project lead and main contributor for AspectJ. AJDT has since been retired as a separate project and taken over into the Eclipse AspectJ umbrella project to streamline maintenance. However, both AspectJ and AJDT are still maintained in separate source repositories.
In 2021, [[Alexander Kriegisch]] joined the project, first as a contributor, then as a committer and maintainer. Since March 2021, he is basically the sole maintainer. Since 2024, he also is formally the AspectJ and AJDT project lead.
The [[AspectBench Compiler]] was developed and is maintained as a joint effort of the [[Programming Tools Group]] at the [[Oxford University Computing Laboratory]], the [[Sable Research Group]] at [[McGill University]], and the Institute for [[BRICS Institute|Basic Research in Computer Science (BRICS)]].
===AspectWerkz===
AspectWerkz was a dynamic, lightweight and high-performance [[Aspect-oriented programming|AOP/AOSD]] framework for [[Java (programming language)|Java]]. It has been merged with the AspectJ project, which supports AspectWerkz functionality since AspectJ 5.
[[Jonas Boner]] and [[Alex Vasseur]] engineered the AspectWerkz project, and later contributed to the AspectJ project when it merged in the AspectWerkz annotation style and load-time weaving support.
Unlike AspectJ prior to version 5, AspectWerkz did not add any new language constructs to Java, but instead supported declaration of aspects within [[Java annotation]]s. It utilizes bytecode modification to [[Aspect weaver|weave]] classes at project build-time, class load time, as well as [[Run time (program lifecycle phase)|runtime]]. It uses standardized {{clarify span|JVM level APIs|date=September 2013}}. Aspects can be defined using either Java annotations (introduced with Java 5), Java 1.3/1.4 custom [[doclet]] or a simple XML definition file.
AspectWerkz provides an API to use the very same aspects for proxies, hence providing a transparent experience, allowing a smooth transition for users familiar with proxies.
AspectWerkz is [[free software]]. The [[GNU Lesser General Public License|LGPL]]-style license allows the use of AspectWerkz 2.0 in both commercial and open source projects.
==See also==
* [[Aspect-oriented programming]]
* [[Spring AOP]] (part of the [[Spring Framework (Java)|Spring Framework]])
* [[Aspect-oriented software development]]
==References==
{{refbegin}}
* {{citation
| first1 = Ramnivas
| last1 = Laddad
| title = AspectJ in Action: Enterprise AOP with Spring
| date = September 28, 2009
| edition = 2nd
| publisher = [[Manning Publications]]
| pages = 550
| isbn = 978-1-933988-05-4
}}
* {{citation
| first1 = Russ
| last1 = Miles
| title = AspectJ Cookbook
| date = December 20, 2004
| edition = 1st
| publisher = [[O'Reilly Media]]
| pages = 354
| isbn = 978-0-596-00654-9
| url = http://oreilly.com/catalog/9780596006549/
}}
* {{citation
| first1 = Adrian
| last1 = Colyer
| first2 = Andy
| last2 = Clement
| first3 = George
| last3 = Harley
| first4 = Matthew
| last4 = Webster
| title = Eclipse AspectJ: Aspect-Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools
| date = December 24, 2004
| edition = 1st
| publisher = [[Addison-Wesley Professional]]
| pages = 504
| isbn = 978-0-321-24587-8
| url = http://www.informit.com/store/product.aspx?isbn=0321245873
}}
* {{citation |first1 = Joseph D.
|last1 = Gradecki
|first2 = Nicholas
|last2 = Lesiecki
|title = Mastering AspectJ: Aspect-Oriented Programming in Java
|date = March 7, 2003
|edition = 1st
|publisher = [[John Wiley & Sons|Wiley]]
|pages = [https://archive.org/details/masteringaspectj00grad/page/456 456]
|isbn = 978-0-471-43104-6
|url = https://archive.org/details/masteringaspectj00grad/page/456
|url-access = registration
}}
{{refend}}
== External links ==
* [https://web.archive.org/web/20170811190325/http://www.eclipse.org/ajdt/ AJDT]
* Aspect bench : https://web.archive.org/web/20170816093700/http://www.sable.mcgill.ca/abc/
* [https://web.archive.org/web/20170805180224/http://www.eclipse.org/aspectj/ AspectJ Home Page]
* [https://web.archive.org/web/20060706114810/http://aspectwerkz.codehaus.org/ AspectWerkz Project homepage]
* [http://www.ibm.com/developerworks/java/library/j-aspectj Improve modularity with aspect-oriented programming]
* [http://java2novice.com/spring/aop-and-aspectj-introduction/ Spring AOP and AspectJ Introduction]
* [http://www.eclipse.org/aspectj/doc/released/progguide/index.html The AspectJ Programming Guide]
* Xerox has {{US patent|6467086}} for AOP/AspectJ, but published AspectJ source code under the [http://www.eclipse.org/legal/cpl-v10.html Common Public License], which grants some patent rights.
{{aosd}}
{{Eclipse Foundation}}
{{DEFAULTSORT:Aspectj}}
[[Category:Programming languages]]
[[Category:Aspect-oriented programming]]
[[Category:Aspect-oriented software development]]
[[Category:Cross-platform software]]
[[Category:Eclipse (software)]]
[[Category:Eclipse software]]
[[Category:Eclipse technology]]
[[Category:Java programming language family]]
[[Category:Software distribution]]
[[Category:Software using the Eclipse license]]
[[Category:Programming languages created in 2001]]
[[Category:2001 software]]
[[Category:Cross-platform free software]]
[[Category:High-level programming languages]]' |
New page wikitext, after the edit (new_wikitext ) | '{{Infobox programming language
| name = AspectJ
| logo =
| caption = [[Cross-cutting concern|crosscutting]] objects for better modularity
| paradigm = [[Aspect-oriented programming|aspect-oriented]]
| released = {{Start date|2001}}
| designer =
| developer = [[Eclipse Foundation]]
| latest release version = {{wikidata|property|reference|edit|P348}}
| latest release date = {{Start date and age|{{wikidata|qualifier|P348|P577}}}}
| typing =
| implementations = [[The AspectJ Development Tools]] for [[Eclipse (software)|Eclipse]]
| dialects =
| influenced by =
| influenced =
| programming language = [[Java (programming language)|Java]]
| operating system = [[Cross-platform]]
| license = [[Eclipse Public License]]
| website = {{URL|http://www.eclipse.org/aspectj/}}
| file ext = aj
| wikibooks =
}}
'''AspectJ''' is an [[aspect-oriented programming]] (AOP) extension for the [[Java (programming language)|Java]] programming language, created at [[PARC (company)|PARC]]. It is available in [[Eclipse Foundation]] open-source projects, both stand-alone and integrated into [[Eclipse (computing)|Eclipse]]. AspectJ has become a widely used de facto standard for AOP by emphasizing simplicity and usability for end users. It uses Java-like syntax, and included IDE integrations for displaying [[Cross-cutting concern|crosscutting structure]] since its initial public release in 2001.
==Simple language description==
All valid Java programs are also valid AspectJ programs, but AspectJ lets programmers define special constructs called ''[[Aspect-oriented software development#Aspects|aspects]]''. Aspects can contain several entities unavailable to standard classes. These are:
;[[Extension method]]s: Allow a programmer to add methods, fields, or interfaces to existing classes from within the aspect. This example adds an <code>acceptVisitor</code> (see [[visitor pattern]]) method to the <code>Point</code> class:
:<syntaxhighlight lang="aspectj">
aspect VisitAspect {
void Point.acceptVisitor(Visitor v) {
v.visit(this);
}
}
</syntaxhighlight>
;[[Pointcut]]s: Allow a programmer to specify [[join point]]s (well-defined moments in the execution of a program, like method call, object instantiation, or variable access). All pointcuts are expressions ([[Aspect-oriented software development#Quantification and obliviousness|quantifications]]) that determine whether a given join point matches. For example, this point-cut matches the execution of any instance method in an object of type <code>Point</code> whose name begins with <code>set</code>:
:<syntaxhighlight lang="aspectj">
pointcut set() : execution(* set*(..) ) && this(Point);
</syntaxhighlight>
;[[Advice (programming)|Advices]]: Allow a programmer to specify code to run at a join point matched by a [[pointcut]]. The actions can be performed ''before'', ''after'', or ''around'' the specified [[join point]]. Here, the advice refreshes the display every time something on <code>Point</code> is set, using the pointcut declared above:
:<syntaxhighlight lang="aspectj">
after () : set() {
Display.update();
}
</syntaxhighlight>
AspectJ also supports limited forms of pointcut-based static checking and aspect reuse (by inheritance). See the [http://www.eclipse.org/aspectj/doc/released/progguide/index.html AspectJ Programming Guide] for a more detailed description of the language.
==AspectJ compatibility and implementations==
AspectJ can be implemented in many ways, including [[source-weaving]] or [[bytecode-weaving]], and directly in the [[virtual machine|virtual machine (VM)]]. In all cases, the AspectJ program becomes a valid Java program that runs in a Java VM. Classes affected by aspects are binary-compatible with unaffected classes (to remain compatible with classes compiled with the unaffected originals). Supporting multiple implementations allows the language to grow as technology changes, and being Java-compatible ensures platform availability.
Key to its success has been engineering and language decisions that make the language usable and programs deployable. The original Xerox AspectJ implementation used source weaving, which required access to source code. When Xerox contributed the code to Eclipse, AspectJ was reimplemented using the Eclipse Java compiler and a bytecode weaver based on [[BCEL]], so developers could write aspects for code in binary (.class) form. At this time the AspectJ language was restricted to support a per-class model essential for incremental compilation and load-time weaving. This made IDE integrations as responsive as their Java counterparts, and it let developers deploy aspects without altering the build process. This led to increased adoption, as AspectJ became usable for impatient Java programmers and enterprise-level deployments. Since then, the Eclipse team has increased performance and correctness, upgraded the AspectJ language to support [[Java 5]] language features like [[Generics in Java|generics]] and [[Java annotation|annotations]], and integrated annotation-style pure-java aspects from [[AspectWerkz]].
The Eclipse project supports both command-line and [[Apache Ant|Ant]] interfaces. A related Eclipse project has steadily improved the Eclipse IDE support for AspectJ (called ''AspectJ Development Tools ([[AJDT]])'') and other providers of crosscutting structure. IDE support for [[emacs]], [[NetBeans]], and [[JBuilder]] foundered when Xerox put them into open source, but support for Oracle's JDeveloper did appear. IDE support has been key to Java programmers using AspectJ and understanding crosscutting concerns.
BEA has offered limited VM support for aspect-oriented extensions, but for extensions supported in all Java VM's would require agreement through Sun's Java Community Process (see also the java.lang.instrument package available since Java SE 5 — which is a common ground for JVM load-time instrumentation).
Academic interest in the semantics and implementation of [[Aspect-oriented programming|aspect-oriented]] languages has surrounded AspectJ since its release. The leading research implementation of AspectJ is the [http://www.sable.mcgill.ca/abc/ AspectBench Compiler], or ''abc''; it supports extensions for changing the syntax and semantics of the language and forms the basis for many AOP experiments that the AspectJ team can no longer support, given its broad user base.
Many programmers discover AspectJ as an enabling technology for other projects, most notably [[Spring Framework (Java)#Aspect-oriented programming framework|Spring AOP]]. A sister Spring project, [[Spring Roo]], automatically maintains AspectJ [[mixins|inter-type declarations]] as its principal code generation output.
==History and contributors==
[[Gregor Kiczales]] started and led the [[Xerox PARC]] team that eventually developed AspectJ. He coined the term ''crosscutting''. Fourth on the team, [[Chris Maeda]] coined the term ''aspect-oriented programming.'' [[Jim Hugunin]] and [[Erik Hilsdale]] ([[Xerox PARC]] team members 12 and 13) were the original compiler and weaver engineers, [[Mik Kersten]] implemented the IDE integration and started the [http://eclipse.org/ajdt Eclipse AJDT] project with [[Adrian Colyer]] and [[Andrew Clement]]. After Adrian Colyer, Andrew Clement took over as project lead and main contributor for AspectJ. AJDT has since been retired as a separate project and taken over into the Eclipse AspectJ umbrella project to streamline maintenance. However, both AspectJ and AJDT are still maintained in separate source repositories.
In 2021, [[Alexander Kriegisch]] joined the project, first as a contributor, then as a committer and maintainer. Since March 2021, he is basically the sole maintainer. Since 2024, he also is formally the AspectJ and AJDT project lead.
The [[AspectBench Compiler]] was developed and is maintained as a joint effort of the [[Programming Tools Group]] at the [[Oxford University Computing Laboratory]], the [[Sable Research Group]] at [[McGill University]], and the Institute for [[BRICS Institute|Basic Research in Computer Science (BRICS)]].
===AspectWerkz===
AspectWerkz was a dynamic, lightweight and high-performance [[Aspect-oriented programming|AOP/AOSD]] framework for [[Java (programming language)|Java]]. It has been [https://web.archive.org/web/20060712004603/http://aspectwerkz.codehaus.org/index-merge.html merged with the AspectJ project], which supports AspectWerkz functionality since AspectJ 5.
[[Jonas Boner]] and [[Alex Vasseur]] engineered the AspectWerkz project, and later contributed to the AspectJ project when it merged in the AspectWerkz annotation style and load-time weaving support.
Unlike AspectJ prior to version 5, AspectWerkz did not add any new language constructs to Java, but instead supported declaration of aspects within [[Java annotation]]s. It utilizes bytecode modification to [[Aspect weaver|weave]] classes at project build-time, class load time, as well as [[Run time (program lifecycle phase)|runtime]]. It uses standardized {{clarify span|JVM level APIs|date=September 2013}}. Aspects can be defined using either Java annotations (introduced with Java 5), Java 1.3/1.4 custom [[doclet]] or a simple XML definition file.
AspectWerkz provides an API to use the very same aspects for proxies, hence providing a transparent experience, allowing a smooth transition for users familiar with proxies.
AspectWerkz is [[free software]]. The [[GNU Lesser General Public License|LGPL]]-style license allows the use of AspectWerkz 2.0 in both commercial and open source projects.
==See also==
* [[Aspect-oriented programming]]
* [[Spring AOP]] (part of the [[Spring Framework (Java)|Spring Framework]])
* [[Aspect-oriented software development]]
==References==
{{refbegin}}
* {{citation
| first1 = Ramnivas
| last1 = Laddad
| title = AspectJ in Action: Enterprise AOP with Spring
| date = September 28, 2009
| edition = 2nd
| publisher = [[Manning Publications]]
| pages = 550
| isbn = 978-1-933988-05-4
}}
* {{citation
| first1 = Russ
| last1 = Miles
| title = AspectJ Cookbook
| date = December 20, 2004
| edition = 1st
| publisher = [[O'Reilly Media]]
| pages = 354
| isbn = 978-0-596-00654-9
| url = http://oreilly.com/catalog/9780596006549/
}}
* {{citation
| first1 = Adrian
| last1 = Colyer
| first2 = Andy
| last2 = Clement
| first3 = George
| last3 = Harley
| first4 = Matthew
| last4 = Webster
| title = Eclipse AspectJ: Aspect-Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools
| date = December 24, 2004
| edition = 1st
| publisher = [[Addison-Wesley Professional]]
| pages = 504
| isbn = 978-0-321-24587-8
| url = http://www.informit.com/store/product.aspx?isbn=0321245873
}}
* {{citation |first1 = Joseph D.
|last1 = Gradecki
|first2 = Nicholas
|last2 = Lesiecki
|title = Mastering AspectJ: Aspect-Oriented Programming in Java
|date = March 7, 2003
|edition = 1st
|publisher = [[John Wiley & Sons|Wiley]]
|pages = [https://archive.org/details/masteringaspectj00grad/page/456 456]
|isbn = 978-0-471-43104-6
|url = https://archive.org/details/masteringaspectj00grad/page/456
|url-access = registration
}}
{{refend}}
== External links ==
* [https://web.archive.org/web/20170811190325/http://www.eclipse.org/ajdt/ AJDT]
* Aspect bench : https://web.archive.org/web/20170816093700/http://www.sable.mcgill.ca/abc/
* [https://web.archive.org/web/20170805180224/http://www.eclipse.org/aspectj/ AspectJ Home Page]
* [https://web.archive.org/web/20060706114810/http://aspectwerkz.codehaus.org/ AspectWerkz Project homepage]
* [http://www.ibm.com/developerworks/java/library/j-aspectj Improve modularity with aspect-oriented programming]
* [http://java2novice.com/spring/aop-and-aspectj-introduction/ Spring AOP and AspectJ Introduction]
* [http://www.eclipse.org/aspectj/doc/released/progguide/index.html The AspectJ Programming Guide]
* Xerox has {{US patent|6467086}} for AOP/AspectJ, but published AspectJ source code under the [http://www.eclipse.org/legal/cpl-v10.html Common Public License], which grants some patent rights.
{{aosd}}
{{Eclipse Foundation}}
{{DEFAULTSORT:Aspectj}}
[[Category:Programming languages]]
[[Category:Aspect-oriented programming]]
[[Category:Aspect-oriented software development]]
[[Category:Cross-platform software]]
[[Category:Eclipse (software)]]
[[Category:Eclipse software]]
[[Category:Eclipse technology]]
[[Category:Java programming language family]]
[[Category:Software distribution]]
[[Category:Software using the Eclipse license]]
[[Category:Programming languages created in 2001]]
[[Category:2001 software]]
[[Category:Cross-platform free software]]
[[Category:High-level programming languages]]' |
Unified diff of changes made by edit (edit_diff ) | '@@ -74,5 +74,5 @@
===AspectWerkz===
-AspectWerkz was a dynamic, lightweight and high-performance [[Aspect-oriented programming|AOP/AOSD]] framework for [[Java (programming language)|Java]]. It has been merged with the AspectJ project, which supports AspectWerkz functionality since AspectJ 5.
+AspectWerkz was a dynamic, lightweight and high-performance [[Aspect-oriented programming|AOP/AOSD]] framework for [[Java (programming language)|Java]]. It has been [https://web.archive.org/web/20060712004603/http://aspectwerkz.codehaus.org/index-merge.html merged with the AspectJ project], which supports AspectWerkz functionality since AspectJ 5.
[[Jonas Boner]] and [[Alex Vasseur]] engineered the AspectWerkz project, and later contributed to the AspectJ project when it merged in the AspectWerkz annotation style and load-time weaving support.
' |
New page size (new_size ) | 12830 |
Old page size (old_size ) | 12736 |
Size change in edit (edit_delta ) | 94 |
Lines added in edit (added_lines ) | [
0 => 'AspectWerkz was a dynamic, lightweight and high-performance [[Aspect-oriented programming|AOP/AOSD]] framework for [[Java (programming language)|Java]]. It has been [https://web.archive.org/web/20060712004603/http://aspectwerkz.codehaus.org/index-merge.html merged with the AspectJ project], which supports AspectWerkz functionality since AspectJ 5.'
] |
Lines removed in edit (removed_lines ) | [
0 => 'AspectWerkz was a dynamic, lightweight and high-performance [[Aspect-oriented programming|AOP/AOSD]] framework for [[Java (programming language)|Java]]. It has been merged with the AspectJ project, which supports AspectWerkz functionality since AspectJ 5.'
] |
All external links added in the edit (added_links ) | [
0 => 'https://web.archive.org/web/20060712004603/http://aspectwerkz.codehaus.org/index-merge.html'
] |
All external links removed in the edit (removed_links ) | [] |
All external links in the new text (all_links ) | [
0 => 'https://www.wikidata.org/wiki/Q735604?uselang=en#P348',
1 => 'http://www.eclipse.org/aspectj/',
2 => 'http://www.eclipse.org/aspectj/doc/released/progguide/index.html',
3 => 'http://www.sable.mcgill.ca/abc/',
4 => 'http://eclipse.org/ajdt',
5 => 'https://web.archive.org/web/20060712004603/http://aspectwerkz.codehaus.org/index-merge.html',
6 => 'http://oreilly.com/catalog/9780596006549/',
7 => 'http://www.informit.com/store/product.aspx?isbn=0321245873',
8 => 'https://archive.org/details/masteringaspectj00grad/page/456',
9 => 'https://web.archive.org/web/20170811190325/http://www.eclipse.org/ajdt/',
10 => 'https://web.archive.org/web/20170805180224/http://www.eclipse.org/aspectj/',
11 => 'https://web.archive.org/web/20060706114810/http://aspectwerkz.codehaus.org/',
12 => 'http://www.ibm.com/developerworks/java/library/j-aspectj',
13 => 'http://java2novice.com/spring/aop-and-aspectj-introduction/',
14 => 'https://patents.google.com/patent/US6467086',
15 => 'http://www.eclipse.org/legal/cpl-v10.html',
16 => 'https://web.archive.org/web/20170816093700/http://www.sable.mcgill.ca/abc/',
17 => 'https://github.com/eclipse-aspectj/aspectj/releases/tag/V1_9_21_2'
] |
Links in the page, before the edit (old_links ) | [
0 => 'http://www.eclipse.org/aspectj/doc/released/progguide/index.html',
1 => 'http://eclipse.org/ajdt',
2 => 'http://www.eclipse.org/legal/cpl-v10.html',
3 => 'http://www.ibm.com/developerworks/java/library/j-aspectj',
4 => 'http://oreilly.com/catalog/9780596006549/',
5 => 'http://www.informit.com/store/product.aspx?isbn=0321245873',
6 => 'http://java2novice.com/spring/aop-and-aspectj-introduction/',
7 => 'http://www.sable.mcgill.ca/abc/',
8 => 'https://web.archive.org/web/20060706114810/http://aspectwerkz.codehaus.org/',
9 => 'http://www.eclipse.org/aspectj/',
10 => 'https://web.archive.org/web/20170811190325/http://www.eclipse.org/ajdt/',
11 => 'https://archive.org/details/masteringaspectj00grad/page/456',
12 => 'https://web.archive.org/web/20170805180224/http://www.eclipse.org/aspectj/',
13 => 'https://web.archive.org/web/20170816093700/http://www.sable.mcgill.ca/abc/',
14 => 'https://patents.google.com/patent/US6467086',
15 => 'https://www.wikidata.org/wiki/Q735604?uselang=en#P348',
16 => 'https://github.com/eclipse-aspectj/aspectj/releases/tag/V1_9_21_2'
] |
Whether or not the change was made through a Tor exit node (tor_exit_node ) | false |
Unix timestamp of change (timestamp ) | '1710845851' |