Hay muchas cosas que practicamente “todas” las aplicaciones hacen.
Como
- loguearse (identificar usuarios) …
- llevar registro de pasos importantes que hacen (logs)
- Conectarse a entidades externas (como Base de datos)
- Conectarse entre modulos de la misma aplicacion
- Conectarse con modulos de otros servidores
- Recibir o hacer llamadas http
- Tener registro de sesiones de usuario
- Comunicacion entre componentes en distintos servidores
Y muchas otras cosas
Estas cosas comunes son transversales a las funcionalidades de tu aplicacion que pudiera ser
- Aplicacion de Contabilidad
- De deporte
- Un juego
- Una aplicacion para robar un banco
- Otras
Java SE es el lenguaje… como cualquier otro lenguaje (Python, PHP, C++)
Java EE es la definición de un Standard.
Whaaaaatttt?
Si un Standard que indica cómo debería implementarse cada una de esas características comunes.
Es decir…
Para definir la seguridad, habría que hacerlo en un archivo de configuración xml que se deja en una carpeta llamada…. bla bla bla.. o para definir un componente relacionado con una base de dato se puede implementar mediante una annotation de la forma @blabla bla en tal clase.
Y todo eso nos provee la funcionalidad que generalmente es comun a todas esas funcionalidades.
-
Qué quiere decir un Standard?
Que al proporcionar simplemente la definicion de donde y de que forma tendria que tener cada cosa….
… Diferentes proveedores pueden hacer un servidor que cumpla ese standard, algunos con caracteristicas adicionales y otros hasta cumpliendo parcialmente el standard.
Entonces asi, distintos proveedores implementan servidores Java EE que cumplen de alguna forma con el Standard
En general el primero va a ser Oracle Mismo que es GlassFish.
Y otros proveedores son
Tomcat (implementa parcialmente)
- Jboss
- Websphere
- Jetty
- y otros
Con la implementacion se proveen una serie de libraries que implementan cada uno de los módulos que JavaEE define.
-
Similitudes con otros lenguajes
Como acercamiento a JavaEE en otros lenguajes pudieramos pensar en otros frameworks como
Django para Python… o Laravel para PHP.
Aunque en esos casos no son un “Standard” pero un “Producto” y tratan de proveer una aplicacion funcionando en si mismos.
-
Corolario de Java EE
Al JavaEE estar hecho de tantos módulos, esto hace que haya muchas otras personas que a lo largo de la historia no le gustó una parte especifica o un módulo particular del standard por ser muy complicado, o poco eficiente, o por estar sobredimensionado para sus necesidades particulares.
Esto hizo que otros proveedores provean libraries o complementos o alternativas a esos módulos.
Entre los más conocidos estuvo
Hibernate para acceso a bases de dataos (ORM Mapeo de Tablas de Bases de Datos a Objetos Java), o Spring (para comunicacion o instanciacion de objetos en principio)
¿Se enojan los que hicieron Java EE con eso?
Para nada. Esa es la idea de que sea modular, Te podes ir del standard si ves una mejora en tu proyecto particular.
Y es más, si la library, el framework o lo que sea es más copado que el standard mismo, con el tiempo el Standard toma ese rumbo, y terminan reemplazando para ese módulo la solución orignal que habian propuesto.
Entonces hoy ves en el Standard una solucion mucho mas parecida a Hibernate que al Standard inicial que definió JavaEE en un comienzo en sus primeras versions.