[aosd-discuss] Are Limitations in AspectJ 1.1 satisfied with1.5?
Pascal Costanza
pc at p-cos.net
Wed Sep 6 02:06:21 EST 2006
On 6 Sep 2006, at 02:19, Ron Bodkin wrote:
> Ajc 1.1 used binary weaving: the change occurred after ajc 1.0
>
> It is true that the AspectJ team deliberately decided to not allow
> access to
> local variables in pointcuts on the grounds that it wouldn't be
> stable.
>
> I will testify that the Glassbox open source project (see
> Glassbox.com) is
> using AspectJ successfully to measure performance on and report
> problems
> with black box applications. Most performance management tools and
> profilers
> don't go deeper than method and constructor execution. I believe
> that is
> sufficient depth for measuring performance.
I guess the actual reason is a technical limitation in Java: In Java,
the symbolic information and (IIRC) the static type information for
local variables is stripped away in class files / bytecode, and it is
hard to reconstruct useful information about local variables. (Unless
you compile with debug information switched on, but that's not a
black-box approach anymore.)
> In my view, the major use case where AspectJ isn't fine-grained
> enough is
> measuring code coverage for tests. I believe the right direction
> there is to
> be able to write pointcuts that match branching without picking out
> line
> numbers or variable names. That might also be of some value for really
> fine-grained spotlighting when profiling too. I believe that the EOS
> research project offers this kind of more fine grained yet anonymous
> pointcut although I haven't looked it in a while...
JMangler has already been used successfully in industrial projects
for doing code coverage. I think it's an advantage in this case that
you don't have to worry about a dedicated pointcut language, but can
use the full Java programming language for expressing what you are
interested in at a very low level, at least for the time being.
Approaches based on logic metaprogramming are probably also appropriate.
Pascal
> -----Original Message-----
> From: discuss-bounces at aosd.net [mailto:discuss-bounces at aosd.net] On
> Behalf
> Of Eric Bodden
> Sent: Tuesday, September 05, 2006 9:20 AM
> To: Fabiano Ricci
> Cc: discuss at aosd.net
> Subject: Re: [aosd-discuss] Are Limitations in AspectJ 1.1 satisfied
> with1.5?
>
>>
>> 1) It doesn't provide a full support to access variables in the
>> target
>> program.
>> A pointcut can create a reference to all variables in a
>> joinpoint.
>> Possible variables are: this, target. variables passed as
>> parameters to
>> the actual function in object and the returning value of the
>> method. If
>> we want catch other variables we must change the Source Code ( not
>> available in black-box application ) and include this variables in
>> that
>> jointpoint
>
> This has not changed in AspectJ, but is available via the "let"
> pointcut,
> which lets you bind expressions in the form of let(x,someExpr())
> and is
> available in the "EAJ" extension to AspectJ (www.aspectbench.org).
>
>> 2) If we want to access an object at runtime, we need to know the
>> type
>> of that object. So if we don't know the source code we can't
>> access to
>> that object. There is a manner to avoid this?
>
> I don't understand that statement. Of course you can access objects
> which
> were created in code which you don't have the source code for.
> Maybe they
> are referring to the fact that ajc 1.1 used source code
> translation. So yes,
> that should be solved.
>
>> This two issues make very difficult create an aspect that
>> automatically
>> profiling black-box applications
>
> Many more subtle problems remain, however that's another topic.
>
> Eric
>
> --
> Eric Bodden
> Sable Research Group, McGill University
> Montréal, Québec, Canada
>
>
>
>
> _______________________________________________
> discuss mailing list - discuss at aosd.net
>
> To unsubscribe and change options, go to:
> http://aosd.net/mailman/listinfo/discuss_aosd.net
>
> Check out the AOSD.net Wiki: http://aosd.net/wiki
>
>
> _______________________________________________
> discuss mailing list - discuss at aosd.net
>
> To unsubscribe and change options, go to:
> http://aosd.net/mailman/listinfo/discuss_aosd.net
>
> Check out the AOSD.net Wiki: http://aosd.net/wiki
--
Pascal Costanza, mailto:pc at p-cos.net, http://p-cos.net
Vrije Universiteit Brussel, Programming Technology Lab
Pleinlaan 2, B-1050 Brussel, Belgium
More information about the discuss
mailing list