Para los expertos en Java

Temas relacionados con el examen del caso práctico
Cerrado
jl05
PreparaTIC XVIII
Mensajes: 138
Registrado: 17 Ene 2005, 17:22
Agradecido: 0
Agradecimiento recibido: 0

Para los expertos en Java

Mensaje por jl05 »

En algunos sitios leo que si menciono J2EE lo haga de la versión 1.4 porque la 1.5 acaba de salir y no es muy conocida ni usada todavía (aunque a mí me dieron un curso el año pasado que usaba la 1.5); y en otros sitios leo que la 1.5 es la actual, o incluso la penúltima, también que la 1.5 se ha pasado a llamar 5.x, y más aún, que desde la 1.5 (5.x) a J2EE se le alude como JEE.

Supongo que es más cierto y más actual la opinión/información de la segunda parte de la frase que la primera. ¿Es correcto?

Cansino
PreparaTIC XVI
Mensajes: 87
Registrado: 19 Oct 2004, 12:48
Agradecido: 0
Agradecimiento recibido: 0

RE: Para los expertos en Java

Mensaje por Cansino »

Hola,

En Java hay que distinguir la plataforma Standard de la Enterprise. La Standard abarca la máquina virtual de Java y las librerías standard. La Enterprise, se construye sobre la Standard, y son un conjunto de especificaciones para el desarrollo de aplicaciones distribuidas (tanto de librerías específicas, como de un servidor de aplicaciones que ejecute los componentes de la aplicación). Ambas plataformas tienen un versionado propio, y de ahí puede venir el lío.

En la versión 1.2 de la plataforma Standard, se introdujeron mejoras significativas la plataforma, por eso se empezó a hablar de "Java 2" y, abreviadamente, J2SE (Standard Edition). Del mismo modo, la plataforma Enterprise se abrevió como J2EE (Enterprise Edition).

Antes del cambio de nomenclatura, las últimas versiones de ambas plataforams eran J2SE 1.4 y J2EE 1.4 (el que coincidan las versiones no indica que no puedan evolucionar independientemente).

En la versión 1.5 de la plataforma estándar (que será como de hace 2 años), se introdujeron mejoras sustanciales en el propio lenguaje Java. Se decidió abandonar lo del "Java 2", y ahora es simplemente Java SE. Además, el 1.5 se cambió por 5: Java SE 5. Luego, sacaron otra versión, la actual: Java SE 6.

En cuanto a la plataforma Enterprise, sacaron también una nueva versión (cambiaron de raíz muchas cosas de la especificación anterior), que aprovecha las nuevas características de Java SE 5, y siguiendo los convenios, en vez de J2EE 1.5 la llamaron Java EE 5.

Es decir, ahora mismo las últimas versiones son Java SE 6 y Java EE 5.

El problema de Java EE 5 es que es relativamente reciente (del 2006). Cambiaron un montón de cosas en las especificaciones, y áún no existen muchos servidores de aplicaciones Java EE 5 certificados. De entre los servidores más conocidos:
- JBoss tiene una versión beta de un servidor Java EE 5 pero todavía sin certificar.
- El Websphere de IBM tampoco tiene versión certificada. Creo que tienen por ahi packs que implementan ciertas características de Java EE 5.
- El Weblogic de Bea sí está certificado ya.

Hasta hace muy poco el único servidor que había certicado era Glassfish, que es la propia implementación de referencia de Java EE que hace Sun mediante un proyecto open source.

De cara al cuarto, en cuanto a elegir Java EE 5 o J2EE 1.4, veo ambas opciones totalmente defendibles:
- La primera, por el aumento de productividad que supone la nueva plataforma. Realmente ha mejorado mucho las cosas Java EE 5 en cuanto a que su programación es mucho más sencilla. En especial en lo relativo a EJBs.
- La segunda, por la madurez de la tecnología.

Yo en el cuarto haría una referencia breve a la versión que elijo y porqué la elijo, a ver si luego en la defensa te preguntan y te puedes lucir.

