AspectJay is a Java-based language which lets you write one or more aspects of your program as a separate unit which is woven with your base code by the compiler. You can download it and try it out! It's worth a look, if just to see how down-to-earth it is (no mention of MetaObjectProtocols).
AspectWerkz. http://aspectwerkz.codehaus.org/. A lighter, more accessible alternative to AspectJ. Thought by some to be better than AspectJ because it doesn't change Java syntax. This means it doesn't require special support from the IDE and allows it to take advantage of code completion, etc.