Nano Hash - криптовалюты, майнинг, программирование

Почему Jboss лучше Tomcat?

В настоящее время я начинаю разработку нового приложения. Архитектор приложения настаивает, чтобы мы использовали JBoss5, потому что он "лучше". У кого-нибудь есть более широкое определение «лучше» (если это так)?

У меня есть опыт использования Tomcat5 и 6 в крупномасштабных приложениях с большой нагрузкой пользователей, и он работает довольно хорошо (ИМХО). Оба будут работать на RedHat6 в идентичных аппаратных условиях (на случай, если реализация имеет значение).

заранее спасибо

09.09.2010

  • @Chepech: это субъективно, но я предполагаю, что его высказывание больше похоже на то, что оно сложнее, а значит, должно быть лучше :) Не могу предоставить вам никаких доказательств по этой теме, я уже перегружен всевозможными серверами приложений Java. .. Хотел бы я, чтобы был только один универсальный сервер Java-приложений... 09.09.2010
  • да, я сейчас использую JBoss, и когда они говорят лучше, они не говорят о качестве документации... вздох 09.09.2010
  • @ Майкл, я надеюсь, что этого НИКОГДА не произойдет. Представьте, если бы у нас было все, чтобы использовать WebShi^H^H^HSphere... 09.09.2010
  • @Pascal - Перестань, ты меня пугаешь. 8) Ты заставишь меня бежать в Python. 09.09.2010
  • @Pascal Thivent: я не хочу вступать в войну против чего бы то ни было, но разработчики C#, кажется, не против Visual Studio. Во всех программах есть ошибки, я считаю, что лучше, если мы будем иметь дело только с ошибками из одного источника :) (я помогаю людям с дефектами изо дня в день, эээ...) 09.09.2010
  • @ Майкл Я тоже не хотел начинать войну (и я действительно не хотел тебя обидеть, я не заметил, что ты из IBM), но я рад, что у меня есть выбор, даже если это усложняет ситуацию. (и качество среды выполнения, предлагаемой Microsoft, не является чем-то, что убедит меня в том, что закрытая универсальная среда — это лучшее, что мы можем получить). 09.09.2010
  • Вы пробовали спросить человека, который сказал, что так лучше, что он/она имел в виду? Я не получаю таких вопросов, почему люди боятся задавать другим вопросы и учиться, а вместо этого приходят в SO, чтобы спросить. Возможно, у человека была хорошо продуманная реакция, возможно, он идиот, мы не можем сказать. 09.09.2010
  • @matt: На самом деле я это сделал, вот что он ответил: Ну, Tomcat хорош для POC и мелких вещей, но JBoss предназначен для более крупных вещей ... что немного неудовлетворительно. 09.09.2010
  • @Чепеч, это даже не ответ! Это круговой ответ, как если бы я спросил вас, почему небо голубое? и ты сказал мне, потому что он синий. Это может быть просто мое мнение, но люди, которые не могут сформулировать почему свои заявления, как правило, не заслуживают большого внимания (или ответственности). 09.09.2010

Ответы:


1

Сказать, что какой-либо инструмент или фреймворк просто «лучше», нелепо. Это всегда зависит от ситуации, архитектуры и т. д. Вам не обязательно использовать молоток, чтобы забить винт.

Я написал JBoss в действии, поэтому мне явно нравится технология JBoss, но я буду первым, кто скажет, что JBoss может быть излишним во многих ситуациях. Например, для последних двух сайтов, которые я разработал, имело смысл создавать с помощью Grails и развертывать на автономном экземпляре Tomcat.

Немного несправедливо говорить, что все, что вы получаете при использовании JBoss, это EJB и JMS. JBoss предлагает множество услуг и функций, в том числе:

  • Контейнер сервлет/JSP
  • JNDI
  • EJB
  • JTA
  • кластеризация
  • кэширование
  • JMS
  • Источник данных/управление ресурсами
  • JMX-интеграция
  • поддержка OSGi
  • веб-сервисы
  • порталы
  • Веб-бины (шов)
  • Некоторые административные консоли
  • контейнер IoC
  • и т.п.

Что привлекает многих архитекторов в JBoss, так это его гибкость. Он использует архитектуру плагинов, которая позволяет добавлять и удалять сервисы. Как уже говорили другие, in использует Tomcat в качестве своего контейнера сервлетов, поэтому вы можете буквально сократить JBoss до того уровня, где он является практически просто сервером Tomcat. Какая польза от этого? Задел на будущее, если вы думаете, что собираетесь использовать другие функции JBoss.

