AspectJ
AspectJ ist eine aspektorientierte Erweiterung von Java, welche bei Xerox PARC entwickelt wurde und nun ein Open-Source-Projekt der Eclipse Foundation ist. Es ist als alleinstehendes Programm und als Eclipse-Zusatzmodul verfügbar.<ref>Xerox besitzt das {{#if:{{#ifexpr:{{#if:US|0|1}} or {{#if:6467086|0|1}}|1}}|Fehlender Parameter {{#if:US||„Land“{{#if:6467086|| und }}}}{{#if:6467086||„V-Nr“}}|}}{{#if: {{#invoke:Expr|TemplateBooland}}|{{#ifeq:|Patentanmeldung|Patentanmeldung|{{#ifeq:|Gebrauchsmuster|Gebrauchsmuster|Patent}}}} {{#if:{{#invoke:TemplUtl|faculty|}}|US6467086|{{#switch: {{{DB}}} | DEPATIS =US6467086 | WIPO = US6467086 | Google = US6467086 | #default =US6467086 }}}}{{#if:|:|.}}{{#if:| {{{Titel}}}.}}{{#if:| Angemeldet am {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}{{#if:|,}}}}{{#if:|{{#if:| veröffentlicht am | Veröffentlicht am }}{{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}{{#if:|,}}}}{{#if:| Anmelder: {{{Anmelder}}}{{#if:|,}}}}{{#if:| Erfinder: {{{Erfinder}}}}}{{#if:| ({{{Kommentar}}})}}{{#if:|.}}}}{{#invoke:TemplatePar|match |template= Vorlage:Patent |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Patent}} |format= |preview=@@@ |1=Land= ABC+ |2=V-Nr= /^[0-9A-Z]+$/ |3=Titel= * |4=Erfinder= * |5=Anmelder= * |6=A-Datum= * |7=V-Datum= * |8=Typ= ASCII |9=Code= ASCII |10=Kommentar= * |11=KeinLink= ASCII |12=DB=ASCII }} für AOP/AspectJ, aber veröffentlichte den AspectJ-Quellcode unter der Common Public License, welche einige Patentrechte garantiert.</ref>
Ein AspectJ-Compiler bindet Aspekte in normalen Java-Bytecode ein, um das ereignisbasierte System zu implementieren. Aspekte sind in einer Kombination von Java und AspectJ geschrieben und durch eine zusätzliche Vor-Klasse in Java eingebunden, um Standard-Java-Bytecode erzeugen zu können und so AspectJ mit Java kompatibel zu machen.
Im Moment gibt es zwei AspectJ-Compiler: ajc, welcher ein Teil des Eclipse-AspectJ-Projektes ist, und abc, ein erweiterbarer optimierender Compiler, welcher von aspectbench.org erstellt wurde. AspectJ wurde auch auf andere Programmiersprachen portiert, etwa auf Common Lisp (AspectL) und Ruby (AspectR). In diesen beiden Portierungen ist kein spezieller Compiler nötig; die Aspekte können in das existierende objektbasierte System einprogrammiert werden.
Das Programmierframework Spring bietet eine gute Unterstützung für AspectJ.
Literatur
- Adrian Colyer, Andy Clement, George Harley: Eclipse AspectJ. Addison-Wesley, 2004, ISBN 0-321-24587-3.
- Oliver Böhm: Aspektorientierte Programmierung mit AspectJ 5. dpunkt, 2005, ISBN 3-898-64330-1.
Weblinks
- eclipse.org/aspectj
- <templatestyles src="Webarchiv/styles.css" />{{#if:20110809174841
| {{#ifeq: 20110809174841 | *
| {{#if: abc: The AspectBench Compiler for AspectJ | {{#invoke:WLink|getEscapedTitle|abc: The AspectBench Compiler for AspectJ}} | {{#invoke:Webarchiv|getdomain|http://www.sable.mcgill.ca/abc/}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20110809174841}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: abc: The AspectBench Compiler for AspectJ | {{#invoke:WLink|getEscapedTitle|abc: The AspectBench Compiler for AspectJ}} | {{#invoke:Webarchiv|getdomain|http://www.sable.mcgill.ca/abc/}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20110809174841}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: abc: The AspectBench Compiler for AspectJ | {{#invoke:WLink|getEscapedTitle|abc: The AspectBench Compiler for AspectJ}} | {{#invoke:Webarchiv|getdomain|http://www.sable.mcgill.ca/abc/}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: abc: The AspectBench Compiler for AspectJ | {{#invoke:WLink|getEscapedTitle|abc: The AspectBench Compiler for AspectJ}} | {{#invoke:Webarchiv|getdomain|http://www.sable.mcgill.ca/abc/}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: abc: The AspectBench Compiler for AspectJ | {{#invoke:WLink|getEscapedTitle|abc: The AspectBench Compiler for AspectJ}} | {{#invoke:Webarchiv|getdomain|http://www.sable.mcgill.ca/abc/}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: abc: The AspectBench Compiler for AspectJ | {{#invoke:WLink|getEscapedTitle|abc: The AspectBench Compiler for AspectJ}} | {{#invoke:Webarchiv|getdomain|http://www.sable.mcgill.ca/abc/}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20110809174841|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.sable.mcgill.ca/abc/}}
|| {{#if: || }}
}}{{#if: abc: The AspectBench Compiler for AspectJ
| {{#if: {{#invoke:WLink|isBracketedLink|abc: The AspectBench Compiler for AspectJ}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://www.sable.mcgill.ca/abc/%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.sable.mcgill.ca/abc/%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://www.sable.mcgill.ca/abc/ }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}
Einzelnachweise
<references />