Ответ 1
Kotlin - это язык JVM, который ИМО пытается улучшить Java в функциях и краткости, оставаясь при этом обязательным и статическим. Groovy имеет аналогичную концепцию, за исключением того, что решил пойти динамично. В результате, некоторые функции языка будут похожи.
Вот некоторые отличия, которые я знаю о
- Static vs Dynamic: Поскольку Groovy был разработан как динамический язык и @CompileStatic, в то время как большая аннотация (я использую ее много), была добавлена позже. Его функция немного заперта, и это не принуждает людей котироваться статически. Он не используется повсеместно (например, мои тесты Spock, похоже, не скомпилируются с ними). Иногда даже с ним на Groovy все еще кажется, что время от времени возникает странное динамическое поведение. Котлин 100% статический, а динамика не вариант.
Есть еще ряд других функций, которые есть. Я бы рекомендовал вам посмотреть ссылку, и вы можете заметить еще несколько, например. https://kotlinlang.org/docs/reference/
- Классы данных - лаконичны с функцией копирования (немного похожими на классы case в Scala)
- Нулевая проверка безопасности, о которой вы упомянули (что является большим профи)
- Возможность уничтожать элементы. val (имя, возраст) = человек
- Функции более высокого порядка, определенные как "fun doStuff (body: Int → T)): T". Которые намного лучше, чем Groovy Закрытие ИМО. (очень похоже на Scala)
- Проверки типов и умные приведения хороши: https://kotlinlang.org/docs/reference/typecasts.html
- Объекты Companion, таким же образом Scala также пытается удалить статические методы из классов, Kotlin пытается сделать то же самое.
- Запечатанные классы для ограничения наследования (снова Scala имеет что-то подобное)
- Подтип "Ничего", где все это супертип. (еще одна важная концепция в Scala).
- когда выражения для базового соответствия шаблонов: https://kotlinlang.org/docs/reference/control-flow.html
Как вы можете видеть, он заимствует с других языков, кроме Groovy. Они попытались сделать вишневое множество отличных функций, пытаясь сделать хороший язык. Естественно, Groovy имеет свою доброту. Я сосредоточил внимание только на том, что имеет Котлин, а не наоборот.
Еще один плюс заключается в том, что созданный разработчиком IDE компилятор очень быстр и имеет отличную поддержку IDE. Не сказать, что Groovy не имеет хорошей поддержки, но мой текущий проект требует много времени для компиляции, а метод рефактории всегда предполагает, что вы кодируете динамически.
Я бы порекомендовал вам опробовать Koans, чтобы узнать, какие функции этого языка вам нравятся, и как он сравнивается с Groovy (<а3 > ).