<?xml version="1.0" encoding="iso-8859-1"?>



<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:cc="http://web.resource.org/cc/"
  xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/">
<title>AspectWerkz</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/</link>
<description>AspectWerkz  is a dynamic, lightweight and high-performant AOP/AOSD framework for Java</description>
<dc:language>en-us</dc:language>
<dc:creator></dc:creator>
<dc:date>2005-04-06T16:08:51+00:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=2.661" />


<items>
<rdf:Seq><rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/001035_aspectwerkz_introductory_tutorial_with_spring_hibernate_and_tapestry.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/001004_aspectwerkz_20_final_is_out.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000992_aspectwerkz_to_aspectj_5_survey.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000969_aspectwerkz_20rc3_is_out.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000957_aspectj_and_aspectwerkz_to_join_forces.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000917_aspectwerkz_20rc2_and_11_are_out.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000904_aop_bench_corrections_for_dynaop.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000902_aop_and_java_5_annotations_with_aspectwerkz.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000899_aop_benchmark.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000891_aspectwerkz_20_rc1_is_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000873_aspectwerkz_10_final_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000840_aspectwerkz_10rc3_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000829_aspectwerkz_10_rc1_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000820_aspectwerkz_tutorial_in_portuguese.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000817_aspectwerkz_10_beta2_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000768_aspectwerkz_10beta1_is_out.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000755_aspectwerkz_010_final_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000751_tutorial_on_dev2dev_enabling_aspectoriented_programming_in_weblogic_server_using_the_jrockit_management_api.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000746_meet_aspectwerkz_aop_at_javaone.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000694_aspectwerkz_010_rc2_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000651_next_generation_of_the_aspectwerkz_aop_framework_is_released_.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000507_aspectwerkz_09rc1_is_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000240_aspectwerkz_announces_support_for_bea_jrockit.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000215_selfdefined_aspects_in_aspectwerkz_new_definition_model.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000140_aspectwerkz_announces_support_for_ibm.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000124_aspectwerkz_08_is_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000097_aspectwerkz_072_is_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000088_aspectwerkz_07_is_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000077_jmangler_changes_its_license_back_to_lgpl.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000064_aspectwerkz_063_has_been_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000021_aspectwerkz_051_is_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/projects/aspectwerkz/archives/000015_aspectwerkz_05_has_been_released.html" />
</rdf:Seq>
</items>

</channel>

