Преимущества использования JSTL vs Velocity для уровня просмотра в приложении MVC?

В настоящее время я создаю приложение Spring MVC. Я искал использовать страницы JSP с библиотеками тегов для обработки уровня представления и форматирования HTML, но я столкнулся с другой группой в моей компании, которая использует шаблоны Velocity для той же цели.

Из того, что я вижу, мне кажется, что между двумя подходами есть много сходства:

  • Оба имеют простой в понимании синтаксис. Это облегчает понимание и использование не-разработчиками, что позволяет дизайнерам сосредоточиться на HTML/CSS и только использовать библиотеки директив/тегов в тех немногих случаях, когда им нужны условные выражения/динамический контент, не имея полного понимания Ява.
  • Простая информация о том, какая часть содержимого - HTML, а какие - директивы/логика.
  • Оба они сильно используются и хорошо поддерживаются.
  • Простая интеграция с Spring MVC.

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

Итак, мой вопрос: каковы плюсы и минусы каждого, на ваш взгляд? Если вы создали приложение (Spring) MVC с помощью одного или другого, что заставило вас выбрать технологию уровня представления, которую вы используете, и что (если что-либо) заставили вас принять решение против другого?

Обновление. Я нашел аналогичное обсуждение этой же темы, заархивированной на форуме Spring Framework здесь, что может представлять интерес для тех, кто принимает такое же решение между JSTL и Velocity, как и я.

Ответ 1

Я бы предпочел использовать Velocity только потому, что использование JSP + JSTL может позволить ленивым /sloppy разработчикам попасть в неприятности, добавив скрипты. Не должно быть причин иметь Java-код в вашем уровне представления. Это не займет много времени, чтобы понять скорость, и на самом деле я просто взял ее примерно за две недели. Хотя мне не нравится форматирование вывода, по большей части он работает очень хорошо. Мы фактически не используем его в уровне представления приложений, а скорее для создания HTML для использования другими браузерами. Мы сохраняем вывод из Velocity в виде файлов, которые затем развертываются на другом сервере для использования другими веб-клиентами.

Ответ 2

Я немного предпочитаю Freemarker для Velocity, на всякий случай, если вы открыты для изучения других вариантов. Сравнение здесь:

http://freemarker.org/fmVsVel.html

Я согласен с утверждениями Бена об обеспечении простого представления, избегая JSP и возможности сценариев. Мне также нравится возможность создавать шаблон Freemarker или Velocity в любой среде исполнения (метод JUnit, main()), не требуя контейнера Servlet/JSP в качестве JSP.

Ответ 3

JSP также более сложно визуально отличать от встроенного HTML. С Velocity это очень очевидно.

Кроме того, пакет VelocityTools предоставляет большую функциональность.