Groovy уже является суперсетом (т.е. источником, совместимым с) Java? Если нет, то каковы сейчас несовместимости между Java и Groovy?
Groovy "расширяет" Java и есть различия между Groovy и Java (Groovy File не может быть скомпилирован компилятором Java). На странице Отличия от Java перечислены все основные различия между Java и Грувым. Тем не менее, компилятор Груви может преобразовать Груви-файл в .class File, который может быть запущен с помощью Java Intepreter (для этого требуется groovy-all-VERSION.jar
, чтобы быть на CLASSPATH). Это ответ на вопрос?
Одним из разных случаев, когда я не видел, как упомянул на этой странице, так это способа перегружена методами. В Java он основан на типе компиляции аргумента, тогда как в Groovy он основан на типе выполнения. Скажем, например, у вас есть эти методы в классе
void doIt(Object o) {} // Java
void doIt(String s) {} // Groovy
следующий код:
Object o = "foo";
вызовет метод со строковым параметром, если код Groovy, а также метод с параметром объекта, если код Java. Groovy называет эту функцию «Multi-Methods».