Groovy преимущества перед Jython или Jruby? - PullRequest
34 голосов
/ 13 ноября 2008

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

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

EDIT
Для пояснения: если я напишу некоторый код на 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. Но после использования его для небольшого Groovy определенно, кажется, имеет ногу.

Ответы [ 5 ]

38 голосов
/ 14 ноября 2008

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

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

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

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

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

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

14 голосов
/ 17 ноября 2008

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

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

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

3 голосов
/ 14 ноября 2008

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

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

1 голос
/ 14 ноября 2008

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

1 голос
/ 13 ноября 2008

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

...