Подтвердить что ты не робот

Зачем выбирать tomcat через сервер приложений, совместимый с Java?

Серверы приложений Java EE предоставляют все функции tomcat, поэтому зачем использовать tomcat (вместо стеклянной рыбы, например, как официальную)?

В особенности, когда нужны функции Java EE, такие как JPA, JAX-RS, JSF и, следовательно, больше всего пакетов необходимо упаковывать вместе с приложением, а сервер приложений, совместимый с EE, предоставил бы это из коробки?

4b9b3361

Ответ 1

Вопрос, который был в нашем уме и вся причина, по которой мы создали TomEE, были, почему люди должны выбирать?

Вся вещь "Tomcat или JavaEE" устала и устарела.

Через 10 лет он все еще появляется, и люди спорят друг с другом о том, что лучше и почему.

Здесь математика в короткой форме:

  • В Java EE 6 мы (JCP) создали веб-профиль, чтобы официально признать необходимость в меньших затратах времени с целенаправленным набором технологий.

Отлично, мы на полпути, но люди все еще спорят "Tomcat или JavaEE". Решение было ясно, Tomcat должен быть сертифицирован Java EE. Веб-профиль был создан для обеспечения именно этого.

  • В 2011 году мы (Apache) начали работу над сертификацией Apache Tomcat. Сертификация была достигнута и объявлена ​​на JavaOne 2011 как Apache TomEE. Окончательный выпуск объявлен в апреле.

Удивительно, теперь мы там.

Новое Status Quo

  • Существует более легкая версия JavaEE
  • Существует сертифицированная JavaEE версия Tomcat

Все это произошло за последние 2 года. Все изменилось.

Если вы хотите Tomcat и JavaEE, вы можете получить его.

Ответ 2

Редко, если когда-либо люди используют простой Tomcat. Они всегда добавляют тонны дополнительных материалов, таких как webframework, некоторые orm, некоторые рамки DI и т.д. И т.д.

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

Современные реализации Java EE 6 очень легкие (TomEE и Resin - всего 25 МБ) и содержат все, что вам нужно (сеть, постоянство, DI). Так называемый веб-профиль не содержит каких-либо материалов, которые вам редко нужны. Современные серверы Java EE 6 запускаются через секунду или два, что находится в той же лиге, что и голой Tomcat, но на самом деле они предлагают инструменты, которые вам нужны на ежедневной основе.

Ответ 3

Большинство серверов приложений Java EE являются громоздкими, поставляются с множеством функций, которые не нужны, и имеют очень медленный цикл разработки/тестирования (просто проверьте отчеты о производительности повстанцев java). Если вам действительно нужны некоторые функции Java EE, вы должны его использовать, но в большинстве случаев вы можете иметь одни и те же базовые функции (контейнер сервлетов, по существу, вы можете поместить большинство технологий Java EE поверх кота, например, легкий контейнер ejb и т.д.) с tomcat или любым другим легким контейнером сервлетов.

Также учтите, что вы можете использовать JPA, JSF, JAX-RS вне сервера приложений.

TL; DR: Серверы приложений Java EE, по-видимому, медленны, не перезагружают классы "на лету" и не активируют очень раздражающий код/​​развертывание/цикл тестирования (думаю, от 20 секунд до 8 минут, чтобы проверить некоторые изменения в вашем Java-коде). Большинство людей просто нуждаются в основных функциях (контейнер сервлетов по существу).

Вот отчет о повторном развертывании с 2011 года: http://zeroturnaround.com/java-ee-productivity-report-2011/#redeploy_times

Ответ 4

Как объяснялось выше @Miguel Ping, серверы приложений содержат функции, которые разработчикам не нужны.
Например, многим разработчикам не нужен код для обмена сообщениями, поэтому им не нужны JMS-банки.
Другие разработчики могут не нуждаться в кластеризации, поэтому им не нужен код кластеризации и т.д.
Поскольку сегодня большинство пользовательских интерфейсов ориентировано на Интернет, контейнер Servlet, который должен предоставляться серверами приложений, становится все более важным компонентом, поэтому многие разработчики решают использовать ТОЛЬКО контейнер Servlet (i.e - tomcat).
В этом случае многие разработчики используют фреймворк Spring, чтобы обеспечить замену функциональности, которую они имеют с простой Java EE (или интегрироваться с Java EE - Spring, могут также выполняться поверх сервера приложений).
Spring -core - это легкое программное обеспечение и в основном содержит контейнер Depdency Injection/Inversion-Of-Control (заменив контейнер EJB на Java EE).
Вы можете добавить другие модули из рамки Spring, чтобы предоставить больше возможностей вашему приложению., Тогда как на многих серверах приложений (EJB 3.0 и ниже) сервер приложений загружает весь стек, а это также влияет на время ожидания сервера приложений ( и это довольно раздражает для разработчиков, из личного опыта).

