Вопрос

Зачем мне использовать 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.Но после небольшого использования Groovy определенно почувствовал себя лучше.

Это было полезно?

Решение

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

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

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

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

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

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

Другие советы

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top