Un saludo

jl05
PreparaTIC XVIII
Mensajes: 138
Registrado: 17 Ene 2005, 17:22
Agradecido: 0
Agradecimiento recibido: 0

RE: Para los expertos en Java

Mensaje por jl05 »

Muchísimas gracias, Cansino, por una respuesta tan clara y completa.

Ojalá pueda defender lo que sea en el cuarto. Ya queda menos para saber los resultados del tercero... :?

Gracias otra vez.
Última edición por jl05 el 13 Oct 2007, 17:42, editado 1 vez en total.

consuerte
PreparaTIC XVI
Mensajes: 18
Registrado: 20 Mar 2007, 13:03
Agradecido: 0
Agradecimiento recibido: 0

RE: Para los expertos en Java

Mensaje por consuerte »

Por completar mínimamente la extensa y completa explicación de Cansino, incluyo el enlace donde pueden consultarse los servidores de aplicaciones actualmente certificados: http://java.sun.com/javaee/overview/compatibility.jsp

Personalmente, creo que no entrarán por ahí los miembros del tribunal en ningún caso, ya que como comentaba Cansino el uso de una u otra versión es totalmente factible y defendible por criterios de madurez tecnológica.

Por ello, no entraría en detalles ni perdería mucho el tiempo en ese aspecto y como mucho dejaría la constancia que comenta Cansino por si crees que puede ayudarte en la defensa.

Avatar de Usuario
gabiotillo
Usuario registrado
Mensajes: 387
Registrado: 18 Mar 2006, 19:52
Agradecido: 0
Agradecimiento recibido: 0

Re: RE: Para los expertos en Java

Mensaje por gabiotillo »

Cansino escribió: De cara al cuarto, en cuanto a elegir Java EE 5 o J2EE 1.4, veo ambas opciones totalmente defendibles:
- La primera, por el aumento de productividad que supone la nueva plataforma. Realmente ha mejorado mucho las cosas Java EE 5 en cuanto a que su programación es mucho más sencilla. En especial en lo relativo a EJBs.
- La segunda, por la madurez de la tecnología.
Una pregunta más sobre el tema de EJBs. ¿En EJB 3.0 siguen existiendo los tipos diferenciados de EJBs (sessión, entity y message) o eso tambén cambia?

consuerte
PreparaTIC XVI
Mensajes: 18
Registrado: 20 Mar 2007, 13:03
Agradecido: 0
Agradecimiento recibido: 0

RE: Para los expertos en Java

Mensaje por consuerte »

En EJB 3.0, la tipología sigue manteniendo vigor y se puede hablar de session beans, message driven beans y entity beans, pero lo que cambia radicalmente es el concepto, particularmente en el caso de las entity beans.

Las entity beans en EJB 3.0 se convierten en simples objetos Java o POJOs(Plain Old Java Objects), en lugar de ser clases que implementan el interfaz EntityBean.

Si en EJB 2.0 las entity beans tenían que implementar los interfaces EJBLocalObject/EJBObject y los interfaces home EJBLocalHome/EJBHome, ahora en EJB 3.0 todo esto no es necesario y únicamente debe utilizarse la API de Persistencia (javax.persistence.EntityManager) para crear, encontrar y actualizar las instancias.

Cansino
PreparaTIC XVI
Mensajes: 87
Registrado: 19 Oct 2004, 12:48
Agradecido: 0
Agradecimiento recibido: 0

Re: RE: Para los expertos en Java

Mensaje por Cansino »

Como dice consuerte, en los EJB 3.0 (Java EE 5) se mantienen la tipología en cuanto a los Session bens y a los Message driven beans. Cambia con los entity beans, que desaparecen.

Los entity beans de los EJB 2.1 (J2EE 1.4) fueron su mayor fracaso. Eran muy complicados de programar (como el resto de los EJBs), pero es que además eran pesadísimos y no era viable gestionar complejos modelos de datos con ellos. En el desarrollo de los EJB 3.0 se buscaba la simplificación de todos los EJBs (manteniendo su potencia). Durante la simplificación de los Entity Beans, se acabó desarrollando una especificación aparte: lo que comenta Consuerte de la JPA (Java Persistence API).

