Really nice! Thanks, Andy.
On Mon, Jul 29, 2013 at 5:40 PM, Matthew Adams <[email protected]>wrote: > 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 <[email protected]>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 >> [email protected] >> https://dev.eclipse.org/mailman/listinfo/aspectj-users >> >> > > > -- > mailto:[email protected] <[email protected]> > skype:matthewadams12 > googletalk:[email protected] > http://matthewadams.me > http://www.linkedin.com/in/matthewadams > > _______________________________________________ > aspectj-users mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/aspectj-users > >
_______________________________________________ aspectj-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/aspectj-users
