> Why does Groovy introduce an annotation if you can't use it?
You can use the new members it introduces from other groovy. The problem is that the AST transform for Delegate runs late, too late for java to see the method it introduces. I have a prototype variant of Eclipse Groovy that enables this functionality but it is too hacky to release into the current builds. My prototype was based around @Singleton support (and the associated getInstance() method).
> Is the Groovy language just not stable enough for production environments?
I don't see it as a stability issue, it is a feature of how @Delegate support is implemented through AST transformation. If the AST transform ran before stub generation then joint compilation would work, but writing AST transforms that run that early can be difficult as the ast being modified may not be resolved. So the behaviour is well defined and predictable, but I agree not ideal for a mixed java/groovy project.
> The only way I can get it to compile is to groovyc the groovy file, then javac the java file.
Yep - since then by the time javac sees the groovy output the AST transforms have all successfully run.
I do plan to support this if I can, but not in M1.