<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/001035_aspectwerkz_introductory_tutorial_with_spring_hibernate_and_tapestry.html">
<title>AspectWerkz introductory tutorial with Spring, Hibernate and Tapestry</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/001035_aspectwerkz_introductory_tutorial_with_spring_hibernate_and_tapestry.html</link>
<description><![CDATA[<p>
<a href="http://dev2dev.bea.com/pub/au/44">David Teare</a> has published a complete introductory tutorial on <b>BEA dev2dev</b> : <i>Quick Start Guide to Enterprise AOP with Aspectwerkz 2.0</i>
</p>

<p>
The tutorial will lead you thru a sample app using Hibernate, Spring and Tapestry.
One first version is detailled to explain the purpose of the sample app (a blog webapp). This first version is not using AOP. Another version is then detailled where crosscutting concerns such as per request logging and profiling have been refactored using AspectWerkz 2.0.
</p>

<p>
It also gives an insight of the impacts and benefits of switching to the <a href="http://aspectwerkz.codehaus.org/index-merge.html">AspectJ 5 joint project</a>.
</p>

<p>
This tutorial is mainly introductory and gradually brings AOP in the sample application, explaining each decision and trade-off.
Mixin, execution pointcut, advice, and cflow pointcut are used.
</p>

<p>
Complete source code is available for download, including SQL scripts.
</p>

<p>
<a href="http://dev2dev.bea.com/pub/a/2005/04/enterprise_aop.html">Read the tutorial</a></br>
<a href="http://docs.codehaus.org/display/AW/External+tutorials">Look for other AspectWerkz tutorials</a></br>
<a href="http://docs.codehaus.org/display/AW/Tutorials">The HelloWorld tutorials</a>
</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2005-04-06T16:08:51+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/001004_aspectwerkz_20_final_is_out.html">
<title>AspectWerkz 2.0 final is out</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/001004_aspectwerkz_20_final_is_out.html</link>
<description><![CDATA[We are pleased to announce that <b>AspectWerkz 2.0 final</b> is out.
<p/>

This version contains a few bug fix as compared to RC3 thanks to all who provided detailled feedback.<br/>
The AspectWerkz 2.0 development has been driven by a great community effort to provide an easy to use, Java 5 ready, plain Java, and well performant and truly dynamic AOP framework.
<p/>

You can now use this final version while beeing on the starting block for the upcoming versions of <a href="http://www.eclipse.org/aspectj">AspectJ 5</a> that will include support for our <b>annotation defined aspect</b> as well as similar <b>load time weaving</b> capabilities, among others, making the transition as smooth as possible.
<p/>

Last month, we have welcomed a new committer - Alexandru Popescu aka Mindstorm - which has already started to keep things going in a branch that will now be integrated in head so that new requirements can be addressed thru a 2.1 version. This is a great things to
help us and ensure good support thru the mailing list while we are working on the AspectJ 5 joint effort.
<p/>

<a href="http://aspectwerkz.codehaus.org/releases.html">Read the release notes.</a><br/>
<a href="http://dist.codehaus.org/aspectwerkz/distributions/aspectwerkz-2.0.zip?download">Get it now.</a><br/>
<i>Note: the release is bigger than usual since it contains the html docs.</i>

<p/>
Alex & Jonas]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2005-03-10T15:27:49+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000992_aspectwerkz_to_aspectj_5_survey.html">
<title>AspectWerkz to AspectJ 5 survey</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000992_aspectwerkz_to_aspectj_5_survey.html</link>
<description><![CDATA[<p>
As part of the <a href="http://eclipse.org/aspectj">AspectJ 5</a> effort between the AspectWerkz and AspectJ teams, we are inviting you to reply to a <b>web based survey</b> about the use you do of AOP, especially in Java.
</p>

<p>
This survey will help us to prioritize and to organize our milestones according to the community needs and requirements. The survey consists of 20 questions with answer choice, so it should require around 5 minutes to go through.
</p>

<p>
Take the survey now: <a href="http://aspectwerkz.codehaus.org/survey.html">http://aspectwerkz.codehaus.org/survey.html</a>
And pass it on!
</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2005-02-23T08:11:23+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000969_aspectwerkz_20rc3_is_out.html">
<title>AspectWerkz 2.0.RC3 is out</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000969_aspectwerkz_20rc3_is_out.html</link>
<description><![CDATA[<p>AspectWerkz 2.0.RC3 is out.<br />
This is likely to be the <b>2.0 final</b>, so get it now and try it.</p>

<p>The feature changes and fixes are:<br />
                    <ul><br />
                        <li>cflowbelow() is supported</li><br />
                        <li>staticinitialization() pointcut (contributed by Alexandru Popescu / Mindstorm)</li><br />
                        <li>patterns can be only annotation defined like within(@Foo), execution(@Tx) etc (contributed by Alexandru Popescu / Mindstorm)</li><br />
                        <li>new <code>-keepjp
</code>
 option in offline mode to keep internal statically compiled structure and speed up deployment time</li><br />
                    </ul><br />
                    <ul><br />
                        <li>Aspects.aspectOf() fixed to support aspect reuse</li><br />
                        <li>Advisable API fixed for call side pointcut</li><br />
                    </ul></p>

<p><br />
<a href="http://aspectwerkz.codehaus.org/releases.html">Read the release notes.</a><br />
<a href="http://dist.codehaus.org/aspectwerkz/distributions/aspectwerkz-2.0.RC3.zip?download">Get it now.</a></p>

<p><br />
In the coming weeks, we will publish documents to help you getting started with the <a href="http://www.aspectj.org">AspectJ 5</a> development snapshot, so that you can start thinking about future migration, as well as come with feedback as regards features you would like to have in.</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2005-02-03T10:29:20+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000957_aspectj_and_aspectwerkz_to_join_forces.html">
<title>AspectJ and AspectWerkz to Join Forces</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000957_aspectj_and_aspectwerkz_to_join_forces.html</link>
<description><![CDATA[We're excited to announce a significant development for <b>AspectJ</b>,
<b>AspectWerkz</b>, and the world of aspect-oriented programming.
<p/>
The AspectJ and AspectWerkz projects have agreed to work together as
<b>one team</b> to produce a single aspect-oriented programming platform
building on their complementary strengths and expertise. The first
release from this collaboration will be <b>AspectJ 5</b>, which extends the
AspectJ language to support an annotation-based development style in
addition to the familiar AspectJ code-based style. AspectJ 5 will also
provide full AOP support for the new Java 5 language features. It will
continue to be developed as an open-source project on eclipse.org.
<p/>
Following the AspectWerkz 2.0 release, the AspectWerkz developers
(<a href="http://blogs.codehaus.org/people/jboner/">Jonas Bonér</a>, <a href="http://blogs.codehaus.org/people/avasseur/">Alexandre Vasseur</a>) will be joining the AspectJ
project to bring the key features of AspectWerkz to the AspectJ
platform.<br/>
This will begin with an extension to the AspectJ language to support
an annotation-based style of development, and with tighter integration
of load-time weaving for AspectJ in the J2EE environment.
A smooth migration path for existing AspectWerkz users is a key
priority in the development and release planning.
<p/>
The combined strengths of the two teams will enable us to deliver a
more comprehensive technology suite more quickly than either team
could alone. We believe that the backing of two major vendors and an
even larger open source community formed by bringing together existing
AspectJ and AspectWerkz users will accelerate the adoption of AOP in the
enterprise.
<p/>
Please see the announce document at <a href="http://www.eclipse.org/aspectj">http://www.eclipse.org/aspectj</a> for
more details including outline development plans and an FAQ.
<p/>
Jonas Boner (AspectJ 5, AspectWerkz), and Adrian Colyer (AspectJ 5, AspectJ)]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2005-01-19T08:59:36+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000917_aspectwerkz_20rc2_and_11_are_out.html">
<title>AspectWerkz 2.0.RC2 and 1.1 are out</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000917_aspectwerkz_20rc2_and_11_are_out.html</link>
<description><![CDATA[<p>I am pleased to announced the release of AspectWerkz 2.0.RC2</p>

<p>2.0.RC2 comes with <b>feature completion as compared to 1.0</b>:<br />
<ul><br />
<li>cflow() is supported</li><br />
<li>handler() pointcut for use with before advice is supported</li><br />
</ul></p>

<p>It comes with <b>several bug fixes</b> - thanks to all of you who provide feedback, test case and major fixes - many thanks to <i>The Mindstorm</i>, <i>David Teare</i> and the <i>Summa</i> team.</p>

<p>Aside, AspectWerkz 2.0.RC2 comes with <b>new features</b>:<br />
<ul><br />
<li>custom proceed() method, to easily change advised target argument values from within  <br />
an around advice. <a href="http://aspectwerkz.codehaus.org/new_features_in_2_0.html#Strongly_typed_proceed">Read more here</a>.</li><br />
<li>per instance interception framework, to programmatically configure advices for a given instance only at runtime. <a href="http://aspectwerkz.codehaus.org/new_features_in_2_0.html#Per_instance_interception">Read more here</a>.</li><br />
<li>AW Proxy aware of the underlying aspects. Our custom proxy framework allows to use proxy (AspectWerkz proxy or CGLIB proxy) and have them be aware of the aspects at no extra cost. The performance of the AWProxy is comparable to straight AOP, they can be used with per instance interception, but they <i>do not require the use of the weaver</i>. The main drawback is that only method and constructor execution of non private / non final method can be advised (as for all proxy based AOP out there).<br />
<a href="http://aspectwerkz.codehaus.org/new_features_in_2_0.html#AWProxy:_proxy_awareness_of_aspects">Read more here</a>.<br />
<a href="http://blogs.codehaus.org/people/jboner/archives/000914_awproxy_proxy_on_steriods.html">Read AW Proxy announce here</a><br />
</li><br />
</ul></p>

<p><a href="http://aspectwerkz.codehaus.org/releases.html">Read the release notes.</a><br />
<a href="http://dist.codehaus.org/aspectwerkz/distributions/aspectwerkz-2.0.RC2.zip?download">Get it now.</a></p>

<p>We also release AspectWerkz 1.1, a maintenance release for AspectWerkz 1.x.<br />
<a href="http://aspectwerkz.codehaus.org/aw1/releases.html">Access AspectWerkz 1.1 release notes</a>.</p>

<p>We hope you will give a try to 2.x instead of upgrading to 1.1 !</p>

<p>Alex</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2004-12-10T12:08:48+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000904_aop_bench_corrections_for_dynaop.html">
<title>AOP Bench: corrections for dynaop</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000904_aop_bench_corrections_for_dynaop.html</link>
<description><![CDATA[<p/>
Unfortunately we had done a mistake in <a href="http://docs.codehaus.org/display/AW/AOP+Benchmark">AOP benchmark article</a> we published a couple of days ago. The mistake was when implementing some of the interceptors for <a href="">dynaop</a> (we used the API the wrong way when we wanted to access the proxied, 'target instance').
<p/>
Before we accessed the 'target instance' like this:
<pre>
    Object target = invocation.getProxy().getProxyContext().unwrap();
</pre>
And now it has been changed to this:
<pre>
    Object target = invocation.getProxy();
</pre>
<p/>
When correcting these mistakes dynaop performs up to <b>10 times</b> better in the situations where we are accessing the 'target instance'.
<p/>
The <a href="http://docs.codehaus.org/display/AW/AOP+Benchmark">article</a> has been updated with the new figures.
<p/>
Thanks to <a href="http://today.java.net/pub/au/152">Bob Lee</a> who helped us discover this flaw.
<p/>

/The AspectWerkz Team]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2004-12-03T12:43:52+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000902_aop_and_java_5_annotations_with_aspectwerkz.html">
<title>AOP and Java 5 annotations with AspectWerkz</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000902_aop_and_java_5_annotations_with_aspectwerkz.html</link>
<description><![CDATA[<p>
Our tutorial on <a href="http://aspectwerkz.codehaus.org/">AspectWerkz 2.x</a> has been published on <a href="http://www.theserverside.com/articles/article.tss?l=AspectWerkzP2">The Server Side</a>.
</p>

<p>
In this tutorial, we are implementing a subset of the <b>EJB 3</b> declarative transactions specification using AspectWerkz.
</p>

<p>
The aspect is written in plain Java with Java 5 annotations, and the sample application is running outside of any application server by using of <i>ObjectWeb JOTM</i> and we provide an easy way to use any JTA transaction manager.
</p>

<p>
<pre>
@Aspect("perJVM")
public abstract class TransactionAttributeAwareTransactionProtocol {

    @Expression("execution(@javax.ejb.TransactionAttribute * *.*(..))")
    Pointcut transactedMethods;

    /**
     * Before advice that will initiate transaction management is bounded
	 		to the transactedMethods pointcut
     */
    @Before("transactedMethods")
    public void enterTransactedMethod(...) throws Throwable {
        ...
    }
}
</pre>
</p>


<p>
To run the application, we are using Java 5 JVMTI ie you simply compile your applications and aspects with plain <b>javac</b> and run it with plain <b>java</b>.
</p>

<p>
<a href="http://www.theserverside.com/articles/article.tss?l=AspectWerkzP2">Read more and practice.</a><br/>
<a href="http://www.theserverside.com/news/thread.tss?thread_id=30337">Discuss the tutorial</a>
</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2004-12-03T10:35:57+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000899_aop_benchmark.html">
<title>AOP benchmark</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000899_aop_benchmark.html</link>
<description><![CDATA[<p>
With the release of the <a href="http://aspectwerkz.codehaus.org/">AspectWerkz 2.x</a> first release candidate, we felt it was important to be able to track down performance results of the framework, as well as provide a place to compare it to other implementations like AspectJ, JBoss AOP, Spring, DynAOP and CGLib.
</p>

<p>
<b><a href="http://docs.codehaus.org/display/AW/AOP+Benchmark">AWbench</a></b> project has been started for that purpose and the first results have been published today.
</p>

<p>
In this <a href="http://docs.codehaus.org/display/AW/AOP+Benchmark">report</a> we explain what AWbench microbenchmark is about, and provides element of comparison for performance of
<ul>
<li>AspectWerkz 2.x and 1.0</li>
<li>AspectJ</li>
<li>JBoss AOP</li>
<li>Spring</li>
<li>DynAOP</li>
<li>CGLib</li>
<li>AspectJ, Spring and AOP Alliance aspects running in AspectWerkz 2.x extensible container</li>
</ul>
</p>

<p>
We will include any fix, new implementation, or hand written version of the microbenchmark that will be contributed.
</p>

<p>
Read the <a href="http://docs.codehaus.org/display/AW/AOP+Benchmark">AOP benchmark report</a><br/>
Read more about <a href="http://www.theserverside.com/articles/article.tss?l=AspectWerkzP1">AspectWerkz 2.x extensible AOP container</a>
</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2004-11-29T07:14:54+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000891_aspectwerkz_20_rc1_is_released.html">
<title>AspectWerkz 2.0 RC1 is released</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000891_aspectwerkz_20_rc1_is_released.html</link>
<description><![CDATA[    <p>
        Today we released AspectWerkz 2.0 RC1.
    </p>
    <p>
        Here is a short summary of the new features and enhancements in this releases.
        For more details read the
        <a href="http://aspectwerkz.codehaus.org/new_features_in_2_0.html">What is new in AspectWerkz 2?</a>
        paper, or dive in into the <a href="http://aspectwerkz.codehaus.org/">online documentation</a>.
    </p>
    <p>
        <b>New architecture</b>
        <ul>
            <li>
                <b>Fast:</b>
                 Average 20x faster architecture as compared to AspectWerkz 1.0
            </li>
            <li>
                <b>Open:</b>
                Extensible AOP container allow to deploy Spring AOP, AspectJ
                aspects and virtually any aspects in the same runtime
            </li>
            <li>
                <b>Dynamic:</b>
                Hotdeployment and undeployment of aspects thru a simple atomic API
            </li>
            <li>
                <b>Simpe:</b>
                Aspects can be written in plain Java, using Java 5
                annotations or equivalent doclets for Java 1.3/1.4
            </li>
        </ul>
    </p>

    <p>
        <b>Richer semantics</b>
        <ul>
            <li>
                Support for after returning and after throwing advices
            </li>
            <li>
                Access advised instance and advised member arguments direclty
                without any casting or unboxing
            </li>
            <li>
                New mixin model
            </li>
            <li>
                New Java 1.3/1.4 annotations model to minimize the migration effort
                to Java 5 annotations
            </li>
            <li>
                Pay as you go model, the overhead of an advice is dependant upon the
                use or not of reflective information vs explicit binding
            </li>
        </ul>
    </p>

    <p>
        <b>Higher reliability</b>
        <ul>
            <li>
                Fully based on ObjectWeb's ASM bytecode kit
            </li>
            <li>
                Weaved code is entirely statically compiled (no reflection or unsafe
                casting and object wrapping)
            </li>
        </ul>
    </p>
    <p>
        You can download the distribution
        <a href="http://dist.codehaus.org/aspectwerkz/distributions/aspectwerkz-2.0.RC1.zip?download">here</a>
    </p>
        
    <p>
        Enjoy.
    </p>]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2004-11-16T14:21:17+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000873_aspectwerkz_10_final_released.html">
<title>AspectWerkz 1.0 final released</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000873_aspectwerkz_10_final_released.html</link>
<description><![CDATA[<p/>
AspectWerkz 1.0 final is released.
<br/>
This release contains minor fix as compared to 1.0.RC3, as well as some new facilities like new Ant tasks for strongly typed annotation compilation and weaving.
<br/>
As a reminder, AspectWerkz 1.0 supports the following:
<ul>
<li>Aspects, advices and mixins are plain Java<br/>
  <ul>
  <li>Before, Around, After advices</li>
  <li>Method and interface introduction (mixin)</li>
  <li>Aspect (singleton, perClass, perInstance, perThread)</li>
  </ul>
</li>
<li>Pointcuts are composable<br/>
  <ul>
  <li>Method and constructor call and execution</li>
  <li>Field read and write access</li>
  <li>Matching on types and signatures</li>
  <li>Matching on Annotations (Java 1.3/1.4 strongly typed annotations)</li>
  <li>within(..), hasfield(..), hasmethod(..) and withincode(..) designators</li>
  <li>cflow supports</li>
  <li>args(..) designators to gain strongly typed access to advised member parameters</li>
  </ul>
</li>
<li>Aspects definitions allows deployment modules<br/>
  <ul>
  <li>Aspects defined as annotated classes</li>
  <li>Aspects defined and refined in XML</li>
  <li>Deployment module with META-INF/aop.xml</li>
  </ul>
</li>
<li>Annotation driven AOP<br/>
  <ul>
  <li>Custom annotation compiler for Java 1.3/1.4 which behave like Java 5 annotations, available thru Ant task and command line</li>
  <li>Strongly typed annotations support for Java 1.3/1.4</li>
  <li>Matching on annotations on target classes and members</li>
  <li>Definining Aspects, advices and pointcuts with annotations</li>
  </ul>
</li>
<li>Integration facilities<br/>
  <ul>
  <li>Post compilation thru Ant task and command line</li>
  <li>Class load time weaving thru JVMTI/JSR-163 for Java 5, plain Java hooks for Java 1.3, 1.4, JMAPI API for BEA JRockit, specific native module for Java 1.4</li>
   </ul>
</li>
</ul>
<br/>
If you are not familiar with AspectWerkz, <a href="http://docs.codehaus.org/display/AW/Tutorials">tutorials</a> are available.
<br/>
<br/>
The source for this release is in a branch named <i>branch_1_0</i> in the <i>aspectwerkz3</i> CVS module.
<p/>
Thanks to all of you who provide feedback and bug reports.
<p/>
<a href="http://dist.codehaus.org/aspectwerkz/distributions/aspectwerkz-1.0.zip?download">Download it.</a><br/>
<a href="http://aspectwerkz.codehaus.org/releases.html">Read the release note.</a>
</p>


]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2004-11-04T09:54:48+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000840_aspectwerkz_10rc3_released.html">
<title>AspectWerkz 1.0.RC3 released</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000840_aspectwerkz_10rc3_released.html</link>
<description><![CDATA[<p/>
Today we have released AspectWerkz 1.0 RC3.
<br/>
This release is very close to the <b>1.0 final</b>, and comes with several bug fixes that occured in RC1 and some packaging issue in RC2.
<br/>
We plan to release the 1.0 final soon - at most within the next 2 weeks. There won't be any new features added to the 1.0 final as compared to this one, so you can consider it as final quality.<br/>
The source for this release is now in a branch named <b>branch_1_0</b> since we are using CVS head for something we should announce soon with more details.
<p/>
Thanks to all of you who provide feedback and bug reports.
<p/>
<a href="http://dist.codehaus.org/aspectwerkz/distributions/aspectwerkz-1.0.RC3.zip?download">Download it.</a><br/>
<a href="http://aspectwerkz.codehaus.org/releases.html">Read the release note.</a>
</p>


]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2004-09-25T17:43:01+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000829_aspectwerkz_10_rc1_released.html">
<title>AspectWerkz 1.0 RC1 released</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000829_aspectwerkz_10_rc1_released.html</link>
<description><![CDATA[<p>
Today we have released AspectWerkz 1.0 RC1.
<br/>
This release comes with several bug fixes that occured in beta2, as well as new features:
</p>
<p>
<ul>
                            <li>
                                Support for <b>args()</b> in the pointcut expressions. As a consequence, support for direct access to arguments of advised method / constructor / field value set is possible and advices can have those parameters in their signature. </li>
                            <li>
                                <code>hasmethod
</code>
 and
                                <code>hasfield
</code>
 pointcuts (contributed by <a href="http://today.java.net/pub/au/80" class="externalLink" title="External Link">Michael Nascimento Santos</a>)
                            </li>
                            <li>
                                J2SE 5 JVMTI (JSR-163) support updated for latest specification.
                            </li>
                            <li>
                                bin/aspectwerkz command line tool now provides autodetection of BEA JRockit and J2SE 5.
                            </li>
                            <li>
                                Support for pointcut expression defined in the XML body of the &lt;pointcut&gt; element.
                            </li>
                            <li>
                                 Bug fixes (Thanks to <a href="http://www.javablogs.com.br/blogs/page/rato/20040829#aspectwerkz_1_0_beta2_problemas">Allan Jones</a> and all others)
                            </li>
</ul>
</p>

<p>
<a href="http://dist.codehaus.org/aspectwerkz/distributions/aspectwerkz-1.0.RC1.zip?download">Download it.</a><br/>
<a href="http://aspectwerkz.codehaus.org/releases.html">Read the release note.</a>
</p>


]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2004-09-03T08:15:54+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000820_aspectwerkz_tutorial_in_portuguese.html">
<title>AspectWerkz tutorial in portuguese</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000820_aspectwerkz_tutorial_in_portuguese.html</link>
<description><![CDATA[<p/>
<a href="http://today.java.net/pub/au/80">Michael Santos Nascimento</a> has written a pretty thorough tutorial on AspectWerkz (not that I can read it ;-).
<p/>
So if you know portuguese, then enjoy.
<p/>
Download it  <a href="http://aspectwerkz.codehaus.org/downloads/papers/AOP_com_AspectWerkz.pdf">here</a>]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2004-08-20T14:49:44+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000817_aspectwerkz_10_beta2_released.html">
<title>AspectWerkz 1.0 beta2 released</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000817_aspectwerkz_10_beta2_released.html</link>
<description><![CDATA[<p/>
Many bug fixes.
<p/>
Download it <a href="http://aspectwerkz.codehaus.org/releases.html">here</a>.
<p/>
Enjoy.
<p/>]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2004-08-16T15:38:34+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000768_aspectwerkz_10beta1_is_out.html">
<title>AspectWerkz 1.0-beta1 is out</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000768_aspectwerkz_10beta1_is_out.html</link>
<description><![CDATA[<p/>
AspectWerkz 1.0-beta1 has been released. 

<p/>
Here are the release notes:
 <p>
                        Amont many other things this release is shipped with a completely new pointcut grammar which is much more
                        expressive and powerful, and rich annotation support for both typed and untyped annotations.
                        <ul>
                            <li>
                                Support for deploying several <code>aop.xml
</code>
 Aspect defintion/deployment files alongside deployed
                                application (<code>WEB-INF/aop.xml
</code>
, <code>META-INF/aop.xml
</code>
) and have them following
                                the classloader hierarchy.
                            </li>
                            <li>
                                One single API to access both JavaDoc-style and Java 1.5 annotations, allows using them
                                together seamlessly.
                            </li>
                            <li>
                                Typed and untyped annotations for JavaDoc-style annotations.
                                Supports the same parameters types as Java 1.5 annotations and has strongly
                                typed compile time checking (using a new annotation compiler).
                            </li>
                            <li>
                               <code>within
</code>
 and <code>withincode
</code>
 pointcuts
                            </li>
                            <li>
                                More expressive <code>cflow
</code>
 pointcuts that can take any pointcut
                                expression as "parameter" and can be used to build arbitrary nested expressions.
                            </li>
                            <li>
                                Matching on annotations.
                            </li>
                            <li>
                                Matching on modifiers (including <code>!public
</code>
 and <code>NOT static
</code>
 etc.)
                            </li>
                            <li>
                                Matching on subtypes for parameters and return values.
                            </li>
                            <li>
                                System wide pointcuts (in the XML deployment descriptor).
                            </li>
                            <li>
                                Pointcut references (refer to pointcuts defined in other aspects than the one you are using it in).
                            </li>
                            <li>
                                JSR-163 JVMTI support for Java 1.5 class load time weaving with <code>-javaagent:
</code>

                            </li>
                            <li>
                                JoinPoint class is now serializable.
                            </li>
                            <li>
                                JoinPoint instances can be "resetted", to start over a complete advice chain (useful for failover etc.).
                            </li>
                            <li>
                                Documentation enhanced and refactored.
                            </li>
                            <li>
                                Introductory tutorials.
                            </li>
                            <li>
                                Some bug fixes.
                            </li>
                            <li>
                                Please note that there are changes to the way annotations (formerly call attributes)
                                are complied and retrieved. F.e. <code>AspectC
</code>
 has been replaced by <code>AnnontationC
</code>

                                and has slightly different options, so to compile the aspects use <code>AnnotationC
</code>

                                from now on.
                            </li>
                        </ul>
                    </p>
Download it <a href="http://dist.codehaus.org/aspectwerkz/distributions/aspectwerkz-1.0-beta1.zip?download">here</a>
<p/>
Enjoy.
<p/>
]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2004-06-24T12:53:35+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000755_aspectwerkz_010_final_released.html">
<title>AspectWerkz 0.10 final released</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000755_aspectwerkz_010_final_released.html</link>
<description><![CDATA[<p><p><br />
AspectWerkz 0.10 final has been released. </p>

<p><a href="http://aspectwerkz.codehaus.org/releases.html">Download it.</a></p>

<p>This release is mainly a bug-fix release one month after 0.10.RC2, but brings lot of change compared to 0.9.<br />
</p><br />
<p><br />
The following is the list of main differences compared to 0.9:<br />
Read <a href="http://blogs.codehaus.org/projects/aspectwerkz/archives/000694_aspectwerkz_010_rc2_released.html">0.10.RC2 release notes</a> and <a href="http://blogs.codehaus.org/projects/aspectwerkz/archives/000651_next_generation_of_the_aspectwerkz_aop_framework_is_released_.html">0.10.RC1 release notes</a>.</p>

<ul>
<li>JIT compilation of JoinPoint for better performance</li>
<li>Expressiveness and orthogonality with a more complete grammar</li>
<li>Runtime weaving capabilities, the low layer for the upcoming hotdeployement feature</li>
<li>Aspects can be any Java class and extend anything they like</li>
<li>Retrieval of information about the system, adding and reading of parameters and metadata etc. is done through the CrossCuttingInfo class. An aspect or mixin that is interested in accessing this info should have a constructor that takes a CrossCuttingInfo instance as its only parameter. See the docs for details. 
<li>Pluggable aspect container - The possibility to provide your own aspect container implementation is back. Useful if you need to control how your aspects are instantiated for example if you want that to be handled by an IoC container (Spring, PicoContainer etc.))</li>
</ul>
</p>

<p><p><br />
The following is the list of bug fix in 0.10 that were affecting 0.10.RC2:<br />
<ul><br />
<li>A thread safe issue has been fixed in the join point execution model.</li><br />
<li>IBM JRE support has been fixed.</li><br />
<li>Unix/Linux comamnd line scripts has been fixed (was missing bcel.jar).</li> <br />
<li>Exception throwned by method of weaved classes are not wrapped anymore. Exception throwned by mixin implementation are not wrapped anymore.</li> <br />
<li>JIT JoinPoint compilation is now thread safe.</li> <br />
<li>serialVersionUID computation fixed.</li> <br />
<li>Due to a lack of within expression support in the pointcut grammar (addressed in 1.0), the handler pointcut are very expensive to match. Those are deactivated by default. If your system uses those handler pointcuts, you have to add the -Daspectwerkz.handler.pointcut=true JVM option when starting up your JVM.</li> <br />
</ul><br />
</p></p>

<p><p><br />
Note that the CVS has been migrated.<br />
<a href="http://aspectwerkz.codehaus.org/cvs.html">Check the instructions</a> and update your tools.</p>

<p>Enjoy. <br />
</p><br />
</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2004-06-06T11:39:58+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000751_tutorial_on_dev2dev_enabling_aspectoriented_programming_in_weblogic_server_using_the_jrockit_management_api.html">
<title>Tutorial on dev2dev: Enabling Aspect-Oriented Programming in WebLogic Server using the JRockit Management API</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000751_tutorial_on_dev2dev_enabling_aspectoriented_programming_in_weblogic_server_using_the_jrockit_management_api.html</link>
<description><![CDATA[<p>
Our tutorial on how to <b>enable <a href="http://aspectwerkz.codehaus.org/">AspectWerkz</a> AOP using the Management API of <a href="http://dev2dev.bea.com/products/wljrockit81/index.jsp">BEA JRockit</a></b> has been published on <a href="http://dev2dev.bea.com/technologies/soa/businesslogic/articles/boner_vasseur.jsp">BEA dev2dev</a>.
</p>

<p>
<i>
In this article, you will learn the basic AOP concepts as well as how to apply AOP to your J2EE applications using AspectWerkz, a dynamic AOP framework. The hands-on tutorial explains how to use AOP to track EJB CMP's container generated JDBC queries. 
<br/><br/>
You will learn how to integrate AOP in your BEA environment, using a standard offline class post-processing mechanism, class-load time integration in BEA WebLogic Server 8.1 and a dedicated BEA JRockit Management API module that delivers best performance with a minimal integration effort. 
</i>
</p>

<p>
Many of you were asking for some tutorial so I hope this article will give you a quick start to AspectWerkz AOP.
</p>

<p>
The same tutorial could be replayed using Sun VM integration scheme we provide in AspectWerkz, and can probably be applied easily to some other container you like.
</p>

<p>
Enjoy and apologies for yet another tracing sample, but don't miss it, the goal is not to understand what is the tracing aspect, but to demonstrate the value of an efficient class load time architecture for AOP weaving.
</p>

<p>
<a href="http://dev2dev.bea.com/technologies/soa/businesslogic/articles/boner_vasseur.jsp">Read tutorial on BEA dev2dev</a>
<br/><br/>
<a href="http://aspectwerkz.codehaus.org/online.html#BEA%20JRockit">Read about the AspectWerkz JRockit extension</a>
<br/>
<a href="http://aspectwerkz.codehaus.org/online.html">Read about AspectWerkz integration schemes</a>
</p>

<p>
<a href="http://blogs.codehaus.org/projects/aspectwerkz/archives/upload/dev2dev.html" onclick="window.open('http://blogs.codehaus.org/projects/aspectwerkz/archives/upload/dev2dev.html','popup','width=1600,height=1200,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img alt="full screen" src="http://blogs.codehaus.org/projects/aspectwerkz/archives/upload/dev2dev_small.jpg" width="480" height="360" border="0" /></a>
</p>


]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2004-06-05T18:10:54+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000746_meet_aspectwerkz_aop_at_javaone.html">
<title>Meet AspectWerkz AOP at JavaOne</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000746_meet_aspectwerkz_aop_at_javaone.html</link>
<description><![CDATA[<p>
Next week the JavaOne committe will announce the final schedule for JavaOne 2004 at San Francisco.
<br/><br/>
In the meantime, you can prepare your agenda, and have a look at our
<ul>
<li>technical session TS-1391 <b>Dynamic Aspect-Oriented Programming in Java™ 2 Platform, Enterprise Edition (J2EE™) Platform Environments</b></li>
<li>BOF-1392  <b>Dynamic Aspect-Oriented Programming with AspectWerkz</b></li>.
</ul>
</p>

<p>
In case you miss it, drop a message at the BEA booth and we will try to answer as much question as we can.
Don't miss the AOP panel discussion, as well as AspectJ' Ramnivas session on Metadata driven AOP.
</p>

<p>
<a href="http://www.bea.com/framework.jsp?CNT=javaone04_beasessions.htm&FP=/content/news_events/events/">Read more about our sessions</a>.
<br/>
<a href="http://www.javaone04.com/catalog/catalog/portal.jsp">Read more about JavaOne 2004</a>.
<br/>
AOP related session at JavaOne 2004 (follow this <a href="http://www.javaone04.com/catalog/catalog/catalog.jsp">link</a> and search for <i>"aspect"</i>).
</p>]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2004-05-30T19:39:45+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000694_aspectwerkz_010_rc2_released.html">
<title>AspectWerkz 0.10 RC2 released</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000694_aspectwerkz_010_rc2_released.html</link>
<description><![CDATA[AspectWerkz 0.10 RC2 has been released.
<p/>
You can download it from <a href="http://aspectwerkz.codehaus.org/releases.html">here</a>

 <p>
                        This release is mainly a bug-fix release, but we have added some new functionality
                        (and changed some APIs) as well:
                        <ul>
                            <li>
                                Aspects does not have to extend the <code>Aspect
</code>
 base class anymore, but
                                can be any Java class and extend anything they like.
                            </li>
                            <br/>
                            <li>
                                The <code>JoinPoint
</code>
 class has these two methods:
                                <ul>
                                    <li>
                                        <code>getSignature()
</code>
 - which is used to retrieve the static signature
                                        for the join point.
                                    </li>
                                    <li>
                                        <code>getRtti()
</code>
 - which is used to retrieve the RTTI (Runtime Type Information)
                                        about the join point.
                                    </li>
                                </ul>
                                Both these methods returns a base interface that could be used, but is usually best
                                to cast to a more fine-grained and specific type.
                            </li>
                            <br/>
                            <li>
                                Retrieval of information about the system, adding and reading of parameters and metadata etc. is
                                done through the <code>CrossCuttingInfo
</code>
 class. An aspect or mixin that is
                                interested in accessing this info should have a constructor that takes a
                                <code>CrossCuttingInfo
</code>
 instance as its only parameter.
                                See the docs for details.
                            </li>
                            <br/>
                            <li>
                                Pluggable aspect container - The possibility to provide your own aspect container
                                implementation is back.
                                Useful if you need to control how your aspects are instantiated for example if you
                                want that to be handled by an IoC container (Spring, PicoContainer etc.))
                            </li>
                        </ul>
                    </p>
Enjoy.]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2004-05-03T12:07:51+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000651_next_generation_of_the_aspectwerkz_aop_framework_is_released_.html">
<title>Next generation of the AspectWerkz AOP framework is released </title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000651_next_generation_of_the_aspectwerkz_aop_framework_is_released_.html</link>
<description><![CDATA[<p/>
Today we released the 0.10 Release Candidate 1 of <a href="http://aspectwerkz.codehaus.org/">AspectWerkz</a>. 
Which forms the foundation for the next generation of AspectWerkz.

<p/>
AspectWerkz has gone through a lot of changes, the whole core engine has
for example been thrown out and replaced by a much more flexible and
performant one.  The join point model is much more expressive and
orthogonal we have also implemented a JIT compiler that is making
AspectWerkz much more performant.  On top of that we have a new
implementation of true runtime weaving, which allows you to redefine
your aspect model including adding <b>new</b> pointcuts at runtime.

<h3>
Expressiveness and orthogonality 
</h3>

We have improved the expressiveness and orthogonality a lot. 

<p/>
AspectWerkz currently supports the following join points: 
<ul>
    <li>
        method (static and member) execution
    </li>
    <li>
        method (static and member) call
    </li>
    <li>
        constructor execution
    </li>
    <li>
        constructor call
    </li>
    <li>
        field (static and member) modification
    </li>
    <li>
        field (static and member) access 
    </li>
    <li>
        catch clauses
    </li>
    <li>
        cflow
    </li>
</ul>

<p/>

In the latest version we have reached a high level of orthogonality: 
<p/>

<ul>
    <li>
        All advice types (around, after and before) works with all poincut
        designators (except for the handler pointcut which is only possible to
        bind to the before advice). 
    </li>
    <li>
        You can compose new pointcuts by mixing any types of pointcuts. 
    </li>
</ul>
<p/>
The syntax has changed slightly, both in the XML and attribute definition. However not more than that the migration should be fairly easy. See the <a href="http://aspectwerkz.codehaus.org/">docs</a> for details on the new syntax.

<h3>
Performance improvements and JIT compilation 
</h3>

We have implemented a JIT (Just-In-Time) compiler that detects advice chains that are often
executed and generates a custom class on the fly that invokes the advice chain
and the target join point statically.
<p/>

Here are some simple but interesting benchmarks comparing the latest distribution of
AspectWerkz, JBoss and AspectJ:
<p/>

    <b>The overhead of one around advice applied to a method call join point:</b>
                     <p/>
<table>
    <tr>
        <th></th>
        <th></th>
     </tr>
<tr>
                                <td>AspectJ 1.1.1
                                </td>
                                <td>0.000018 ms/call
                                </td>
                           </tr>
                            <tr>
                                <td>AspectWerkz 0.10 RC1
                                </td>
                                <td>0.000097 ms/call
                                </td>
                           </tr>
                            <tr>
                                <td>JBoss AOP 1.0Beta
                                </td>
                                <td>0.000181 ms/call
                                </td>
                           </tr>
</table>
<p/>

   <b>The overhead of five around advice applied to a method call join point:</b>
                    <p/>
<table>
    <tr>
        <th></th>
        <th></th>
     </tr>
    <tr>
        <td>
AspectJ 1.1.1
        </td>
        <td>
0.000097 ms/call
        </td>
   </tr>
    <tr>
        <td>
AspectWerkz 0.10 RC1
        </td>
        <td>
0.000163 ms/call
        </td>
   </tr>
    <tr>
        <td>
JBoss AOP 1.0Beta
        </td>
        <td>
0.000263 ms/call
        </td>
   </tr>
</table>
<p/>


<h3>
Runtime weaving 
</h3>

In addition to the capabilities to rearrange aspects and advices at existing
join points and swapping mixin implementation
at runtime, we provide a unique feature of adding new pointcuts at runtime
without any prior knowledge.
The implementation is based on Java HotSwap and thus requires a compliant
JVM.
<p/>

A simple API allows to refine the aspect definition to add new pointcuts
and then trigger the activation of it.  Prior to pointcuts addition,
your programs are guaranteed to run without any overhead since the
bytecode does not gets modified prior activation.  Moreover the runtime
weaving does not require to have a remote JVM to control the HotSwap
API since we provide a dedicated in-process module.  
<p/>


<h3>
Download the distribution
</h3>

You can download the distribution from <a
href="http://aspectwerkz.codehaus.org/releases.html">here</a> 
<p/>]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2004-03-19T06:42:23+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000507_aspectwerkz_09rc1_is_released.html">
<title>AspectWerkz 0.9.RC1 is released</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000507_aspectwerkz_09rc1_is_released.html</link>
<description><![CDATA[<p>
Today we (<a href="http://blogs.codehaus.org/people/jboner/">Jonas</a> and <a href="http://blogs.codehaus.org/people/avasseur/">Alex</a>) released the 0.9 release candidate 1 version
of <a href="http://aspectwerkz.codehaus.org">AspectWerkz</a> (0.9.RC1).
</p>

<p>
This new release brings a new innovative Aspect model whose orginal idea
came from Ron Bodkin, one of the <a href="http://eclipse.org/aspectj/">AspectJ</a> brains. The new Aspects are
defined in a single java class, with fields being the pointcuts, methods
being the advices and inner classes being the introductions. The Aspects are
marked with JSR-175 style metadata (for now as doclets, until java 1.5 is
out), and the metadata is incorporated in class file bytecode.  The XML
deployment descriptor is thus reduced to a minimal piece, and brings
Aspect packaging, abstraction and reuse to a new seamless integration
state.
</p>

<p>
The new Aspect model supports all AspectWerkz dynamic AOP features:
introduction replacements at runtime, advice replacements and removal.
This release provides support for both XML centric model (0.8 style) and
Self-defined Aspects.
</p>

<p>
The cross platform class-load time hooking has also been enhanced to
support IBM JRE and BEA JRockit.
</p>

<p>
We did the choice of releasing a Release Candidate to give our community
the ability to provide extensive feedback on all the new features
that bring AOP for java a step ahead.
</p>

<p>
The documentation is all included, with several samples that can be run
thru both Ant and Maven.
</p>

<p>
Jonas gave a talk at <a href="http://www.bejug.org">JavaPolis/BeJUG</a> early december and the slides announcing this
new Aspect model can be found <a href="http://aspectwerkz.codehaus.org/downloads/papers/bejug-aspectwerkz-boner.ppt.gz">here</a>.
</p>

<p>
New features:
<ul>
<li>Model 2 - self-defined Aspects are one single java class, with regular
java inheritance and abstraction. Pointcuts and bindings are defined
with doclet metadata that gives today AOP the JSR-175 metadata facilities.</li><br/>

<li>IBM JRE support IBM JRE bundles a specific class loader. This one is
now supported in class-load time weaving hook architecture.</li><br/>

<li>BEA JRockit BEA JRockit (v7 and v8.1) comes with a JVM level
ClassPreProcessor mechanism. AspectWerkz is a pioneer and allows the use
class load time AOP on top of this JRockit feature.</li><br/>
</ul>
</p>

<p>
Some of the other new things are:
<ul>
<li>Fixed issues for field pointcuts, Pointcut algebra has been enhanced</li><br/>
<li>Documentation updated and reorganized. Many bug fixes.</li><br/>
</ul>
</p>

<p>
The new release can be downloaded from <a href="http://aspectwerkz.codehaus.org/releases.html">here</a>.
<br/>
The BeJUG slides can be downloaded from <a href="http://aspectwerkz.codehaus.org/downloads/papers/bejug-aspectwerkz-boner.ppt.gz">here</a>.
<br/>
The self-defined Aspect model was presented in blogs <a href="http://blogs.codehaus.org/people/jboner/archives/000214_selfdefined_aspects_in_aspectwerkz_new_definition_model.html">here</a>.
</p>
 
 ]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2003-12-16T10:12:12+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000240_aspectwerkz_announces_support_for_bea_jrockit.html">
<title>AspectWerkz announces support for BEA JRockit</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000240_aspectwerkz_announces_support_for_bea_jrockit.html</link>
<description><![CDATA[<p>The latest snapshot of AspectWerkz is now supporting <a href="http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/products/jrockit">JRockit JVM</a> for on the fly weaving.
</p>

<p>
By using JRockit <a href="http://edocs.bea.com/wljrockit/docs81/jmapi/index.html">JMAPI</a> capabilities, AspectWerkz brings AOP one step ahead by officially supporting all major JVM (Sun, IBM, BEA). This allows to hook AspectWerkz in a seamless way to provide dynamic on the fly weaving of Aspects no matter your environment.</p>

<p>
JRockit could not be supported before due to lack of HotSwap support and a limitation that forbids overriding of java.lang.ClassLoader with a -Xbootclasspath option. Users had to use offline mode until there.</p>

<p>
The extension will be core part of <b>coming 0.9 AspectWerkz release</b>, so that all VM are supported with the smallest integration cost (Sun, IBM, JRockit).</p>

<p>
Tests have been made with<ul>
<li>JRockit 7SP4 (java 1.3.1)</li>
<li>JRockit 8.1SP1 (java 1.4.1_03)</li>
</ul>
</p>

<p>
The JMAPI JRockit API (management API) allows to add a <a href="http://edocs.bea.com/wljrockit/docs81/jmapi/javadoc/ManagementAPI/com/bea/jvm/ClassPreProcessor.html">classPreProcessor</a> mechanism using a java snip or a command line option.<br/>
A single VM is thus running at full speed, both under java 1.3 and 1.4, without having to use bootclasspath override.<br/>
The classPreProcessor instance is responsible to modify bytecode of the class at load time. AspectWerkz was already providing this classPreProcessor based architecture since summer 2003 for <a href="http://blogs.codehaus.org/projects/aspectwerkz/archives/000124.html">Sun VM</a> and Q3 2003 for <a href="http://blogs.codehaus.org/projects/aspectwerkz/archives/000140.html">IBM VM</a>.
</p>

<p>It is possible to hook or unhook AspectWerkz programmatically using JMAPI:
<pre>
JVMFactory.getJVM().getClassLibrary().setClassPreProcessor(
    new JRockitPreProcessor());
</pre>
</p>

<p>
To launch a JVM with AspectWerkz hooked in for class load time weaving this consists of a single option:
<pre>
/jrockit/bin/java
-Xmanagement:class=org.codehaus.aspectwerkz.extension.jrockit.JRockitPreProcessor ....
</pre>
</p>

<p>
If you are a JRockit fan, please help us and give a try to AspectWerkz online mode by your own. We need your feedback to make it suits your needs.
</p>

<p>
We will provide extensive documentation with the 0.9 release, but for the impatient :<ul>
<li>grab a CVS snapshot</li>
<li>check bin/aspectwerk scripts to adapt them for JRockit (one line is commented out - notice that AspectWerkz needs to be in bootclasspath due to JMAPI)</li>
<li>have a look at org.codehaus.aspectwerkz.extension.jrockit.JRockitPreProcessor in src/extensions/</li>
<li>compile extensions.jar with ant/maven aspectwerkz:extensions:compile</li>
<li>give it a try</li>
</ul>
</p>


]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2003-11-12T10:26:42+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000215_selfdefined_aspects_in_aspectwerkz_new_definition_model.html">
<title>Self-defined aspects in AspectWerkz - new definition model</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000215_selfdefined_aspects_in_aspectwerkz_new_definition_model.html</link>
<description><![CDATA[<p/>
The upcoming release of <a href="http://aspectwerkz.codehaus.org/">AspectWerkz</a> (0.9) 
will have support for a new definition model in which the aspects are self-defined. 
This means that implementation and definition is written in the same self-contained component.

<p/>
In this new definition model the aspects are regular Java classes and the advices and introductions 
are regular methods and inner classes in these classes. The aspects can be abstract and inheritance 
is used and treated like regular Java class inheritance. The meta-data (definitionis defined using 
runtime attributes and is currently compiled in into the class on bytecode level (not needed in Java
1.5.x and above).

<p/>
This new approach makes it easy to create reusable self-contained aspect components and libraries. 
It simplifies both the implementation, maintainance and refactorings since <b>everything</b> is 
written in one single Java class.

<p/>
This is an example of a testing aspect defining a virtual mock object mixin that will be 
introduced (along with its interfaces) on all the classes matching the pattern <tt>foo.baz.*</tt>. 
<pre>
/**
 * @Aspect perInstance
 */
public class MockObjectAspect extends Aspect {

    /**
     * @Introduce foo.baz.*
     */
    public class MockObject extends MyBase implements Traceable, Metered {
        // implementation of the mock object
    }
}
</pre>

<p/>
Here is another example showing a skeleton for an aspect implementing authentication 
and authorization.
<pre>
/**
 * @Aspect perThread
 */
public class RoleBasedAccess extends Aspect {

     private Subject m_subject;

    /**
     * @Call * *..facade.*.*(..)
     */
    Pointcut facadeMethods;

    /**
     * @Execution * *..service.*.*(..)
     */
    Pointcut needsAuthorization;
   
    /**
     * @Before facadeMethods
     */
    public void authenticateUser(JoinPoint joinPoint) throws Throwable {
        Context context = ... // get principals and credentials
        boolean granted = SecurityManager.authenticateUser(context) // authenticate the user (f.e. using JAAS)
        if (granted) {
            m_subject = ... // set the subject 
        }
        else {
            throw new SecurityException("user not authenticated: " + context);
        }
    }

    /**
     * @Around needsAuthorization
     */
    public Object authorizeUser(JoinPoint joinPoint) throws Throwable {
        MethodJoinPoint jp = (MethodJoinPoint)joinPoint;
	boolean granted = SecurityManager.checkPermission(m_subject, jp.getTargetClass(), jp.getMethod());
        if (granted) {
            // proceed with normal method invocation
            return joinPoint.proceed();
        }
        else {
            throw new SecurityException("access denied at " + jp.getTargetClass() + "." + jp.getMethodName());
        }
    }
}
</pre>

<p/>
Currently the runtime attributes implementation is based on JavaDoc tags. These are parsed and 
inserted into the class on bytecode level, so no source files are needed once the classes have been compiled.
This is something that will become obsolete when Java 1.5 and the <a href="http://www.jcp.org/en/jsr/detail?id=175">JSR-175</a> 
is released, which will bring runtime attributes to the Java language. The extra compilation step needed to annotate the 
class files will then not be needed. This also means that pure Java refactorings of both implementation and definition in the 
aspects will be made possible (e.g. tool support).

<p/>
The new release is scheduled to be released in the middle of end of november.
<p/>
Stay tuned.
<p/>]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2003-10-27T11:44:45+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000140_aspectwerkz_announces_support_for_ibm.html">
<title>AspectWerkz announces support for IBM</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000140_aspectwerkz_announces_support_for_ibm.html</link>
<description><![CDATA[<p/>
The latest snapshot of AspectWerkz is now supporting IBM JDKs for on the fly weaving.
<p/>
IBM bundles an entire JRE (1.3 or 1.4) with its WSDK and WepSphere platform, which you are forced to use with IBM software.
<p/>
Due to specific classloading scheme, we delayed the support for it and users had to use <a href="http://aspectwerkz.codehaus.org/startup_and_runtime_issues.html#Startup and transformation issues">offline mode</a> (class post compilation) to use AspectWerkz with WebSphere.
<p/>
With the latest version, we have brought AspectWerkz a step further in AOP that now allow <a href="http://aspectwerkz.codehaus.org/online.html">online mode</a> to work with IBM custom JDK / JRE.
<p/>
This change could only be achieved starting with the 0.8 released around august 2003, wich has brought the totaly new online architecture that allows to seamless hook AspectWerkz weaver in the JVM.
<p/>
Tests have been made with
<ul>
<li><b>IBM WSDK 5.0.1 on a win32 (Java 1.3.1)</b><!--
Java version "1.3.1"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1)
Classic VM (build 1.3.1, J2RE 1.3.1 IBM Windows 32 build cn131-20021107 (JIT enabled: jitc))
--></li>
<li><b>IBM JRE 1.3.1 on a linux 2.4</b><!--
java version "1.3.1"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1)
Classic VM (build 1.3.1, J2RE 1.3.1 IBM build cxia32131-20021102 (JIT enabled: jitc))
--></li>
</ul>

If you are a WebSphere or IBM fan, please help us and give a try to AspectWerkz online mode by your own. We need your feedback to make it more mature.
<p/>
]]></description>
<dc:subject></dc:subject>
<dc:creator>avasseur</dc:creator>
<dc:date>2003-09-03T16:16:05+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000124_aspectwerkz_08_is_released.html">
<title>AspectWerkz 0.8 is released</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000124_aspectwerkz_08_is_released.html</link>
<description><![CDATA[<p>
Today <a href="http://blogs.codehaus.org/people/jboner/">Jonas</a> and <a href="http://blogs.codehaus.org/people/avasseur/">Alex</a> released the 0.8 version of <a href="http://aspectwerkz.codehaus.org">AspectWerkz</a>.
</p>

<p>
This new release have been tested and verified to work for servlets and all types of EJBs under WebLogic Server 7 and 8.1 using both online and offline mode. 
</p>

<p>
JMangler has been thrown out for a completely new and customized solution that apart from solving some of the shortcomings and bugs in JMangler also provides completely new and interesting possibilities. Here are the options currently supported for online mode:
</p>

<p>
		<ul>
                   <li>
                        HotSwap<br/>
                        A first JVM launchs your target application in a second JVM.
                        The first JVM hooks AspectWerkz in the second one just before the <i>main class</i> (and all dependencies) gets loaded,
                        and then connects to the stdout / stderr / stdin stream ot the
                        second JVM to make them appear as usual thru the first JVM.<br/>
                    </li>
                    <li>
                        Transparent bootclasspath<br/>
                        For JVM or java version like 1.3 which don't support <i>class replacement at runtime (HotSwap)</i>, this option
                        allows for same mechanism by putting an enhanced class loader in the target
                        application VM bootclasspath.<br/>
                    </li>
                    <li>
                        Native HotSwap<br/>
                        A native C JVM extension running in the target application VM handles the replacement of the
                        class loader by the enhanced one.<br/>
                    </li>
                    <li>
                        Remote HotSwap<br/>
                        The application VM is launched <i>suspended</i>. The replacement of the enhanced class loader is done
                        thru a separate manual process, which can easily be scripted.<br/>
                    </li>
                    <li>
                        Prepared bootclasspath<br/>
                        The enhanced class loader is builded and packaged as a jar file in a first separate manual process, which can easily be scripted.
                        The application VM is launched with options to use this enhanced class loader.<br/>
                    </li>
                    <li>
			Auto detection of java 1.3 and java 1.4
                    </li>
                </ul>
</p>

<p>
Some of the other new features are:
</p>

<p>
                    <ul>
                        <li>
                            JDK 1.3 compatibility.
                        </li>
                        <li>
                            Runtime attributes -> XML compiler (no more metaData dir and meta-data compilers needed, one aspectwerkz.xml per application).
                        </li>
                        <li>
                            Offline compiler refactored. Now support rollback on error facility.
                        </li>
                        <li>
                            Released under a BSD-style license.
                        </li>
                        <li>
                            Non-reentrancy option for join points.
                        </li>
                        <li>
                            Definition validator.
                        </li>
                        <li>
                            Documentation updated and reorganized.
                        </li>
                    </ul>

</p>

<p>
The new release can be downloaded from <a href="http://aspectwerkz.codehaus.org/releases.html">here</a>.
</p>
<p>
A more detailed paper describing the new online architecture can be downloaded from <a href="http://aspectwerkz.codehaus.org/downloads">here</a>
</p>.]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2003-08-14T10:19:59+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000097_aspectwerkz_072_is_released.html">
<title>AspectWerkz 0.7.2 is released</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000097_aspectwerkz_072_is_released.html</link>
<description><![CDATA[<p/>
This is a bugfix release and fixes two flaws in the 0.7 release:
<p/>
<ul>
     <li>
A memory leak.
     </li>
     <li>
Instrumentation of methods belonging to abstract classes was not possible.
     </li>
</ul>
Checkout the revision rel_0_7_2 from the CVS or download the precompiled distribution from [http://aspectwerkz.codehaus.org/releases.html].
<p/>]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2003-07-11T19:16:12+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000088_aspectwerkz_07_is_released.html">
<title>AspectWerkz 0.7 is released</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000088_aspectwerkz_07_is_released.html</link>
<description><![CDATA[<p/>
This release fixes many of the bugs that were introduced with the new join point model in the 0.6.x release (which was a complete rewrite).
<p/>
It also has some new interesting features.
<p/>
<p>
Here is a list of some of the changes and features:
                    <ul>
                        <li>
cflow (control flow) pointcuts.
                       </li>
                        <li>
Uses new version of JMangler (3.0.2) which is released under LGPL.
                       </li>
                        <li>
Performance improvement for advices by a factor of 2.
                       </li>
                        <li>
Many, many bugfixes (introduced by the new pointcut model implementation in 0.6.x).
                       </li>
                        <li>
The runtime attributes tag's syntax has changed. (They now have an
aspectwerkz namespace and are using the same syntax as XDoclet.)
                       </li>
                        <li>
Documentation and examples have been updated.
                       </li>
                    </ul>
</p>
You can download the new distribution from <a href="http://aspectwerkz.codehaus.org/releases.html">here</a>
<p/>
Enjoy. 
<p/>]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2003-07-09T13:55:22+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000077_jmangler_changes_its_license_back_to_lgpl.html">
<title>JMangler changes its license back to LGPL</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000077_jmangler_changes_its_license_back_to_lgpl.html</link>
<description><![CDATA[<a href="http://javalab.iai.uni-bonn.de/research/jmangler/">JMangler</a> will change its license back to LGPL (for some reason they changed to GPL for the 3.x release).
<p/>
The change to GPL did of course cause a lot of problems for <a href="http://aspectwerkz.codehaus.org/">AspectWerkz</a> (which is licensed under LGPL and uses JMangler) and I have since then tried to persuade the JMangler team to change its license back to LGPL. 
<p/>
Yesterday I recieved this letter from Michael Austermann, the creator of JMangler:
<blockquote>
Hi Jonas,

I've been to canda for the last weeks and was unable to read/reply any
emails. We will change the the licence of JMangler back to LGPL within the
next one or two weeks.

Michael
</blockquote>
So for all of you who have hesitated in using <a href="http://aspectwerkz.codehaus.org/">AspectWerkz</a> in a commercial application: go for it, you will love it. :-)
<p/>]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2003-06-30T10:52:21+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000064_aspectwerkz_063_has_been_released.html">
<title>AspectWerkz 0.6.3 has been released</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000064_aspectwerkz_063_has_been_released.html</link>
<description><![CDATA[AspectWerkz version 0.6.3 has been released.<p/>
I have among other things rewritten the whole definition and weave model implementation to support a much more powerful join point model. The join point model now have the essence of the AspectJ model. 

<p/>
Here are some of the features/changes:
                    <ul>
                        <li>
                            Completely new definition model. Aspects, advices,
                            introductions and pointcuts are now completely orthogonal
                            and the model now has the essence of the AspectJ model.
                            See the documentation for details.
                        </li>
                        <li>
                            Abstract aspects definitions as well as pointcut expressions
                            (e.g.
                            <code>((pc1 OR pc2) AND !pc3)
</code>
 and similar).
                        </li>
                        <li>
                            Multiple weave models.
                        </li>
                        <li>
                            Multiple AspectWerkz system can run in the same JVM concurrently.
                        </li>
                        <li>
                            setField and getField now works for get and set java.util.*
                            collection fields (e.g. add/get/remove/size and so on).
                        </li>
                        <li>
                            Advice and introduction container is now pluggable. I.e. the
                            user can provide its own custom implementation (f.e. to enable
                            persistence).
                        </li>
                        <li>
                            The transparent persistence of advices and introductions have
                            been moved to the sandbox.
                        </li>
                        <li>
                            Many bug fixes.
                        </li>
                    </ul>

Here is an example of the new definition:
<pre>
&lt;aspectwerkz&gt;
    &lt;!-- ============================================= --&gt;
    &lt;!--  Define the advices                           --&gt;
    &lt;!-- ============================================= --&gt;
    &lt;advice-def name="log"
                advice="advices.LoggingAdvice"
                deployment-model="perInstance"/&gt;

    &lt;advice-def name="cache"
                advice="advices.CachingAdvice"
                deployment-model="perClass"/&gt;

    &lt;advice-def name="persistent"
                advice="advices.PersistenceAdvice"
                deployment-model="perJVM"/&gt;

    &lt;advices-def name="log_and_cache"&gt;
        &lt;advice-ref name="log"/&gt;
        &lt;advice-ref name="cache"/&gt;
    &lt;/advices-def&gt;

    &lt;!-- ============================================= --&gt;
    &lt;!--  Define the introductions                     --&gt;
    &lt;!-- ============================================= --&gt;
    &lt;introduction-def name="serializable"
                      interface="java.io.Serializable"/&gt;

    &lt;introduction-def name="mixin"
                      interface="mixins.Mixin"
                      implementation="mixins.MixinImpl"
                      deployment-model="perInstance"/&gt;

    &lt;!-- ============================================= --&gt;
    &lt;!--  Define the abstract aspects                  --&gt;
    &lt;!-- ============================================= --&gt;
    &lt;abstract-aspect name="MyAbstractAspect"&gt;
        &lt;advice pointcut="setters AND !getters"&gt;
            &lt;advices-ref name="log_and_cache"/&gt;
        &lt;/advice&gt;

        &lt;advice pointcut="persistentFields"&gt;
            &lt;advice-ref name="persistent"/&gt;
        &lt;/advice&gt;
    &lt;/aspect&gt;

    &lt;!-- ============================================= --&gt;
    &lt;!--  Define the aspects                           --&gt;
    &lt;!-- ============================================= --&gt;
    &lt;aspect name="MyAspect" extends="MyAbstractAspect"&gt;
        &lt;introduction class="domain.*"&gt;
            &lt;introduction-ref name="serializable"/&gt;
            &lt;introduction-ref name="mixin"/&gt;
        &lt;/introduction&gt;

        &lt;pointcut-def name="setters" type="method" pattern="String domain.*.set*(..)"/&gt;
        &lt;pointcut-def name="getters" type="method" pattern="String domain.*.get*(..)"/&gt;
        &lt;pointcut-def name="persistentFields" type="setField" pattern="* domain.*.*"&gt;
    &lt;/aspect&gt;
&lt;/aspectwerkz&gt;
</pre>
You can download the new release from the <a href="http://aspectwerkz.codehaus.org/releases.html">releases page</a>
<p/>
Enjoy.
<p/>
]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2003-06-20T11:44:04+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000021_aspectwerkz_051_is_released.html">
<title>AspectWerkz 0.5.1 is released</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000021_aspectwerkz_051_is_released.html</link>
<description><![CDATA[<p/>
The 0.5.1 release fixes some bugs in the new 0.5 release. 
<p/>
Download from it <a href="http://aspectwerkz.codehaus.org/releases.html">here</a>.
<p/>]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2003-05-16T17:42:58+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/projects/aspectwerkz/archives/000015_aspectwerkz_05_has_been_released.html">
<title>AspectWerkz 0.5 has been released</title>
<link>http://blogs.codehaus.org/projects/aspectwerkz/archives/000015_aspectwerkz_05_has_been_released.html</link>
<description><![CDATA[The AspectWerkz 0.5 release is a huge improvement compared to previous versions. Apart from many bug fixes it is also packed with new features. 
<p/>
You can download the new release from the <a href="http://aspectwerkz.codehaus.org/releases.html">releases page</a>.
<p/>
New features:
  <ul>
                        <li>
                            Caller side pointcuts. I.e. the possibility to advise a
                            method invocation (caller side) apart from method
                            execution (callee side).
                        </li>
                        <li>
                            Fine-grained pattern language for picking out pointcuts.
                            It is now possible to pick out method pointcuts by method name,
                            parameter types and return type as well as field pointcuts
                            by field name and field type. All these support regular
                            expressions.
                        </li>
                        <li>
                            Runtime attributes for advices (method/field/throws).
                            I.e. add meta-data to your methods/field/classes as
                            JavaDoc tags which are picked up by the weaver and
                            used as rule set when doing the transformations.
                        </li>
                        <li>
                            Class selectors for aspects. I.e. pick out classes using
                            regular expressions.
                        </li>
                        <li>
                            Advising of static fields.
                        </li>
                        <li>
                            Parameters to advices. The possibility to pass
                            parameters to advices through the XML definition.
                        </li>
                        <li>
                            Advice stacks. The possibility to define stacks/chains
                            of advices that can be reused throughout the XML definition.
                        </li>
                        <li>
                            MethodAdvice has been renamed to AroundAdvice and the
                            FieldAdvices has been renamed to PreAdvice and PostAdvice.
                        </li>
                        <li>
                            Creation and registration of new advices at runtime
                            (in previous releases you could only add/remove/reorder
                            existing advices).
                        </li>
                        <li>
                            Ant task for offline post-processing.
                        </li>
                        <li>
                            More flexible startup and definition handling process.
                        </li>
                        <li>
                            Multiple pattern declarations for pointcuts.
                        </li>
                        <li>
                            More documentation and examples.
                        </li>
                        <li>
                            Many many bugfixes.
                        </li>
                    </ul>]]></description>
<dc:subject></dc:subject>
<dc:creator>jboner</dc:creator>
<dc:date>2003-05-12T16:15:55+00:00</dc:date>
</item>


</rdf:RDF>
