Каковы преимущества создания небольшого веб-приложения Java для запуска в контейнере Servlet (например, Tomcat) против создания автономного приложения Java со встроенным веб-сервером и его запуска за обратным прокси?
Я играю с Java около года. Я заметил, что для запуска Tomcat требуется время, и не всегда можно выполнить hot-redeploy из-за проблем загрузчика классов. API-интерфейс Servlet кажется несколько запутанным для меня, особенно с точки зрения конфигурации и дизайна RESTful (который он действительно не поддерживает полностью).
С другой стороны, я заметил, что моя IDE может скомпилировать и запустить автономное приложение с молниеносной скоростью. Настройка Apache для обратного проксирования - это кусок пирога, а встроенный Jetty, похоже, обрабатывает все, что я могу на него наброситься. Мне не нужны сервлеты, когда я могу использовать Restlet, Wicket и т.д. Быть способным лучше знать, как работает мое приложение (потому что оно не интегрировано с огромным сервером приложений) чувствует себя наделенным полномочиями. Трассировка стека короче. Размер загрузки меньше. Конфигурация конечного пользователя проще. Я предполагаю, что производительность, вероятно, будет лучше, потому что задействовано меньше программных слоев.
Тем не менее, мне напомнили о том, что обычно звучит слишком хорошо, чтобы быть правдой. Поэтому мой вопрос: почему я не хочу делать автономные веб-приложения? Что контейнер сервлетов дает мне и/или моим конечным пользователям, которые нам действительно нужны, но не знают?