Если я правильно понимаю, Groovy является динамически типизированным, но поскольку он представляет собой почти надмножество Java, информация о статическом типе может быть необязательно предоставлена. Это может быть полезно, если вы пишете что-то, где только несколько частей являются критическими по производительности, избегая трений при использовании нескольких языков. Аннотации типов могут предоставляться только для критически важных частей.
Какова эффективность при использовании Groovy вместо Java в функциях/классах, где используется подмножество Java, и предоставляются аннотации статического типа?