When I see code snippets like
interface A {
void a();
void b() default { System.out.println(\"b\"); };
void c() final { System.out.printl
I suggest you to look at this conference : http://medianetwork.oracle.com/media/show/16999
This explain everything. The most interesting thing to do is to allow an interface to evolve without rewritting your whole codebase. This is key to allow a big codebase to evolve and not become more and more crippled.