Эти сервисы в JBoss поставляются предварительно интегрированными и стремятся обеспечить согласованную модель развертывания, которая сводит к минимуму ваши усилия по написанию логики приложения или конфигурации для их самостоятельной интеграции. При этом другие фреймворки, такие как Spring, также отлично справляются с поддержкой унифицированных способов интеграции многих популярных библиотек и фреймворков. Но поскольку они сосредоточены на интеграции сторонних библиотек, взаимодействие между службами зависит от вас. Поскольку JBoss занимается созданием сервисов и интеграционной платформы, они тратят время на разработку (и обеспечение поддержки) взаимодействия.

Некоторые вопросы, которые следует задать при выборе:

  • Are you going to use standard JavaEE architectural components like EJB?
    • BTW, EJB can be run in standalone Tomcat using the JBoss embedded container, so if EJB is all you're using, then you still don't have to use JBoss
  • Собираетесь ли вы использовать веб-сервисы, порталы, JMS?
  • Вы рассматриваете возможности создания с помощью Web Beans или Seam?
  • Какие платформы развертывания (Tomcat, JBoss и т. д.) в настоящее время использует ваш персонал по ИТ, поддержке и разработке? Если вы собираетесь использовать что-то новое, вы понесете дополнительные расходы на изучение новой платформы.
  • Если вы продаете продукт, который будут развертывать клиенты, какое влияние он окажет на ИТ-организацию клиентов.
  • Are you going to need paid support?
    • You can find support for Tomcat through many companies (including Red Hat I believe).
    • Вам нужно будет сравнить затраты, потому что я не думаю, что поддержка JBoss стоит дешево, хотя в последнее время я не смотрел цены.
  • Will you need to do any sophisticated clustering?
    • JBoss has some wonderful clustering capabilities, and you'll probably get good clustering support through Red Hat. Though, for full disclosure, I've never done any complex clustering with any other frameworks to be able to compare.
  • Вам понадобится расширенное управление транзакциями (распределенные транзакции, двухфазные коммиты и т. д.)

Не хочу, чтобы это звучало как бесстыдная затея, но первая глава JBoss в действии доступна для бесплатно на веб-сайте Manning. Хотя мы не проводим прямого сравнения между JBoss и другими серверами приложений и средами развертывания в этой главе, мы немного говорим об архитектурных различиях, что имеет отношение к вашему вопросу.

