Чи використовуєте ви на сьогоднішній день JBoss або Glassfish (або інший) як сервер Java EE для нового проекту? [зачинено]


136

Якщо ви сьогодні розпочали новий проект Java EE, який повинен бути завершений приблизно через рік, який саме сервер додатків ви вибрали б і чому?

Частина вашої відповіді повинна містити ваші аргументи для вашого рішення. А також скільки досвіду ви маєте з обраним вами сервером Java EE та іншими доступними серверами на ринку. Вони цікаві, оскільки ми всі отримуємо розуміння розслідування та думки, що була укладена у вашу відповідь.

Відповіді:


181

Я використовував WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat та декілька інших протягом останніх 10+ років. Отже, якби я розглядав новий проект, я б спершу поставив собі кілька питань. Одне, що я б більше не сумнівався, це те, що я б відмовився від використання JSP, якщо мене не катували, поки я не плакала за мамою.

Чи повинен я бути сумісним / розгортатися до певного продукту через чийсь мандат? Чи немає способу їх ігнорувати чи переконувати в іншому? Якщо так, то є ваша відповідь.

Чи потрібно використовувати EJB? Дійсно? Уникайте їх, якщо це взагалі можливо - вони дійсно потрібні лише для дуже великих систем корпоративного класу. Пам’ятайте, що вони - просто інструменти та великі при цьому (чи може хтось сказати «Золотий кувалд»?). Вони сильно зловживають, тож справді, справді запитайте, чи потрібні вони вам. Якщо вони вам потрібні, то це видаляє кілька ваших варіантів, включаючи мій улюблений, Jetty.

Чи потрібно використовувати будь-яку з інших основних технологій J2EE, таких як JMS, ESB тощо? Якщо так, і вам справді не обійтися, ви знову обмежуєтесь повноцінним контейнером J2EE. Ретельно продумайте та розслідуйте, наприклад, перед тим, як взяти на себе BPM, наприклад, і уникайте AquaLogic BPM за (майже) усіх витрат - це некрасиво в крайності.

Якщо ви дійсно повинні використовувати повнорозмірний контейнер J2EE, спершу розгляньте відкритий код, оскільки він більш надійний, краще підтримується та економічно вигідніший. Вони мають більшу кількість клієнтських баз і більш відкриту взаємодію з підтримкою, тому вони, як правило, швидше отримують кращі виправлення. Однак Смола незріла, і я б уникнув її відносно GlassFish або JBoss - мені здалося, що розгортання та підтримка є проблематичним. Я вважаю за краще JBoss через його більш широку клієнтську базу, зрілість тощо. GlassFish важче включити в автоматизований процес збирання / розгортання, але це може бути приємніше для деяких його особливостей (якщо вони вам потрібні).

Чи є у мене особлива причина, щоб мені потрібен Apache? Тоді схиляйтесь до Томкату, можливо, плюс-небудь.

Чи можу я зайнятися лише сервлетами? Тоді я б застосував Jetty - це найлегше, найшвидше, найпростіше, гнучкіше рішення. Якщо я схиляюся до того, що я можу використовувати Jetty, я б поставив під сумнів усі свої припущення, чому. YAGNI застосовується.

Найкраще використовувати StringTemplate / WebStringTemplate на Jetty: чисте, надійне, швидке, бездоганне рішення без ліцензійних платежів, міцної репутації та підтримки тощо. Саме з цього я починаю сьогодні.

Більшість додатків / систем вибирають безліч вигадливих функцій J2EE, коли все, що їм справді потрібно, - сервлети та JDBC з пристойною архітектурою / дизайном. Питання, чому ви вважаєте, що вам потрібно більше.

З повнорозмірних контейнерів я б уникав WebLogic та WebSphere, якщо ви не підтримуєте ОСНОВНИЙ загальнодоступний веб-сайт (веб-сайт мого поточного роботодавця розміщений у WebLogic, і він отримує одинадцять + мільйон звернень на місяць, інші - порівнянні). Справжня претензія на популярність WebLogic - це їх порівняно проста кластеризація, але уникайте їхніх власних функцій блокування постачальників за (майже) усіма цінами. WebSphere - це просто кошмар, якого я б уникнув буквально за будь-яку ціну - я відмовляюся робити проекти, пов’язані з WebSphere після того, як робив пару в минулому. Жоден продукт не вартує великих ліцензійних платежів, якщо ви справді не маєте особливої ​​потреби, яка спричиняє використання власної функції. За десятиліття, будучи старшим архітектором / інженером для багатьох компаній Fortune 500, я ще не бачив такої потреби. З іншої сторони,

Навіть для справді великого, великого трафіку, загальнодоступних веб-сайтів, власні продукти залишаються сумнівними. Я вважаю за краще витратити ці мільйонні долари на рік ліцензійних платежів на гарне обладнання та певний якісний час від кількох дійсно хороших консультантів для вирішення простого рішення щодо масштабування. Зайві мільйони на рік можуть бути використані для створення чогось гідного продажу на цьому приємному веб-сайті ...

