He usado WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat y algunos otros en los últimos 10 años. Entonces, si estuviera considerando un nuevo proyecto, primero me haría algunas preguntas. Una cosa que ya no cuestionaría es que me negaría rotundamente a usar JSP a menos que fuera torturado hasta que llore por mi mami.
¿Tengo que ser compatible / implementar en un producto específico debido al mandato de alguien? ¿No hay forma de ignorarlos o convencerlos de lo contrario? Si es así, ahí está tu respuesta.
¿Tengo que usar EJBs? De Verdad? Si es posible, evítelos; en realidad, solo son necesarios para sistemas muy grandes de clase empresarial. Recuerde que son simplemente herramientas, y grandes en eso (¿alguien puede decir "Golden Sledgehammer"?). Están muy sobreutilizados, por lo que realmente se preguntan si los necesita. Si los necesita, eso elimina varias de sus opciones, incluido mi favorito, Jetty.
¿Tiene que usar alguna de las otras tecnologías J2EE importantes como JMS, ESB, etc.? Si es así, y realmente no puede prescindir, entonces nuevamente está limitado a un contenedor J2EE completo. Piense e investigue cuidadosamente antes de comprometerse con BPM, por ejemplo, y evite AquaLogic BPM a (casi) todos los costos; es extremadamente feo.
Si realmente debe usar un contenedor J2EE completo, considere primero el código abierto porque es más robusto, mejor soportado y más rentable. Tienen bases de clientes más grandes y una interacción de soporte más abierta, por lo que tienden a obtener mejores soluciones más rápido. Sin embargo, Resin es inmadura y la evitaría en relación con GlassFish o JBoss: me pareció problemático implementarla y brindar soporte. Preferiría JBoss debido a su base de clientes más amplia, madurez, etc. GlassFish es más difícil de incorporar en un proceso automatizado de construcción / implementación, pero podría ser mejor para algunas de sus características específicas (si las necesita).
¿Tengo una razón especial para necesitar Apache? Luego inclínate hacia Tomcat, quizás más algo.
¿Puedo conformarme solo con servlets? Entonces usaría Jetty: es la solución más ligera, rápida, fácil y flexible. Si me inclino a no poder usar Jetty, cuestionaría todas mis suposiciones de por qué. YAGNI aplica.
Lo mejor es usar StringTemplate / WebStringTemplate en Jetty: una solución limpia, robusta, rápida y fácil de mantener sin tarifas de licencia, sólida reputación y soporte, etc. Aquí es donde empiezo hoy en día.
La mayoría de las aplicaciones / sistemas eligen muchas características sofisticadas de J2EE cuando todo lo que realmente necesitan son servlets y JDBC con una arquitectura / diseño decente. Pregunta por qué crees que necesitas más.
De los contenedores completos, evitaría WebLogic y WebSphere a menos que esté apoyando un sitio web público MAYOR (el sitio web de mi empleador actual está implementado en WebLogic y recibe más de once millones de visitas por mes, otros han sido comparables). El verdadero reclamo a la fama de WebLogic es su agrupación relativamente fácil, pero evite sus características exclusivas de bloqueo de proveedores a (casi) todo el costo. WebSphere es simplemente una pesadilla que evitaría literalmente a toda costa: me niego a hacer proyectos que involucren a WebSphere después de haber hecho un par en el pasado. Ninguno de los productos vale las enormes tarifas de licencia, a menos que realmente tenga una necesidad especial que impulse el uso de una función patentada. En una década como arquitecto / ingeniero senior para muchas compañías de Fortune 500, todavía no he visto tal necesidad. Por otra parte,
Incluso para los sitios web públicos realmente grandes y de alto tráfico, los productos patentados siguen siendo cuestionables. Preferiría gastar esos millones de dólares anuales en tarifas de licencia en un buen hardware y un tiempo de calidad de un puñado de consultores realmente buenos para abordar una solución de escalabilidad simple. Los millones adicionales por año podrían usarse para producir algo digno de venta en ese lindo sitio web ...
EDITAR: otra pieza a considerar ...
Recientemente me he encontrado con terracota . Estoy repensando todo y estoy buscando implementarlo en un sistema significativo pronto. En particular, la terracota agrupa mejor que cualquier otra cosa, por lo que ya NO recomendaría WebLogic para su agrupación.
El término "servidor de aplicaciones" es ambiguo. Con GlassFish v3, puede comenzar con, digamos, un contenedor web tradicional y evolucionar (usando OSGi y la funcionalidad simple "agregar contenedor") para agregar lo que desee: JPA, JAX-RS, EJB's, JTA, JMS, ESB , etc. Sin embargo, es el mismo producto, la misma interfaz de administración, etc. ¿Esto califica como un servidor de aplicaciones para usted? -Alexis (Sol)
fuente
La primera pregunta que generalmente me hago es "¿Puedo hacer esto con Tomcat?". Si la respuesta es no porque necesito JMS o JTA, recurro a un servidor de aplicaciones.
Utilicé WebLogic 8 hace unos 3 años contento con la facilidad de uso de WebLogic y el modelo de licencia / costo. Lo usamos para dos proyectos, uno era un servicio web y el otro era un portal. No encontramos ningún problema con WebLogic o WebLogic Portal en ninguno de esos proyectos.
Durante los últimos dos años estuve trabajando con WebSphere. Cada vez que negociaba con IBM siempre terminaba costando el doble que un equivalente de WebLogic, pero la política corporativa dictaba que tenía que usarse WebSphere. Descubrí que la curva de aprendizaje en WebSphere es considerablemente más pronunciada que WebLogic y nuestro ciclo de vida de construcción / implementación / prueba fue tan lento que usamos Tomcat en el entorno de desarrollo. Pero el mayor problema que tuve con WebSphere fue cuando encontramos un error que nos obligó a actualizar a la próxima versión del parche solo para encontrar un nuevo problema al analizar web.xml. Tomó un turno de 48 horas para resolver todo eso.
Por el momento, aunque estoy usando JBoss. Hace aproximadamente 3 meses estaba a punto de embarcarme en mi nuevo proyecto con Tomcat y Jetspeed 2, pero noté que Jetspeed 2 parece un poco estancado en este momento y JBoss Portal 2.7.0 acaba de lanzarse con soporte JSR 286 / Portlet 2.0. Le di una vuelta a JBoss y me pareció muy fácil de configurar y administrar. El ciclo de compilación / implementación / prueba es muy rápido y rara vez tengo que reiniciar el servidor a menos que haya cambiado un archivo Spring XML en alguna parte.
fuente
He estado usando jBoss durante 3-4 años.
Argumentos para jBoss:
Argumentos contra jBoss:
fuente
¡Pagar GlassFish 3.1! Construido sobre el kernel modular GlassFish v3 basado en Java EE 6, la versión 3.1 ofrece agrupación, administración centralizada y alta disponibilidad.
Consulte http://blogs.oracle.com/nazrul/entry/glassfish_3_1 para obtener más detalles.
fuente
Otro punto que no se discutió aquí es el rendimiento. Si esto es preocupante por el tipo de servicio o por la cantidad de usuarios, se aplicará lo siguiente:
Tenga en cuenta que G-WAN se basa solo en la JVM: no utiliza ningún otro contenedor (a menos que se especifique explícitamente), por lo que puede reservarlo para porciones críticas de rendimiento de sus aplicaciones web.
Como G-WAN admite otros lenguajes (C, C ++, C #, D, Objective-C), incluso puede procesar algunas partes de las aplicaciones en C sin procesar mientras mantiene Java para otras tareas.
fuente
Podría incluir su sistema operativo preferido como criterio de decisión. Debería facilitar el soporte si está utilizando el mismo proveedor para el sistema operativo y el servidor de aplicaciones. Si ya tiene una relación con uno o ambos proveedores, considere si es bueno tratarlos.
Desde una perspectiva técnica, elegiría GlassFish porque tiene soporte para innovaciones más recientes. No creo que JBoss sea malo de ninguna manera, simplemente no está tan actualizado.
La mayor parte de mi experiencia es en WebLogic, pero he usado JBoss y GlassFish. Acabo de lanzar un nuevo sitio en una pila completa de código abierto de Sun (OpenSolaris, GlassFish, MySQL) y fue una gran experiencia con pequeñas frustraciones.
fuente
Sigo pensando que WebLogic es el mejor servidor de aplicaciones Java EE del mercado. Creo que vale la pena si puede pagar esas tarifas de licencia.
Me sorprendió ver hasta dónde puede llegar combinando Tomcat, OpenEJB y ActiveMQ. Me parece una alternativa de bajo costo.
También buscaría en el servidor Spring dm. Está basado en Tomcat, pero creo que la pieza OSGi que agregaron podría estar en todas partes en poco tiempo. Si se hace con la misma calidad que el marco de Spring, será realmente muy bueno.
fuente
Una alternativa: no utilizar ningún servidor de aplicaciones.
Revisa http://www.atomikos.com/Publications/J2eeWithoutApplicationServer .
Para proyectos web, mantenga un contenedor web ligero si es necesario, combinado con algo como Wicket para evitar la complejidad de JSP / JSF o puntales.
HTH Guy
fuente