Я використовував 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 для його кластеризації.