Как вы используете Groovy в своем Java проекте?

Groovy я пока что знаю плохо, поэтому, на самом деле, у меня два вопроса:


1. Хотел бы услышать об опыте использования Groovy как части Вашего Java приложения. Возможно это только доменные объекты, или бизнес логика, возможно — и то и другое. В частности интересует, можно ли использовать Groovy для всего проекта или только для тех частей, которые не могут сильно повлиять на производительность?


2. На первый вопрос меня натолкнул следующий тест: я реализовал простейший рекурсивный алгоритм вычисления чисел Фибоначчи на Java и на Groovy и замерил время его работы.


Код:

class Groovy {

	def fibonacci(n) {
		
		if (n < 2) return n
		
		return fibonacci(n - 1) + fibonacci(n - 2) 
	}
	
}


public class Java {

	public int fibonacci(int n) {
		
		if (n < 2) return n;

		return fibonacci(n - 1) + fibonacci(n - 2);
	}
	
}



Я ожидал примерно одинакового времени выполнения, но на практике получил следующее:

для n = 40<br/>
<br/>
Java: 0.481 сек.<br/>
Groovy: 6.992 сек.<br/>


Чем объясняется такой отрыв?
  • Вопрос задан
  • 6032 просмотра
Пригласить эксперта
Ответы на вопрос 9
Snowindy
@Snowindy
Используем для скриптов валидации выходных данных системы. Тест-кейсы и валидирующие скрипты пишутся тестировщиками.
Все пути к скриптам валидации настроены через БД, так что команда разработчиков не сильно вмешивается в автотесты.

Также тестировщики пишут код для SoapUI-моков, там также используется Groovy.
Ответ написан
Snowindy
@Snowindy
В другом проекте серьезно используем Groovy скрипты внутри docx-документа для формирования договоров в формате docx.
Я даже специально написал библиотеку в общем доступе. snowindy.github.com/scriptlet4docx

Ну и конечно Grails-сайты.
Ответ написан
Комментировать
javax
@javax
Software Architect, Java Developer since 1996
1. Для написания юнит тестов
2. Для скриптов, которым нужны явовские библиотеки (например — запуск нашего сервера)
Ответ написан
Комментировать
ivnik
@ivnik
Какую версию jvm использовали? Попробуйте 1.7, там появился invoke dynamic который должен ускорить работу groovy скриптов (а также используйте последнюю версию groovy).
А вообще код на груви врядли будет работать так же быстро как код java, если он будет работать раза в 2 медленнее уже хорошо.
Ответ написан
dbmaster
@dbmaster
Используем чтобы вынести бизнес логику которая может меняться пользователем
Используем для плагинов dbmaster.org/plugins
Ответ написан
Комментировать
sha1dy
@sha1dy
* DSL для скриптования бизнес логики приложения (Java/Scala)
* Build и deploy скрипты (gradle)
* Acceptance test'ы которые пишут QA

Приложение лучше писать IMHO на Scala, если Java не устраивает. А если хочется попробывать динамический язык, то лучше Ruby, с которого Groovy скопировал множество фич (но выглядит гораздо хуже, чем в Ruby)
Ответ написан
Комментировать
@SmoggIT
Мы только начинаем использовать
— Тесты, логика для тестов
— Скрипты
— DSL
— По мелочи, например пробуем Gradle
Ответ написан
Комментировать
monzdrpower
@monzdrpower
Начал с простых regexp, работа с xml, тесты. Дальше пошли полноценные сервисы, утилиты импорта и проч.
Сейчас груви-код уже составляет бОльшую часть приложения, весь новый фунгкционал пишем на груви, в джаве все так неудобно :)
У нас система документооборота, поэтому скорость работы не критична.

Моя статейка на тему интеграции
habrahabr.ru/post/145158/
Ответ написан
Комментировать
@AnyKey80lvl
Все наши проекты для нужд системной интеграции пишем на groovy, используем grails.
Довольны, как слоны.
Редкие мелкие части пишем на Java для увеличения быстродействия, хотя и скорости Groovy хватает нам за глаза.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы