Aspect-oriented programming: Difference between revisions

Content deleted Content added
Criticism: put punctuation before tags
Tags: Mobile edit Mobile web edit Advanced mobile edit
Implementations: expand refs
Tags: Mobile edit Mobile web edit Advanced mobile edit
Line 226:
[https://github.com/vc3/Afterthought Afterthought] {{webarchive|url=https://web.archive.org/web/20160315162029/https://github.com/vc3/Afterthought |date=2016-03-15 }}, [http://www.rapier-loom.net/ LOOM.NET] {{webarchive|url=https://web.archive.org/web/20080827215106/http://www.rapier-loom.net/ |date=2008-08-27 }}, [http://www.codeplex.com/entlib Enterprise Library 3.0 Policy Injection Application Block] {{webarchive|url=https://web.archive.org/web/20070119154829/http://www.codeplex.com/entlib |date=2007-01-19 }}, [http://sourceforge.net/projects/aspectdng/ AspectDNG] {{webarchive|url=https://web.archive.org/web/20040929053513/http://sourceforge.net/projects/aspectdng |date=2004-09-29 }}, [http://www.castleproject.org/projects/dynamicproxy/ DynamicProxy] {{webarchive|url=https://web.archive.org/web/20151205001755/http://www.castleproject.org/projects/dynamicproxy/ |date=2015-12-05 }}, [http://composestar.sourceforge.net/ Compose*] {{webarchive|url=http://archive.wikiwix.com/cache/20050821193804/http://composestar.sourceforge.net/ |date=2005-08-21 }}, [http://www.postsharp.net/ PostSharp] {{webarchive|url=https://web.archive.org/web/20160503095409/https://www.postsharp.net/ |date=2016-05-03 }}, [http://www.seasar.org/en/dotnet/ Seasar.NET] {{webarchive|url=https://web.archive.org/web/20060725015434/http://www.seasar.org/en/dotnet/ |date=2006-07-25 }}, [http://dotspect.tigris.org/ DotSpect (.SPECT)] {{webarchive|url=https://web.archive.org/web/20060331071126/http://dotspect.tigris.org/ |date=2006-03-31 }}, [http://www.springframework.net/ Spring.NET] {{webarchive|url=https://web.archive.org/web/20060402205922/http://springframework.net/ |date=2006-04-02 }} (as part of its functionality), [https://www.cs.columbia.edu/~eaddy/wicca Wicca and Phx.Morph] {{webarchive|url=https://web.archive.org/web/20061207110849/http://www1.cs.columbia.edu/~eaddy/wicca/ |date=2006-12-07 }}, [http://setpoint.codehaus.org/ SetPoint] {{webarchive|url=https://web.archive.org/web/20081007002006/http://setpoint.codehaus.org/ |date=2008-10-07 }}</ref>
**[https://www.postsharp.net/ PostSharp] is a commercial AOP implementation with a free but limited edition.
**[[Unity Application Block|Unity]], It provides an API to facilitate proven practices in core areas of programming including data access, security, logging, exception handling and others.
*[[ActionScript]]<ref>{{cite web|url=http://www.as3commons.org/as3-commons-bytecode|title=Welcome to as3-commons-bytecode|website=as3commons.org|accessdate=5 May 2018|url-status=live|archiveurl=https://web.archive.org/web/20141003100345/http://www.as3commons.org/as3-commons-bytecode/|archivedate=3 October 2014}}</ref>
*[[Ada (programming language)|Ada]]<ref>{{cite web|url=http://www.adacore.com/uploads/technical-papers/Ada2012_Rational_Introducion.pdf|title=Ada2012 Rationale|website=adacore.com|accessdate=5 May 2018|url-status=live|archiveurl=https://web.archive.org/web/20160418132340/http://www.adacore.com/uploads/technical-papers/Ada2012_Rational_Introducion.pdf|archivedate=18 April 2016}}</ref>
Line 240:
*[[Emacs Lisp]]<ref>{{cite web|url=https://www.gnu.org/software/emacs/elisp/html_node/Advising-Functions.html|title=Emacs Advice Functions|website=gnu.org|accessdate=5 May 2018|url-status=live|archiveurl=https://web.archive.org/web/20111024211408/http://www.gnu.org/software/emacs/elisp/html_node/Advising-Functions.html|archivedate=24 October 2011}}</ref>
*[[Groovy (programming language)|Groovy]]
*[[Haskell (programming language)|Haskell]]<ref>[[monadMonad (functional programming)|Monad]]s allow program semantics to be altered by changing the type of the program without altering its code: ({{cite journal | citeseerx = 10.1.1.25.8262 | title = Monads As a theoretical basis for AOP |journal = International Workshop on Aspect-Oriented Programming at ECOOP | first = Wolfgang | last = De Meuter | year = 1997}}) and{{cite journal | url = [http://portaldl.acm.org/citation.cfm?id=12338422451457 | title = A Typed Monadic Embedding of Aspects | first1 = Nicolas | last1 = Tabareau | first2 = Ismael | last2 = Figueroa | first3 = Éric | last3 = Tanter | journal = Proceedings of the 12th annual international conference on Aspect-oriented programmingsoftware withdevelopment type| classesdate = March 2013 | pages = 171–184 | doi = 10.]1145/2451436.2451457 }} [[Type class]]es allow additional capabilities to be added to a type: {{cite journal | first1 = Martin | last1 = Sulzmann | first2 = Meng | last2 = Wang | url = http://dlportal.acm.org/citation.cfm?id=24514571233842 A| Typedtitle Monadic= EmbeddingAspect-oriented programming with type classes | journal = Proceedings of Aspects]the 6th workshop on Foundations of aspect-oriented languages | date = March 2007 | pages = 65–74 | doi = 10.1145/1233833.1233842 }}.</ref>
*[[Java (programming language)|Java]]<ref>Numerous others: [http://www.caesarj.org/ CaesarJ] {{webarchive|url=https://web.archive.org/web/20081219181529/http://caesarj.org/ |date=2008-12-19 }}, [http://composestar.sourceforge.net/ Compose*] {{webarchive|url=http://archive.wikiwix.com/cache/20050821193804/http://composestar.sourceforge.net/ |date=2005-08-21 }}, [http://dynaop.dev.java.net/ Dynaop] {{webarchive|url=https://web.archive.org/web/20070724061030/https://dynaop.dev.java.net/ |date=2007-07-24 }}, [http://jac.objectweb.org/ JAC] {{webarchive|url=https://web.archive.org/web/20040619135517/http://jac.objectweb.org/ |date=2004-06-19 }}, [[Google Guice]] (as part of its functionality), [http://www.csg.is.titech.ac.jp/~chiba/javassist/ Javassist] {{webarchive|url=https://web.archive.org/web/20040901095342/http://www.csg.is.titech.ac.jp/~chiba/javassist/ |date=2004-09-01 }}, [http://ssel.vub.ac.be/jasco/ JAsCo (and AWED)] {{webarchive|url=https://web.archive.org/web/20050411010213/http://ssel.vub.ac.be/jasco/ |date=2005-04-11 }}, [http://www.ics.uci.edu/~trungcn/jaml/ JAML] {{webarchive|url=https://web.archive.org/web/20050415091244/http://www.ics.uci.edu/~trungcn/jaml/ |date=2005-04-15 }}, [http://labs.jboss.com/portal/jbossaop JBoss AOP] {{webarchive|url=https://web.archive.org/web/20061017211354/http://labs.jboss.com/portal/jbossaop/ |date=2006-10-17 }}, [http://roots.iai.uni-bonn.de/research/logicaj LogicAJ] {{webarchive|url=https://web.archive.org/web/20060504154852/http://roots.iai.uni-bonn.de/research/logicaj/ |date=2006-05-04 }}, [http://www.objectteams.org/ Object Teams] {{webarchive|url=https://web.archive.org/web/20050831200910/http://objectteams.org/ |date=2005-08-31 }}, [http://prose.ethz.ch/ PROSE] {{webarchive|url=https://web.archive.org/web/20070124094344/http://prose.ethz.ch/ |date=2007-01-24 }}, [http://www.aspectbench.org/ The AspectBench Compiler for AspectJ (abc)] {{webarchive|url=https://web.archive.org/web/20141216200424/http://aspectbench.org/ |date=2014-12-16 }}, [[Spring framework]] (as part of its functionality), [[Seasar]], [http://roots.iai.uni-bonn.de/research/jmangler/ The JMangler Project] {{webarchive|url=https://web.archive.org/web/20051028191025/http://roots.iai.uni-bonn.de/research/jmangler/ |date=2005-10-28 }}, [http://injectj.sourceforge.net/ InjectJ] {{webarchive|url=https://web.archive.org/web/20050405080539/http://injectj.sourceforge.net/ |date=2005-04-05 }}, [http://www.csg.is.titech.ac.jp/projects/gluonj/ GluonJ] {{webarchive|url=https://web.archive.org/web/20070206010219/http://www.csg.is.titech.ac.jp/projects/gluonj/ |date=2007-02-06 }}, [http://www.st.informatik.tu-darmstadt.de/static/pages/projects/AORTA/Steamloom.jsp Steamloom] {{webarchive|url=https://web.archive.org/web/20070818100432/http://www.st.informatik.tu-darmstadt.de/static/pages/projects/AORTA/Steamloom.jsp |date=2007-08-18 }}</ref>
**[[AspectJ]]