AspectJ is a programming language created in 2001.
#385on PLDB | 22Years Old | 661Users |
17Books | 37Papers | 671Repos |
Try now: Riju
AspectJ is an aspect-oriented programming (AOP) extension created at PARC for the Java programming language. It is available in Eclipse Foundation open-source projects, both stand-alone and integrated into Eclipse. AspectJ has become a widely used de facto standard for AOP by emphasizing simplicity and usability for end users. Read more on Wikipedia...
public class Main {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
System.out.println("Hello World");
package com.blogspot.miguelinlas3.aspectj.cache;
import java.util.Map;
import java.util.WeakHashMap;
import org.aspectj.lang.JoinPoint;
import com.blogspot.miguelinlas3.aspectj.cache.marker.Cacheable;
/**
* This simple aspect simulates the behaviour of a very simple cache
*
* @author migue
*
*/
public aspect CacheAspect {
public pointcut cache(Cacheable cacheable): execution(@Cacheable * * (..)) && @annotation(cacheable);
Object around(Cacheable cacheable): cache(cacheable){
String evaluatedKey = this.evaluateKey(cacheable.scriptKey(), thisJoinPoint);
if(cache.containsKey(evaluatedKey)){
System.out.println("Cache hit for key " + evaluatedKey);
return this.cache.get(evaluatedKey);
}
System.out.println("Cache miss for key " + evaluatedKey);
Object value = proceed(cacheable);
cache.put(evaluatedKey, value);
return value;
}
protected String evaluateKey(String key, JoinPoint joinPoint) {
// TODO add some smart staff to allow simple scripting in @Cacheable annotation
return key;
}
protected Map<String, Object> cache = new WeakHashMap<String, Object>();
}
pointcut set() : execution(* set*(..) ) && this(Point);
Feature | Supported | Token | Example |
---|---|---|---|
Binary Literals | ✓ | // 0[bB][01][01_]*[lL]? |
|
Integers | ✓ | // 0|[1-9][0-9_]*[lL]? |
|
Floats | ✓ | // ([0-9][0-9_]*\.([0-9][0-9_]*)?|\.[0-9][0-9_]*)([eE][+\-]?[0-9][0-9_]*)?[fFdD]?|[0-9][eE][+\-]?[0-9][0-9_]*[fFdD]?|[0-9]([eE][+\-]?[0-9][0-9_]*)?[fFdD]|0[xX]([0-9a-fA-F][0-9a-fA-F_]*\.?|([0-9a-fA-F][0-9a-fA-F_]*)?\.[0-9a-fA-F][0-9a-fA-F_]*)[pP][+\-]?[0-9][0-9_]*[fFdD]? |
|
Hexadecimals | ✓ | // 0[xX][0-9a-fA-F][0-9a-fA-F_]*[lL]? |
|
Octals | ✓ | // 0[0-7_]+[lL]? |
|
Strings | ✓ | " | "Hello world" |
MultiLine Comments | ✓ | /* */ | /* A comment */ |
Print() Debugging | ✓ | System.out.println | |
Comments | ✓ | // A comment |
|
Line Comments | ✓ | // | // A comment |
Semantic Indentation | X |
title | author | year | reviews | ratings | rating |
---|---|---|---|---|---|
Eclipse AspectJ: Aspect-Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools | Adrian Colyer | 2004 | 0 | 8 | 3.25 |
Aspectj in Action: Practical Aspect-Oriented Programming | Ramnivas Laddad | 2003 | 2 | 34 | 3.76 |
Aspect-Oriented Programming with Aspectj | Ivan Kiselev | 2002 | 0 | 3 | 3.00 |
Mastering Aspectj: Aspect-Oriented Programming in Java | Joseph D. Gradecki | 2003 | 1 | 5 | 3.20 |
Aspect-Oriented Programming with Aspectj | Ivan Kiselev | 2002 | 0 | 0 | 0.0 |
Java Programming Language Family: Godiva, Scala, Processing, Aspectj, Groovy, Javafx Script, Einstein, J Sharp, Judoscript, Jasmin, Beanshell | Books LLC | 2011 | 0 | 0 | 0.0 |
Logging and Simulation using Aspect Oriented Software: AOP and AspectJ | Mutum Meetei | 0 | 0 | 0.0 |
title | authors | year | publisher |
---|---|---|---|
AspectJ Cookbook: Aspect Oriented Solutions to Real-World Problems | Miles, Russ | 2005 | O'Reilly Media |
AspectJ in Action: Enterprise AOP with Spring Applications | Ramnivas Laddad | 2009 | Manning Publications |
Eclipse AspectJ: Aspect-Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools | Colyer, Adrian | 2004 | Addison-Wesley Professional |
Aspectj in Action: Practical Aspect-Oriented Programming | Laddad, Ramnivas | 2003 | Manning Publications |
AspectJ Cookbook | Russ Miles | 20041220 | O'Reilly Media, Inc. |
AspectJ Cookbook | Russ Miles | 20041220 | O'Reilly Media, Inc. |
AspectJ in Action | Raminvas Laddad | 20090831 | Simon & Schuster |
Aspect-oriented Programming With Aspectj | Ivan Kiselev | 2003 | Sams |
Aspect-oriented programming using AspectJ | Ivan Kiselev | Sams | |
Aspect-Oriented Programming with Eclipse AspectJ Development Tools | Pankaj Kumar | 2018-05-31 | LAP LAMBERT Academic Publishing |
title | authors | year | citations | influentialCitations |
---|---|---|---|---|
abc: an extensible AspectJ compiler | Pavel Avgustinov and Aske Simon Christensen and L. Hendren and Sascha Kuzins and Jennifer Lhoták and O. Lhoták and O. Moor and D. Sereni and Ganesh Sittampalam and J. Tibble | 2005 | 235 | 16 |
A UML-based aspect-oriented design notation for AspectJ | D. Stein and Stefan Hanenberg and R. Unland | 2002 | 223 | 12 |
Racer: effective race detection using aspectj | E. Bodden and K. Havelund | 2008 | 98 | 8 |
Aspect-oriented programming with AspectJ | A. Colyer and Andy Clement | 2005 | 86 | 5 |
From multi-modal scenarios to code: compiling LSCs into aspectJ | S. Maoz and D. Harel | 2006 | 81 | 2 |
Pipa: A Behavioral Interface Specification Language for AspectJ | Jianjun Zhao and M. Rinard | 2003 | 76 | 5 |
Generating AspectJ Programs with Meta-AspectJ | David Zook and Shan Shan Huang and Y. Smaragdakis | 2004 | 67 | 8 |
Using AspectJ to build a software product line for mobile devices | Trevor J. Young | 2005 | 64 | 9 |
Bridging Java and AspectJ through explicit join points | Kevin J. Hoffman and P. Eugster | 2007 | 54 | 5 |
Declarative, formal, and extensible syntax definition for aspectJ | Martin Bravenboer and É. Tanter and E. Visser | 2006 | 49 | 5 |
Automated Generation of Pointcut Mutants for Testing Pointcuts in AspectJ Programs | P. Anbalagan and Tao Xie | 2008 | 41 | 7 |
Semantics of static pointcuts in aspectJ | Pavel Avgustinov and Elnar Hajiyev and Neil Ongkingco and O. Moor and D. Sereni and J. Tibble and M. Verbaere | 2007 | 40 | 6 |
Aspects and polymorphism in AspectJ | Erik Ernst and D. Lorenz | 2003 | 36 | 1 |
SCoPE: an AspectJ compiler for supporting user-defined analysis-based pointcuts | Tomoyuki Aotani and Hidehiko Masuhara | 2007 | 36 | 3 |
Applyinq AspectJ to J2EE application development | Nicholas Lesiecki | 2006 | 26 | 0 |
APTE: automated pointcut testing for AspectJ programs | P. Anbalagan and Tao Xie | 2006 | 26 | 2 |
A Compiler for Multimodal Scenarios: Transforming LSCs into AspectJ | S. Maoz and D. Harel and A. Kleinbort | 2011 | 19 | 2 |
An empirical study on the impact of AspectJ on software evolvability | Adam Przybyłek | 2018 | 17 | 1 |
Security crosscutting concerns and AspectJ | Dima Alhadidi and Nadia Belblidia and M. Debbabi | 2006 | 16 | 0 |
Region pointcut for AspectJ | Shumpei Akai and S. Chiba and Muga Nishizawa | 2009 | 13 | 1 |
AspectJ Paradigm Model: A Basis for Multi-paradigm Design for AspectJ | V. Vranic | 2001 | 12 | 1 |
Formalizing AspectJ Weaving for Static Pointcuts | Nadia Belblidia and M. Debbabi | 2006 | 10 | 2 |
Case study: a distributed concurrent system with AspectJ | R. Raje and Ming Zhong and Tong-yang Wang | 2001 | 9 | 0 |
Complex code querying and navigation for AspectJ | J. Pfeiffer and Andonis Sardos and J. Gurd | 2005 | 8 | 0 |
Traits Programming with AspectJ | S. Denier | 2005 | 8 | 1 |
Teste de programas orientados a aspectos: uma abordagem estrutural para AspectJ | O. Lemos | 2005 | 7 | 2 |
An Advice for Advice Composition in AspectJ | Fuminobu Takeyama and S. Chiba | 2010 | 7 | 1 |
2D and 3D visualization of AspectJ programs | S. Bentrad and D. Meslati | 2011 | 6 | 0 |
abc the aspectBench compiler for aspectJ a workbench for aspect-oriented programming language and compilers research | Chris Allan and Pavel Avgustinov and Aske Simon Christensen and Bruno Dufour and C. Goard and L. Hendren and Sascha Kuzins and Jennifer Lhoták and O. Lhoták and O. Moor and D. Sereni and Ganesh Sittampalam and J. Tibble and Clark Verbrugge | 2005 | 6 | 0 |
On ASPECTJ and Composition Filters: A Mapping of Concepts | D. Meslati | 2009 | 5 | 0 |
Accessing and Evaluating AspectJ based Mutation Testing Tools | Mayank Singh and Shailendra Mishra and R. Mall | 2011 | 5 | 0 |
A Case Study of Development of a Java Bytecode Analyzer Framework Using AspectJ | Susumu Yamazaki and Michihiro Matsumoto and T. Nakanishi and T. Kitasuka and Akira Fukuda | 2005 | 3 | 0 |
Overcoming comprehension barriers in the AspectJ programming language | Venera Arnaoudova and L. Eshkevari and Elaheh Safari-Sharifabadi and Constantinos A. Constantinides | 2008 | 3 | 1 |
Automated testing of pointcuts in AspectJ programs | P. Anbalagan | 2006 | 2 | 0 |
Comparative Analysis of Java and AspectJ on the Basis of Various Metrics | Inderjit Singh Dhanoa and Er. Dalwinder Singh Salaria and H. S. Johal | 2011 | 2 | 0 |
New AspectJ Pointcuts for Integer Overflow and Underflow Detection | Dima Alhadidi and M. Debbabi and P. Bhattacharya | 2008 | 1 | 0 |
Tackling the Challenges of Integrating 3rd Party Software Using AspectJ | U. Hohenstein and M. Jäger | 2011 | 1 | 0 |