Wow. Congrats, Andy. Nice work. I hope to play as soon as I can. :) -matthew
On Mon, Jul 29, 2013 at 7:24 PM, Andy Clement <andrew.clem...@gmail.com>wrote: > Hi, > > I'm pleased to announce (much sooner than I anticipated) AspectJ 1.8.0.M1. > Typically with an AspectJ major release the first milestone can only weave > into bytecode for the comparable Java level but not actually compile source > for that Java level, but things are different this time: 1.8.0.M1 is a > Java8 compiler based on the latest Eclipse JDT and can compile source code > containing the new constructs: lambdas, default methods, type annotations, > method references, etc. > > If anyone wants to try it out the link is on the download page (milestones > section): > > http://eclipse.org/aspectj/downloads.php > > Or it is in the maven.springframework.org/milestones maven repo, named > 1.8.0.M1 > > NOTE: Java 8 isn't finished, specs are still changing, JDK classes are > still changing. The code this compiler produces seems to run on a beta jdk > level of ~b97 but I think there are some changes to the lambda runtime > classes that mean the code won't run on b99. > > NOTE2: Even if you aren't writing Java8 source code, this new compiler > allows you to compile your 1.6./1.7 source against a 1.8 JRE. The older > versions of AspectJ (and the JDT compiler) would choke when the compiler > attempted to unpack some of the classes in a 1.8 JRE that contained > constructs it couldn't deal with (e.g. default methods in an interface). > > Any feedback is appreciated, don't expect it to be bug free ! 1.8.0 final > cannot be released until the specs/etc are all finalized so expect the > 1.7.X line to continue for a while. > > Here is a sample test program I compiled this morning: > === > import java.util.Arrays; > > interface I { > // Default method > default void foo() { > System.out.println("ABC"); > } > } > > public class C implements I{ > public static void main(String[] args) { > new C().foo(); > // Lambda > Runnable r = () -> { System.out.println("hello world!"); }; > r.run(); > // Used Java8 b97 > Arrays.asList(MyClass.doSomething()).forEach((p) -> > System.out.println(p)); > } > } > > aspect X { > before(): execution(* I.foo()) { > System.out.println("I.foo running"); > } > before(): staticinitialization(!X) { > System.out.println("Clazz "+thisJoinPointStaticPart); > } > } > > > class Utils { > public static int compareByLength(String in, String out) { > return in.length() - out.length(); > } > } > > class MyClass { > public static String[] doSomething() { > String []args = new String[]{"4444","333","22","1"}; > // Method reference > Arrays.sort(args,Utils::compareByLength); > return args; > } > } > === > > Enjoy! > The AspectJ Team > > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > https://dev.eclipse.org/mailman/listinfo/aspectj-users > > -- mailto:matt...@matthewadams.me <matt...@matthewadams.me> skype:matthewadams12 googletalk:matt...@matthewadams.me http://matthewadams.me http://www.linkedin.com/in/matthewadams
_______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users