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

Reply via email to