Para el desarrollo de la JPA, se mimetizó (y mejoró) lo que realmente se utilizaba en la industria: Hibernate. Una herramienta de mapeo objeto/relacional, es decir, que se encarga de lidiar con los SGBDR mientras que al programador le permite trabajar con objetos, y que además permite hilar fino con cómo se realiza el mapeo objeto/relacional, la transaccionalidad, las consultas, el caching, etc para poder conseguir implementaciones eficientes. Pues bien, JPA es una estandarización de Hibernate. Cambia el vocabulario: lo que en Hibernate era un objeto Session, en JPA es un EntityManager. Lo que en Hibernate es save(), en JPA es persist(), y así.

De hecho, dos implementaciones del estándar JPA de Sun son una realizada sobre Hibernate (ofreciendo una fachada JPA), y otra realizada sobre Toplink de Oracle (otra herramienta de mapeo objeto/relacional muy similar a Hibernate).

Los entity beans de los EJB 2.1 eran EJBs cuyo negocio era la persistencia: tenían su interfaz remoto y local (por ejemplo, con el método ejbLoad() para cargar el objeto desde el almacén), necesitaban de un contenedor de EJBs para existir (por lo tanto de un servidor J2EE completo), el contenedor gestionaba su ciclo de vida, etc. El tipo de almacén, además, no estaba definido por los EJBs, aunque en la práctica siempre eran SGBD relacionales, lo que hacía que la especificación de cómo se mapean los objetos en tablas dependiese del fabricante del servidor de aplicaciones utilizado (lo que impedía la portabilidad).

Con JPA ya no hay ningún EJB que se encargue de la persistencia de una entidad corriendo en el servidor. De hecho, JPA se puede utilizar fuera de un servidor de aplicaciones perfectamente. Además, JPA está específicamente pensada para almacenes relacionales, por eso estandariza cómo se realiza el mapeo de objetos en tablas, lo que hace efectiva la portabilidad entre diferentes implementaciones de JPA.

Ahora mismo la especificación de JPA es un documento independiente que acompaña a la especificación de los EJB 3.0. Una implementación de EJBs 3.0 requiere de JPA pero no a la inversa. En el futuro, evolucionará de forma independiente a los EJBs, puesto que ya define un estándar de mapeo objeto/relacional para utilizar en la plataforma Java (tanto Java EE como Java SE).

Finalmente, a nivel de vocabulario, decir que con JPA ya no se habla de "Entity Beans", sino simplemente de "Entities" que, como dice Consuerte, son objetos POJO a los que se les asocia información acerca de cómo se pueden hacer persistir en tablas (bien mediante anotaciones Java o bien mediante ficheros XML aparte).

Como siempre me he extendido más de la cuenta, desde luego este nivel de detalle no tiene sentido para el cuarto aunque espero que os pueda ayudar a situaros con las tecnologías. Ahora mismo JPA ya es totalmente utilizable con las implementaciones sobre Hibernate y Toplink.
gabiotillo escribió:
Una pregunta más sobre el tema de EJBs. ¿En EJB 3.0 siguen existiendo los tipos diferenciados de EJBs (sessión, entity y message) o eso tambén cambia?

consuerte
PreparaTIC XVI
Mensajes: 18
Registrado: 20 Mar 2007, 13:03
Agradecido: 0
Agradecimiento recibido: 0

RE: Para los expertos en Java

Mensaje por consuerte »

Un apunte final en línea con lo comentado, como siempre tan extensa y profusamente por Cansino ;): para diferenciarse de las anteriores versiones, la especificación EJB 3.0 evita en lo posible referirse a "beans", y suele referirse más comúmente a "objects".

De esta forma, hace más referencia a session object, message-driven object y entity object, si bien, por claridad termina utilizando la terminología "bean" para aclarar el contexto.

