Сравниваем JRuby и Groovy

Сравниваем JRuby и Groovy

... применительно к веб-приложениям. В последнее время все пытаюсь перейти с php на что-нибудь более agile... Причем, испытывая сильное тяготение к java. Потому что saxon и потому что lucene . Поскольку сама по себе java к гибкости имеет весьма далекое отношение, выбирал надстройки над ней.

Groovy во многом приятен. Разработан специально для java-девелоперов, которые устали от нее. Облегченный синтаксис, ruby-подобные блоки кода и связь с нативными java-классами обеспечивают неплохой задел. Классы groovy можно скомпилировать в java-байткод и использовать в этом виде. В groovy входит пакет для организации работы сервлетов. Его-то я и использовал.

Jruby — фактически полный интерперетатор Ruby на jvm. Со всеми вытекающими последствиями. Разработка его ведется в последнее время сверхактивно. Штука достаточно перспективная. Есть java-класс, унаследованный от Servlet, который запускает Ruby-код. К сожалению, тот, что я использовал, был написан применительно к версии 0.9.2 JRuby, которая уже устарела.

Я ожидал от экспериментов с этими языками производительности. Ибо веб без производительности бессмысленен. Брал Jmeter, 50 бешеных конкурирующих пользователей и проводил тесты. Первый заключался в выводе просто текста. просто hello world на экран. второй тоже выгонял текст, но примерно 70 килобайт объема. Все это — на свежененастроенном томкате.

Вкратце, итоги:

Нелловорлд проходит на ура. 360 страниц в секунду показали оба языка. Ну о чем тут разговор, это фактически выполнение java-сервлета. C большим текстом сложнее. Jruby сбросил до 5 страниц в секунду и отъел кучу памяти. Groovy тоже отъел памяти, но выдал 60 в секунду. спустя 5 минут стали появляться висящие более чем 60 секунд запросы. Впрочем, он отдал все странички.

Итого — грустно. В качестве сервлетов эти языки малопригодны. С груви вообще что-то странное. при выводе совершенно необъяснимым образом страдают UTF-8 строки. такое чувство, что где-то в своих внутренних механизмах он производит конвертирование в ascii и потом обратно.

Сам процесс создания веб-приложений понравился. Так что жду от разработчиков движения вперед, эксперименты продолжаю с надеждой на улучшение ситуации.

Комментарии (2)

mem: 1161 total: 11 module: 5 xsl: 3