I have run across the following in both some JBoss source that I’ve seen as well as the “new Interface” wizard in Eclipse… What is the purpose of having an interface and its methods defined as being abstract? To me, this is completely redundant:
abstract interface MyIfc {
public abstract whatsThePoint();
}
If it’s an interface, of course you have to implement its definition – which is what being abstract means. What is the point of basically specifying the same thing twice? I know I’m missing something here?

I know this is really late, but that is valid, and actually what the compiler puts into the byte-code. Public abstract are the default modifiers for an interface. The above code doesn’t do anything the compiler doesn’t already do for you, but yes it is redundant.
It’s all about being explicit and IMHO it’s good practice. Let’s say you use and IDE and see that a method is derived, hover over the “super” link and get the javadoc for it in a little pop-up: Aha! you can see immediately that it’s abstract. This method is implemented and not overridden.
It’s a similar issue to: if(someBoolean) someMethod();
...is less readable and less explicit than: if (someBoolean) { this.someMethod(); }
In general, you shouldn’t assume that someone who looks at your code will know as much about Java as you do…
Let’s try to not have the formatting removed:
vs.
if (someBoolean) { this.someMethod(); }