Ah, the joy of Git ... that was one big ass commit just now.

You'd be surprised how much of that was coded while sitting sideways
in my seat on the way to and from London, and much of the rest while
sitting in the hospital waiting for my son to be born!

There's still lots of room for tweaking and improving performance, but
creating a ComponentClassTransformWorker that does non-trivial stuff
is now much, much, much easier and there's nothing left in the APIs
that requires Javassist under the covers.

However, many of the existing methods of ClassTransformation have been
deprecated, and some of the deprecated methods are non-functional:
they throw a runtime exception (these are the methods most closely
tied to Javassist).

Basically, where in the past you would specify Javassist script for
part of a method implementation (i.e., to perform some work inside
containingPageDidLoad()) the new approach is to add advice to the
containingPageDidLoad() method to do the desired work.

This will affect performance and memory utilization. Performance may
downgrade some imperceptible amount (there's simply more method
invocations going on). Memory utilization will go up; in fact, much of
the new code creates many more classes in the component class loader.
These new classes exist to provide efficient reflection-style access
to component fields and methods (regardless of visibility).

The flip side, however, is that much more of the meta-programming code
will be in "normal" space, as callbacks from components, rather than
in "javassist" space as runtime-generated bytecode.



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to