РЕДАКТУВАННЯ: ще одна деталь, яку слід розглянути ...

Я нещодавно стикався з теракотою . Я все переосмислюю, і скоро хочу розгорнути це у значній системі. Зокрема, Terracotta робить кластеризацію краще, ніж будь-що інше, тому я б НІКОЛИШЕ не рекомендував WebLogic для його кластеризації.


7
Для подальшого ознайомлення зазвичай можна знайти визначення абревіатур за допомогою пошуку в Google або Вікіпедії. YAGNI = Вам це не потрібно = не перестарайтеся із своїм дизайном JMS = Java Message Service ESB = Enterprise Service Bus BPM = Управління бізнес-процесами
Роб Вільямс

21
Ваші коментарі щодо Java EE та EJB трохи застаріли. J2EE ?! Це було як 5 років тому. Погляньте на Java EE 6 та модернізуйте свою перспективу!
Брайан Литом

6
@Brian: Я погоджуюся з Брайаном, особливо з EJBLite, він став набагато легшою вагою.
Thang Pham

7
@Brian, подивіться на пост - це було написано за три роки до вашого коментаря. І все одно я б сказав, що Весна легша, ніж навіть зменшена Java EE.
duffymo

2
Який вирок зараз у 2012 році? Чи стає JBoss 7 AS королем над Glassfish у царині Java 6 EE? Або навпаки?
Роландо

10

Термін "сервер додатків" неоднозначний. За допомогою GlassFish v3 ви можете почати з невеликого, скажімо, традиційного веб-контейнера і розвиватися (використовуючи OSGi та простий функціонал "додати контейнер"), щоб додати все, що завгодно: JPA, JAX-RS, EJB, JTA, JMS, ESB і т. д. Але все-таки це той самий продукт, той самий адміністраторський інтерфейс тощо. Чи кваліфікується це як сервер додатків для вас? -Алексис (НД)


1
На жаль Glassfish вже не є офіційним продуктом, але "лише" еталонною реалізацією.
Thorbjørn Ravn Andersen

9

Перше запитання, яке я зазвичай задаю собі, - це "чи можу я це зробити з Tomcat?". Якщо відповідь "ні", тому що мені потрібен JMS або JTA, я вдаюсь до сервера додатків.

Я використовував WebLogic 8 близько 3 років тому, задоволений простотою використання WebLogic та моделлю ліцензування / вартості. Ми використовували його для двох проектів, один - веб-сервіс, а другий - портал. У жодному з цих проектів у нас не виникло жодних проблем з WebLogic або WebLogic Portal.

Останні два роки я працював з WebSphere. Кожен раз, коли я домовлявся з IBM, це завжди доходило вдвічі дорожче, ніж еквівалент WebLogic, але потрібно було використовувати корпоративну політику, продиктовану WebSphere. Я виявив, що крива навчання на WebSphere значно крутіша за WebLogic, і наш життєвий цикл побудови / розгортання / тестування був настільки трудомістким, що ми використовували Tomcat в середовищі розробки. Але найбільша проблема, з якою у мене виник WebSphere, була, коли ми зіткнулися з помилкою, яка змусила нас перейти до наступного випуску виправлення лише для запуску нового розбору проблеми web.xml. Щоб пройти все це знадобилося 48-годинну зміну.

На даний момент, хоча я використовую JBoss. Близько 3 місяців тому я збирався розпочати свій новий проект із Tomcat та Jetspeed 2, але я помітив, що Jetspeed 2 зараз трохи застійний, і JBoss Portal 2.7.0 щойно вийшов з підтримкою JSR 286 / Portlet 2.0. Я дав JBoss спінінг і мені було дуже просто налаштувати та адмініструвати. Цикл складання / розгортання / тестування дуже швидкий, і мені рідко доводиться перезавантажувати сервер, якщо я десь не змінив файл Spring XML.


Гарна відповідь! Ви пробували Jetty? А яка ваша думка щодо цього у випадку, якщо у вас є?

7

Я використовую jBoss 3-4 роки.

Аргументи для jBoss:

  1. Відкрите джерело.
  2. Комерційна підтримка доступна.
  3. Велика, активна спільнота користувачів.

Аргументи проти jBoss:

  1. Немає загального доступу, підтримується випуск контейнера Java EE 5.
  2. Багато документації, але багатослівний; може бути важко знайти відповіді на тему "Як зробити х?"
  3. Адміністративні засоби для 4.x поганого порівняно з іншими комерційними пропозиціями.

"Немає загального доступу, підтримується випуск контейнера JEE 5." Я думаю, це вже не так, правильно?
Raedwald

@Raedwald: так, тепер, коли JEE 6 вже довгий час ;-)
ymajoros

4

Оформити замовлення GlassFish 3.1! Побудований поверх модульного ядра GlassFish v3 на базі Java EE 6, версія 3.1 забезпечує кластеризацію, централізоване адміністрування та високу доступність.