Respecto a JPA, como bien ha comentado Cansino, tomó las principales ideas de Hibernate y Toplink de Oracle, que por tanto se han convertido en las principales implementaciones de referencia.

Junto a ellas, a día de hoy se pueden encontrar otros productos en el mercado como BEA Kodo y Apache OpenJPA entre los más destacados.

JPA, al igual que ocurre con la especificación de EJBs en el marco de la especificación de J2EE, avanza ya como una especificación independiente, que también ha casi dejado "en la cuneta" a alguna otra especificación como Java Data Objects (JDO).

Saludos y ánimo

jl05
PreparaTIC XVIII
Mensajes: 138
Registrado: 17 Ene 2005, 17:22
Agradecido: 0
Agradecimiento recibido: 0

RE: Para los expertos en Java

Mensaje por jl05 »

Una vez más, gracias a los dos, especialmente a Cansino.

(Para Cansino) Por cierto, a mí no me parece que te extiendas más de la cuenta. Desde luego que, a priori y salvo un cuarto examen muy particular, lo normal sea que no tengamos que contar todo esto en el examen escrito, pero yo desde luego prefiero tener la máxima cantidad de información posible (especialmente cuando está clara y bien contada), que no tenerla, para luego tener la base suficiente para saber que lo que pongo o no pongo es correcto.

Cansino
PreparaTIC XVI
Mensajes: 87
Registrado: 19 Oct 2004, 12:48
Agradecido: 0
Agradecimiento recibido: 0

Re: RE: Para los expertos en Java

Mensaje por Cansino »

A riesgo de hacer honor a mi nombre, aunque Consuerte y yo estamos diciendo básicamente lo mismo, difiero un poco en lo de la terminología. Los tipos de EJBs en EJB 3.0 pasan a ser 2: los Session Beans y los Message Driven Beans (y esos nombres se siguen utilizando). Los antiguos Entity Beans de EJB 2.1 se sustituyen por "Entities" de JPA en EJB 3.0. Este último matiz es importante, más que por la nomenclatura, porque las entidades que gestionan la persistencia ya no son EJBs corriendo en un contenedor de EJBs. Aquí tenéis una referencia al tutorial de Java EE de Sun dónde al final hace referencia a ésto.
consuerte escribió:Un apunte final en línea con lo comentado, como siempre tan extensa y profusamente por Cansino ;): para diferenciarse de las anteriores versiones, la especificación EJB 3.0 evita en lo posible referirse a "beans", y suele referirse más comúmente a "objects".

De esta forma, hace más referencia a session object, message-driven object y entity object, si bien, por claridad termina utilizando la terminología "bean" para aclarar el contexto.

Respecto a JPA, como bien ha comentado Cansino, tomó las principales ideas de Hibernate y Toplink de Oracle, que por tanto se han convertido en las principales implementaciones de referencia.

Junto a ellas, a día de hoy se pueden encontrar otros productos en el mercado como BEA Kodo y Apache OpenJPA entre los más destacados.

JPA, al igual que ocurre con la especificación de EJBs en el marco de la especificación de J2EE, avanza ya como una especificación independiente, que también ha casi dejado "en la cuneta" a alguna otra especificación como Java Data Objects (JDO).

Saludos y ánimo

consuerte
PreparaTIC XVI
Mensajes: 18
Registrado: 20 Mar 2007, 13:03
Agradecido: 0
Agradecimiento recibido: 0

RE: Para los expertos en Java

Mensaje por consuerte »

Ciertamente compañero Cansino, aunque la especificación es más vaga en este punto y no muestra la clasificación en sólo 2 tipos de beans, el tutorial de Sun que referencias es totalmente claro en ese punto.

Sinceramente creo que debería haberse hecho lo mismo en la especificación.

Y sabes bien que no haces honor a tu nombre cuando te anima un espíritu aclaratorio ;)

Cerrado

Volver a “CUARTO EXAMEN 2007”