Logo
StartDownloadsDocumentationPublicationsContactCommunityDevelopers

0.8.7 Release Notes

Important upgrade information:

Gotchas:

  • Default VM target is now 1.5, when using JAsCo in 1.4, use the target flag for compiling JAsCo artifacts..
  • Make sure to alter all your existing aspects and connectors since four keywords have changed for compliance with AspectJ’s terminology. See 0.8.5M1 release notes.
  • Several features now require a Java 1.5 VM (refinable methods, run-time weaver), a clear error is shown when this is not the case

If you are updgrading from a version earlier then:

  • 0.8.x: you have to redo the install procedure as outlined by the installation instructions. The classpath has changed.
  • 0.7.4: the HotSwap 2 startup command is Modified for compliance with Java 1.5 final! See here for the new command.

Latest public build detailed information: Click here. See also for known limitations and bugs of current version.

Major Changes for latest build:

1. Aspect Bean explicit instantiation

Aspect beans (i.e. the global class which defines the hooks) can now define a non default constructor. This constructor can be explicitly invoked from the connector, allowing customization of the global aspect bean instance. The following code fragment illustrates an aspect bean and connector which explicitly instantiates this aspect bean:

class Test {
 
    public Test(String var) {}
 
    hook testHook {
       ...
    }
}
 
connector TestConnector {
 
   Test test = new Test("a custom string");
 
   Test.test hookInstance = new Test.test(* *.*(*));
}

Good to know:

  • When the aspect bean is not explicitly instantiated, the default constructor is used for instantiation
  • There is still only one instance per aspect bean type per connector

2. Return type of around* advices and all proceeds equals declared return type

The return type of around, around returning and around throwing equals the type declared by the abstract method parameter of the hook’s constructor. Likewise, the return type of all three proceed alternatives also equals the same type.

For example, the following code is possible now without casting:

class Test {
 
    hook testHook {
       testHook(int method(..args)) {...}
 
       around() {
          int k = proceed();
          return k*2;
       }
    }
}

Good to know:

  • When there is no declared return type by ommitting the return type in the abstract method parameter spec, the type equals Object
  • EXCEPTION: When the declared return type is “void”, the return type of around* and proceed will still be Object

3. Prototype extension for supporting distribution

JAsCo now supports a true distributed setup that has very powerful distributed features. Aspects can intercept joinpoints executing on other hosts and are also able to execute their advices on other hosts.

More info coming soon!

4. Annotation to avoid aspect application/weaving by JAsCo

Up till now, the only way to exclude classes from weaving is by listing them as a jvm launch option. JAsCo now supports an annotation that can be placed on all java elements to exclude it from weaving:

jasco.runtime.annotation.NoJAsCoAOP

e.g. when supplying a class X with this annotation, JAsCo will never touch it.

e.g. when supploying method y of class X with is annotation, JAsCo will never touch method y, but might weave other methods of class X

Changes of milestones

kernel/0.8.5.txt · Last modified: 25.11.2005 16:34 by wvdperre
SiteMapRecent Content by SSEL ©2002-2005     Latest JAsCo Release: JAsCo 0.8.7 (revised 2005-11-25 16:29:02)