Groovy преимущества перед Jython или Jruby?

Почему я должен использовать Groovy, когда я мог бы использовать Jython или Jruby? Предоставляет ли язык какие-либо неотъемлемые преимущества, чтобы компенсировать тот факт, что навыки Jython и Jruby применимы к их родительским языкам за пределами JVM?

Имейте в виду, что я намеренно сохраняю этот вопрос общим, но если есть какие-либо преимущества, которые существуют в конкретном домене, пожалуйста, не стесняйтесь их описывать.

ИЗМЕНИТЬ
Чтобы уточнить, если я напишу какой-то код в Jruby, я могу теперь, в некоторых случаях, переместить этот код за пределы JVM, если это необходимо, или, по крайней мере, я получил лучшее понимание Ruby. В то время как навыки Groovy применимы только при использовании языка, который существует только внутри JVM. У Jython и Jruby это преимущество, что означает Groovy, чтобы компенсировать этот недостаток?

Если Groovy не имеет каких-либо преимуществ, которые вы нашли, и вы бы предложили просто использовать Jython или Jruby, дайте мне знать.

Изменить 2
Спасибо всем за ответы, большинство из них делают одну и ту же точку, Groovy интегрируется немного лучше с Java, затем Jython или Jruby.

Последующие действия
Используя Netbeans 6.5 в качестве моей IDE, я обнаружил, что Groovy лучше интегрируется с проектами Java, чем Jruby. Я не уверен, что отсутствие интеграции - это неудача Jruby или Netbeans. Но после использования его для alittle Groovy определенно кажется, что у него нога.

Ответ 1

Я сделал довольно обширную разработку в Ruby и Groovy (а также немного Jython с использованием Grinder в качестве инструмента тестирования нагрузки).

Из 3 я предпочитаю Groovy больше всего. Мне нравится синтаксис закрытия, и я думаю, что он имеет самую тугую интеграцию в том, как он работает с другими классами Java на JVM. Прошло немного времени с тех пор, как я в последний раз пользовался JRuby, но импорт классов Java и работа с загрузчиком классов в JRuby не были такими же чистыми для меня.

Тот факт, что Groovy также является, по сути, надмножеством Java, означает, что огромная популяция программистов Java там будет быстрее использовать время для выбора Groovy поверх Ruby/JRuby. Они могут начать программировать его так же, как Java, и медленно начинают вставлять idomatic Groovy, когда они его подбирают.

Более того, о чем вы спрашиваете, я думаю, что еще одно преимущество Groovy заключается в том, что язык, на который вы идете, когда хотите что-то оптимизировать, - это почти тот же синтаксис, это Java. Если вы работаете в мирах Ruby или Python, вам нужно будет перейти на C, который представляет собой большой сдвиг или Java, который также сильно отличается от этих языков. Программирование в Groovy имеет тенденцию помогать держать ваши навыки Java несколько острыми, а также.

Если у вас есть определенный доступ к инфраструктуре Ruby или Python или к команде, которая знакома с такими средами, я мог бы выбрать один из этих других языков.

Действительно, все 3 из них - очень хорошие языки, и то, что вы выбираете, должно зависеть больше от проблемы, которую вы пытаетесь исправить, и ресурсов, которые у вас есть для вас. После того, как вы освоите один динамический язык, гораздо легче выбрать второй или третий.

Ответ 2

Я бы сказал, если вам нужно смешать Java с Jruby/ Groovy, перейдите с Groovy. Как сказали все, Groovy имеет более жесткую интеграцию с Java.

Но что касается языка реализация, я предпочитаю язык Ruby над Groovy, язык вращается вокруг себя, в Groovy есть некоторые хаки, которые присущи самой реализации (просто посмотрите на Grails stacktrace и Rails stacktrace, и вы поймете, что я имею в виду).

Я высоко рекомендую посмотреть Neal Ford сравнение Groovy и JRuby

Ответ 3

Я думаю, что Дик Уолл дал очень хорошее резюме различий между этими тремя в подкасте Java Posse (№ 213, около 34:20 в)... "JRuby был разработан, чтобы сделать программистов счастливыми... это выбор разработчика языка программирования, Python имеет очень сильные корни в простоте и образовании, Groovy нацелен на то, чтобы быть выбором для разработчиков Java... это очень знакомая среда для Java... с поддержкой аннотаций".

С точки зрения перемещения языка вне JVM я не думаю, что время выполнения Java накладывает большую часть служебных накладных расходов - это простая установка, и вам нужно установить некоторые переменные среды, но она предоставляет число преимуществ, включая зрелую среду выполнения, которая была высоко оптимизирована, и большой набор библиотек. Команда JRuby теперь сообщает о лучшей производительности, чем собственная МРТ. http://blog.headius.com/2008/08/twas-brillig.html

Ответ 4

У меня был только опыт работы с Jython и Groovy. Самым большим недостатком Jython на данный момент является то, что в последней версии, рекомендованной для производства (2.2.1), есть набор функций, который "примерно соответствует параметру Python-2.2" (Вопросы по Jython). Существует бета-версия, на которой я предполагаю, что это Python 2.5, которая теперь является версией. Не знаю, можно ли так сказать для JRuby.

Ответ 5

Я не знаю, почему вы должны выбрать Groovy, потому что я не знаю вашего фона. Если вы являетесь разработчиком Java Groovy, он больше похож на ваш текущий язык, чем на JRuby или Jython. Groovy объединяет лучшие из Java, языка, Java, платформы и языка Ruby.