Докладнішу інформацію див. На http://blogs.oracle.com/nazrul/entry/glassfish_3_1 .


3

Ще один момент, про який тут не йшлося, - це ефективність. Якщо це викликає занепокоєння через тип послуги або через кількість користувачів, застосовується наступне:

  • Томкат, здається, повільніше, ніж Склянка
  • Скляна рибка, здається, повільніше, ніж Смола
  • Смола набагато повільніше, ніж G-WAN + Java

Зауважте, що G-WAN покладається тільки на JVM: він не використовує жодних додаткових контейнерів (якщо прямо не вказано), тому ви можете зарезервувати його для критично важливих для вашого веб-додатків частин.

Оскільки G-WAN підтримує інші мови (C, C ++, C #, D, Objective-C), ви навіть можете обробляти деякі частини програм у сирому C, зберігаючи Java для інших завдань.


2

Я можу включити вашу кращу ОС як критерій рішення. Це має полегшити підтримку, якщо ви використовуєте одного постачальника для ОС та сервера додатків. Якщо у вас вже є стосунки з одним або обома постачальниками, подумайте, чи добре їм мати справу.

З технічної точки зору я вибрав би GlassFish, оскільки він підтримує новітні інновації. Я не думаю, що JBoss в будь-якому випадку поганий, він просто не є сучасним.

Більшість мого досвіду є на WebLogic, але я використовував JBoss та GlassFish. Я щойно випустив новий сайт у повному стеку з відкритим кодом Sun (OpenSolaris, GlassFish, MySQL), і це був чудовий досвід із незначними розладами.


ОС насправді не є проблемою, якщо ви не маєте дуже специфічних бінарних залежностей (що не повинно бути у більшості проектів Java). Ми розробляємо вікна, 32 та 64 біти та розміщуємо на Glassfish на Solaris. Більшість розробників насправді не знають і не повинні їх дбати. Користувачі цього не бачать (більшість наших розробок - це веб-додатки).
ymajoros

2

Я все ще думаю, що WebLogic - найкращий сервер додатків Java EE на ринку. Я думаю, що це варто, якщо ви можете дозволити собі ці ліцензійні внески.

Я здивований, побачивши, як далеко ви можете піти, комбінуючи Tomcat, OpenEJB та ActiveMQ. Мені це здасться недорогою альтернативою.

Я також заглянув у Spring dm Server. Він заснований на Tomcat, але я думаю, що фрагмент OSGi, який вони додали, може бути повсюдно за короткий час. Якщо це буде зроблено з тією ж якістю, що і весняні рамки, це буде дуже добре.


2
Проблема, яку я маю з WebLogic, полягає в блокуванні постачальника, це жахлива таблетка, ковтати яку вам не потрібно!
Маній

1
Це справедливо для всіх постачальників Java EE, про яких я знаю, не лише WebLogic. Якщо ви використовуєте будь-які функції, що стосуються постачальника, ви заблоковані. Потрібно коли-небудь написати код.
duffymo

3
WebLogic є комерційним - саме це я і отримую, - коли ви пишете великий чек, ви "заблоковані" в більшій мірі, ніж у вас з альтернативою з відкритим кодом. Очевидно, якщо ви дбаєте про незалежність платформи, ви б не використовували конкретні функції постачальника, тому це не те, про що я маю на увазі. Насправді опитування, яке я прочитав, колись сказав, що розробники вважають, що замок від постачальника в уникненні є перевагою №1 з відкритим кодом (не вартість).
Маній

Повна дурниця? Чи вірите ви, що підписання багатомільйонного контракту з продавцем не заблокує вас? Ось ваш доказ.
duffymo

@ymajoros Ви мали на увазі, що "не повинен" заблокувати постачальника? Чесно кажучи, я не можу мати сенс у вашому коментарі.
Патрік М

1

Альтернатива: взагалі не використовувати жодного додатка.

Перевіряти http://www.atomikos.com/Publications/J2eeWithoutApplicationServer .

Для веб-проектів зберігайте легкий веб-контейнер, якщо вам доведеться поєднати його як-то на зразок калитки, щоб уникнути складності JSP / JSF або стійок.

HTH Хлопець


Якщо ви не хочете вчитися за допомогою інструментів, не використовуйте жодних. Або спробуйте стати кваліфікованим професіоналом та інвестувати у своє оточення, ви отримаєте нагороду. Потрібно визнати, що я робив це для деяких проектів. Ті ж проекти не розвивалися жодним додатком, на власному клієнт-сервері навесні, до чистого Java EE та Glassfish. Ніколи не хотів би повертатися назад, перше рішення насправді було занадто складним, воно настільки ж просто, як і сьогодні (і стандартне, може розгортатися на будь-якому сервері додатків Java EE без особливих змін).
ymajoros

хороша відповідь, поганий спосіб отримати документ
msangel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.