09.09.2010
  • Хороший ответ (и +1 от меня). Что касается кластеризации, не могли бы вы в нескольких словах описать некоторые очевидные преимущества использования JBoss по сравнению с Tomcat с mod_jk, mod_proxy или даже mod_cluster для приложения Servlet/JSP? Может быть, такие вещи, как кластеризация дерева JNDI или источника данных? Что-то еще очевидное? 09.09.2010
  • Кажется, это должно быть вопросом само по себе, но mod_jk и mod_proxy в основном используются для балансировки нагрузки, в которой экземпляры Tomcat не обязательно должны знать друг о друге. Я не использовал mod_cluster, поэтому мне придется исследовать. JBoss предлагает реплицированные кэши, кластеризацию JNDI, кластеризацию сеансовых компонентов, репликацию HTTP-сессий, репликацию кэша второго уровня JPA/Hibernate, сервис-одиночки (сервис работает только на одном сервере, но может выполнять отработку отказа) и несколько других вещей. 09.09.2010
  • Правильно, эти mod_xxx предназначены только для балансировки нагрузки, а это другое. На самом деле, поскольку Tomcat также поддерживает постоянные сеансы HTTP, мне было интересно, что может быть хорошим примером сложных функций кластеризации для веб-приложения (одним из них является JNDI). Но это должно быть действительно вопросом само по себе. В любом случае спасибо за ответ, он уже дал мне несколько хороших советов. 09.09.2010
  • +1 от меня тоже. Джавид, я не хотел унизить JBOSS, упомянув только EJB и JMS. Ваш (очень хороший) список дает понять, что это еще не все. Я просто был краток. 09.09.2010
  • Сказать, что какой-либо инструмент или фреймворк просто «лучше», нелепо. Я согласен на 100% с этим утверждением. Тем не менее, когда приходится выбирать между инструментами, всегда выбирайте молоток. Нет такой проблемы, которую нельзя было бы решить с помощью достаточно большого молотка. 08.08.2013
  • Но иногда в java, когда вы что-то используете, теперь у вас есть ProblemFactory. Если Hibernate — это большой молот, а JDBC меньше, то меньший молот должен быть лучше, если бы мне пришлось выбирать. Вероятность того, что ваше приложение заработает, выше. Вы всегда можете перейти в Hibernate позже, если вам это действительно нужно. 23.07.2019

  • 2

    В настоящее время я начинаю разработку нового приложения. Архитектор приложения настаивает, чтобы мы использовали JBoss5, потому что он «лучше». У кого-нибудь есть более широкое определение «лучше» (если это так)?

    Забавно, потому что JBOSS использует Tomcat в качестве своего сервлета/движка JSP.

    Звучит так, как будто «лучше» означает «поддерживает EJB и JMS», потому что Tomcat из коробки не имеет ни того, ни другого.

    Но это не проблема, если ваше приложение не использует EJB или JMS.

    И если они вам нужны, вы можете добавить их в Tomcat с помощью OpenEJB и RabbitMQ или ActiveMQ.

    Я бы спросил у вашей арки приложений, когда они в последний раз писали что-то помимо слайдов Power Point или документов UML. Ответ может вас удивить.

    09.09.2010
  • +1 за когда в последний раз они писали что-то помимо слайдов Power Point - настолько верно, что почти как будто вы работаете в моей организации :) 09.09.2010
  • К сожалению, это верно для слишком многих организаций. 09.09.2010
  • @duffymo: Чувак, я думаю, ты попал в точку с комментарием PPT, ты действительно сделал мой день =). Между прочим, мы не добавляем EJB или JMS. 09.09.2010
  • Так почему бы не принять ответ? Это хорошо для нас обоих. 09.09.2010
  • @duffymo: Извини, чувак, у меня есть склонность к длинным, подробным ответам, кроме того, что Джавид Джамае написал книгу... ты не можешь конкурировать с этим =) 15.09.2010
  • Иногда кратко лучше. Зависит от книги. 15.09.2010

  • 3

    JBoss — это сервер приложений, а Tomcat — Контейнер сервлетов

    Таким образом, JBoss может быть лучше, чем Tomcat, в том смысле, что он содержит его, а также другие компоненты. Вот и все.

    Если вы не собираетесь использовать эти другие компоненты, вы тратите ресурсы впустую. Если вам нужны эти другие компоненты, Tomcat недостаточно.

    Это зависит от того, возможно, ваш Архитектор имеет в виду что-то еще.

    Интересно, что бы он сказал, если бы вы спросили его напрямую?

    09.09.2010

    4

    Это не лучше, это просто больше. JBoss включает Tomcat.

    09.09.2010

    5

    Как указывает @duffymo, JBoss использует Tomcat для своего веб-контейнера, поэтому лучше не имеет большого смысла, если мы сравниваем эквивалентные вещи (например, Tomcat и часть веб-контейнера JBoss). И если вы не собираетесь использовать JTA, EJB, JMS, JMX и т. д., нет никаких реальных преимуществ в использовании JBoss, особенно во время разработки (Tomcat легче и запускается быстрее, это часто ценят команды разработчиков).

    Однако в некоторых случаях вы можете предпочесть JBoss для производства (я все еще предполагаю, что вы не используете EJB и т. д.):

    • Производственная группа обучена или используется для использования JBoss в производстве, инструменты (развертывание, мониторинг и т. д.) адаптированы для JBoss.
    • У компании есть контракт на поддержку JBoss (хотя вы также можете получить поддержку для Tomcat).

    Но я не уверен, что именно это имел в виду архитектор приложения. Я бы попробовал обсудить этот выбор с архитектором, может у него есть какое-то обоснование. И если действительно нужно использовать JBoss в производстве, вы всегда можете использовать Tomcat или Jetty во время разработки.

    09.09.2010

    6

    Если вы используете JBoss, вы можете заплатить Jboss.org за поддержку. Но это не в случае с Tomcat.

    Это правда, однако RedHat (купивший Jboss.org) потребует от вас перехода на одну из поддерживаемых версий JBoss.

    09.09.2010
  • Вы можете получить поддержку от SpringSource для их tc Server. 09.09.2010

  • 7

    JBoss совместим со спецификацией J2EE, он очень хорошо поддерживает спецификации J2EE, такие как EJB, JTA, JMS, JNDI и т. д. Tomcat — это только контейнер сервлетов, хотя он также поддерживает немного спецификации J2ee. Если вы хотите использовать компонент J2EE, вы должны сначала рассмотреть JBoss.

    Забыл, JBoss очень хорошо поддерживает JMX, особенно в версии 4.*. Я испытал проект, у него нет веб-интерфейса, JBoss используется просто как платформа, а контейнер EJB для интеграции всех автономных приложений на нем использует MBean.

    09.09.2010
  • Сервлеты и JSP являются частью спецификации Java EE. Tomcat может быть простым контейнером сервлетов, но он по-прежнему является допустимым подмножеством спецификации Java EE. Это эталонная реализация для всех механизмов сервлетов/JSP. А J2EE — это винтажная терминология 1998 года. Они уже давно отказались от 2. 09.09.2010
  • Да, вы правы, но я все равно привык называть его J2ee, потому что я старик :-) 09.09.2010
  • @duffymo Tomcat больше не является RI со времен Java EE 5, GlassFish — это RI для JSP/Servlet. 09.09.2010
  • @Паскаль - О! Спасибо за исправление. 09.09.2010
  • Ты для меня молодой олень, мой друг. У меня есть футболки старше тебя. 09.09.2010
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..