Java, используя Groovy (Grails) во время разработки только для того, чтобы иметь возможность тестировать код без перекомпиляции?

Я занимаюсь веб-разработкой на Java с использованием Spring MVC, и в основном я вынужден заниматься разработкой по методу Agile, где мне приходится вносить множество небольших изменений, и иногда я трачу много времени на компиляцию каждый раз, когда я делаю изменение ( я работаю в начинающей компании, и мне не дается достаточно времени для проведения модульных тестов и т. д., это не идеально, и я не обязательно планирую оставаться в компании в долгосрочной перспективе, но я просто ищу способы чтобы быть более адаптируемым на данный момент).

Приложение, над которым я работаю, должно быть быстрым и обрабатывать большие объемы данных (своего рода поисковая система, но не веб-поисковая система), поэтому для производственного приложения это должна быть обычная скомпилированная Java, но я Мне интересно, использовал ли я Groovy с Grails или что-то подобное для разработки, если бы я мог просто написать его как обычную Java, а затем протестировать код в реальном времени без перекомпиляции. Мне интересно, сколько усилий потребуется для этого, чтобы заставить его работать, а затем скомпилировать Java. Извините, если это вопрос новичка, я просто не уверен, где искать информацию об этом, поскольку большинство вещей о Grails кажутся более ориентированными на эмуляцию языков сценариев, а не на то, для чего я пытаюсь его использовать.


person Rick    schedule 31.03.2011    source источник
comment
Интересно, почему это помечено как scala   -  person Kevin Wright    schedule 31.03.2011
comment
У меня нет достаточно времени, чтобы сделать модульные тесты... Итак, у вас нет времени, чтобы сделать это правильно, но у вас есть время, чтобы делать это снова и снова? Модульное тестирование не требует времени, оно экономит время.   -  person RHSeeger    schedule 31.03.2011


Ответы (2)


Гибкость — это состояние ума, оно не имеет ничего общего с языком программирования или фреймворком. У меня никогда не бывает достаточно времени, чтобы НЕ проводить модульные тесты.

Если вы программируете на Java, кодируйте на Java, а не на Groovy. Groovy — это (почти) надмножество Java, поэтому теоретически вы можете написать свои классы на Groovy, а затем скомпилировать их как Java, но у этого подхода есть ряд проблем:

1) В вашем коде очень легко подсунуть что-то, что не соответствует Java, замыкания просто НАСТОЛЬКО полезны :-) 2) Grails нелегко перевести на Spring MVC, поэтому вам также придется переписать этот бит.

Так что лично я бы не стал использовать Groovy/Grails.

Когда вы говорите компилировать, вы действительно имеете в виду сборку войны и повторное развертывание? Большинство IDE (Eclipse, Intellij и т. д.) перекомпилируют класс при сохранении файла, поэтому задержки нет. Предполагая, что вы используете такую ​​IDE, вы можете запустить свой (Tomcat) сервер из Eclipse, и все будет автоматически перераспределено, и, если необходимо, Tomcat перезапустится автоматически.

Если это все еще недостаточно быстро, я рекомендую JRebel, который был настолько хорош, что я раскошелился на настоящий деньги за лицензию. Использование JRebel означает, что вам (обычно) даже не нужно повторно развертывать. Вы изменяете файл Java в среде IDE, и изменение происходит на вашем сервере без повторного развертывания. Я очень рекомендую это.

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

person Matthew Farwell    schedule 31.03.2011
comment
Ну да, я знаю об автоматической перекомпиляции, на самом деле я столкнулся с некоторой проблемой, когда она не работает должным образом, но это не так уж важно, поскольку у меня есть сценарий, который я написал, который перекомпилирует, а затем перезапускает сервер для меня, но мой способ приложение занимает добрую минуту, по крайней мере, для перекомпиляции, а затем перезапуска, и иногда это может сказаться, но да, я согласен, что модульные тесты были бы хороши, я думаю, что сейчас я нахожусь в той точке, когда я не могу позволить себе тратить в любое время изучать модульное тестирование, так как я не делал этого в прошлом - person Rick; 31.03.2011
comment
также спасибо за информацию о JRebel, я собираюсь изучить это - person Rick; 31.03.2011
comment
Также вы можете запустить tomcat из eclipse в режиме отладки, поэтому многие изменения в коде могут быть заменены без необходимости повторного развертывания. - person gerferra; 02.04.2011

Что бы я сделал здесь, так это встроил бы groovy-скрипты в java-код, как описано здесь:

http://groovy.codehaus.org/Embedding+Groovy

Таким образом, вы можете изменить свой код groovy без необходимости повторной компиляции. Мы использовали эту технику в нашем последнем устаревшем приложении, перекомпиляция и установка которого заняла 10-15 минут.

Groovy запускается внутри JVM и динамически компилируется в байт-код, так что не нужно беспокоиться о его «производственности».

person bwobbones    schedule 31.03.2011