Сказав это, EJB 3.1 содержит теперь профили, например, веб-профиль, который загружает меньшее количество деталей из спецификации Java EE. Кроме того, Jboss представил в JBoss AS 7 механизм параллельного развертывания, который анализирует зависимости внутри приложения и выполняет параллельное развертывание независимых компонентов.
Например, в oVirt проекте с открытым исходным кодом мы сократили время запуска с более чем 1 минуты при простом развертывании среды virutalization на что-то вроде 3 секунды.
Я понятия не имею, существует ли такой механизм на других серверах приложений EJB 3.1, как уже упоминалось ранее, вы можете легко определить профили или использовать уже существующие профили, такие как веб-профиль (EJB lite), чтобы сократить время начала


Заключить, В прошлом люди использовали tomcat в основном для сокращения времени начала и уменьшения количества загружаемых модулей.
Spring представляет модульную альтернативу разработке Java EE и может использоваться с tomcat.
. Сегодня, с EJB 3.1, Java EE также рекламирует модуляцию, и есть серверы приложений, такие как JBoss AS 7, которые сокращают время запуска до нескольких секунд из-за всех видов оптимизации, сделанных во время развертывания.

Ответ 5

Tomcat - хорошо написанный легкий контейнер сервлетов, который делает все необходимое для большого количества веб-приложений JVM. Он хорошо работает в качестве веб-сервера, напрямую говорящего в браузере. Для многих людей Java EE имеет слишком много материала, более чем необходимо для создания стабильных полезных приложений. Этот тип человека ищет инструменты, которые имеют меньше, не более и стабилизируют хорошо написанный код выше. Мир выбора программного обеспечения - это рынок, и Tomcat очень хорошо обслуживает часть этого рынка. Как и на любом рынке, вам нужно взглянуть на альтернативы и выбрать то, что соответствует вашим потребностям. Tomcat - одна из многих альтернатив.

В этой статье есть интересная точка зрения Tomcat http://www.people.hbs.edu/cbaldwin/DR2/LaMantia-Cai-MacCormack-Rusnak%20WICSA2008.pdf о матрицах структуры проекта. Они сравнивают его с неназванным конкурентом и находят его хорошо продуманным. Если вы заинтересованы в анализе собственного кода, единственная реализация DSM, которую я знаю, является выпуском IntelliJ Enterprise, но они дают вам бесплатную пробную версию на несколько недель.

Лично я считаю, что простота - это достоинство в программном обеспечении поддержки, а контейнер сервлетов - это программное обеспечение поддержки, а не часть вашего приложения.

Ответ 6

В большинстве случаев решения о выборе сервера приложений (Tomcat против AS, такие как JBoss) будут производиться в соответствии с опытом и знаниями команды администрирования/разработки в небольших ИТ-отделах, а IMO - политической, чем технической. Более того, проекты, которые наиболее распространены на tomcat, часто представляют собой веб-приложения с небольшими интеграционными концепциями и сложностью. Для таких проектов часто используются легкие контейнеры и фреймворки (Spring, Struts). Но если проекты становятся сложными и более распределенными, такие атрибуты, как масштабируемость, "мониторинг", высокая доступность (например, @HASingletons of JBoss) и т.д. приходят на место. И это может быть очень болезненным, чтобы оснастить ваш простой tomcat сторонними фреймворками, чтобы получить все возможности AS ', и чаще всего у вас будет вызов, чтобы запустить все это вместе.

Ответ 7

Они думают, что они предпочитают быть легкими, но в конце концов их приложения будут намного тяжелее, чем они будут использовать веб-профиль Java EE. Если они выбирают spring, их развертывание, вероятно, будет очень большим при более медленном времени сборки и запуска сервера. Производительность разработчика снижается... Если вы хотите, чтобы ваше приложение было таким простым и легким, как это может быть, выберите сервер Java EE, который поддерживает веб-профиль.