And if you need it, static typing is one annotation away... This is such an underestimated feature. While prototyping it might be easier to use dynamic typing, but once a project becomes complex and has more people working on it etc, - you might want to switch it to statically-typed. Groovy simplifies this immensely and minimizes the amount of code that needs to rewritten.
Can be very simple and elegant, like a better Python, on the JVM.
But also very rigorous, as a Java superset, with powerful features like mixing dynamic and static compilation in the same class.
Or even deep, with run-time metaprogramming and compile-time AST manipulation capabilities (giving tools like Gradle, Spock...).
And you have of course multiline interpolated Strings. And so much.