java - que - jse y jee
¿Cuál es la diferencia entre Java Web Application y Java Enterprise Application? (2)
He estado investigando la diferencia entre la aplicación web Java y la aplicación empresarial, y lo que he descubierto es que tienen una arquitectura un poco similar.
Por ejemplo, Enterprise Application tiene Client, Presentation, Business Logic y Data tier.
Client Tier puede ser clientes de Java, clientes basados en navegador y clientes móviles.
El nivel de presentación puede ser componentes, servlets, portales y componentes JSP de JavaBeans.
En Business Logic Tier puede tener servidores, servicios web (SOAP, Restful y otros) y componentes MDB.
En Nivel de datos puede tener DBMS, LDAP y Data Feed.
Ahora, si comparamos esos componentes con la aplicación web, puede usarlos sin crear una aplicación Java Enterprise. Por ejemplo, puedo usar muchas tecnologías diferentes para implementar mi aplicación web, como Hibernate, Maven, JSP o JSF, bases de datos, servlets, JavaBeans, etc.
Mi mayor pregunta es ¿cuál es la principal diferencia entre la aplicación Java Enterprise y la aplicación web? ¿Por qué usaría la aplicación Java Enterprise?
Como puede ver en el sitio web de Oracle, Java Enterprise Edition es una especificación. Hay muchas implementaciones de varios proveedores. La principal diferencia con la edición estándar y la empresa es que para este último necesita un servidor de aplicaciones, en lugar de un servidor web como tomcat. Esto se debe a que los EJB donde pone la lógica comercial (que existe solo en la especificación Java EE) necesitan un contenedor que los cumpla.
JBoss, Geronimo, Resin, WebSphere, entre otros, son servidores de aplicaciones que administran EJB.
¿Por qué debería usar la aplicación Java Enterprise?
Esta pregunta surgió casi al mismo tiempo que la especificación misma vio la luz.
Se han escrito varios libros sobre este tema.
Desarrollo J2EE Expert One-on-One sin EJB
POJOs en acción: desarrollo de aplicaciones empresariales con marcos ligeros
Y también tecnologías como Spring ofrece alternativas.
Por lo tanto, en la mayoría de los casos, puede crear una aplicación web que satisfaga los requisitos de su cliente sin la necesidad de crear una aplicación empresarial.
Sin embargo, hay aplicaciones con requisitos especiales funcionales y / o no funcionales, que necesitan tener una capa empresarial ejecutándose en una infraestructura que ofrece ciertos servicios, tales como: transacciones distribuidas, procesamiento de mensajes, servicios de temporizador e invocación remota de métodos.
Este tipo de servicios de infraestructura no están disponibles en servidores web, por esta razón debe desarrollar una aplicación (o al menos algunos componentes) que se ejecute en servidores de aplicaciones pesados.