2011-01-12 19 views
11

Voy a estar terminando el curso básico de Java y ahora tengo que pasar al lado Java EE. Estoy tan confundido que simplemente debería ir con Java EE 6 porque tengo los libros que enseñan fácilmente de principio a fin y todo está allí.¿Debo ir a Spring o seguir con Java EE 6?

¿O debería comenzar con Spring solamente?

Porque como tengo que empezar desde cero es bueno seguir la tendencia que es buena y más orientada al trabajo.

O incluso si solo utilizo Java EE y luego, si necesito pasar a Spring, será rápido o viceversa.

¿Dónde se encuentra también Hibernate? Quiero decir, si uso Java EE 6, ¿todavía necesito Hibernate o en Java EE 6? No lo necesito.

¿Estaré en desventaja si no uso Spring o Spring puede hacer que mi aplicación web de construcción sea más fácil que el framework principal de Java EE/JSF?

+0

Spring es solo una herramienta. A menudo, cuantas más herramientas sepas usar mejor estarás. – DwB

Respuesta

15

Aunque su pregunta sugiere que Spring y Java EE son dos cosas diferentes, en realidad no lo son. Puede utilizar muchos componentes Java EE como

  • servlets y JSP para Spring MVC,
  • JPA para la primavera de DAO.
  • JTA para la seguridad de Primavera

Lo único importante primavera reemplaza en la pila de Java EE es la EJB. A menos que insista en usar EJB, Spring debería ser el camino a seguir.Además, Spring proporciona soporte incorporado para servicios web y otras cosas también.

También revise Groovy y Grails que usan Spring como base.

Por último, diría que, en términos de funcionalidad, ambos hacen lo mismo. Es código (Java EE) vs configuración (Spring), realmente una cuestión de preferencia.

+0

Con su última afirmación, insinúa que JEE 6 no es compatible con una configuración completa, lo que no estoy de acuerdo. JEE6, creo que sigue el principio de "convención sobre confiuración" –

+0

Sí, con las Anotaciones puedes hacer mucha configuración, pero no puedes obtener la inicialización y el código "Boilerplate" solo con JEE. – Manoj

+2

+1 por "Aunque su pregunta sugiere que Spring y JEE son dos cosas diferentes, en realidad no lo son". – Ralph

7

Todos mis comentarios deben tomarse con un grano de sal. He sido usuario de Spring desde la versión 1.0; Nunca utilicé ninguna versión de EJB en producción, desde 1.0 hasta el presente.

Spring me ha servido bien: cualquier técnica que desee aplicar desde Java EE está disponible para mí en primavera. He utilizado los servicios web, LDAP, mensajería y módulos de portlet junto con los sospechosos habituales de persistencia, comunicación remota y web MVC. El código es excelente. Me parece que el énfasis en capas, codificación de interfaces, inyección de dependencia y programación orientada a aspectos beneficia a mis diseños.

La verdad es que puede elegir cualquiera y hacer que funcione. Hay poca ventaja o desventaja en este punto, porque EJB 3 tomó tanto de Spring que se supone que son similares. No puedo decir eso por experiencia personal, porque no he usado EJB 3.

Ninguno de mis empleadores o clientes claman por EJB 3. La gente en mi mercado usa Spring o .NET para hablar con servicios web sobre HTTP.

Los EJB requieren que utilice RMI o CORBA como su protocolo de red. Creo que los protocolos basados ​​en HTTP, ya sea RPC-XML, SOAP o REST, están ganando, porque lo que hace es simple y abierto.

Nadie puede predecir el futuro, por lo que el asesoramiento sobre la perspectiva laboral no tiene valor. Las condiciones de su mercado local pueden no ser las mismas que las mías. Puede cubrir sus apuestas y aprender ambas cosas. Cualquiera que elija, es casi seguro que tendrá que aprender algo nuevo en el futuro que no será ni EJB ni Spring. Así que elige uno y prepárate para cambiar.

+2

+1 "Ninguno de mis empleadores o clientes claman por EJB 3" <- ¡De acuerdo! – Casey

0

Spring y Java EE 6 es en cierto sentido similar. Ellos siguen su camino en paralelo. Creo que será mejor si aprendes Java EE 6 y luego (si quieres/necesitas) aprende Spring.

En Java EE existe la persistencia de Java que funciona muy bien para diferentes propósitos de consulta de bases de datos.

1

Desde mi experiencia personal al aprender Java EE/programación web desde el Java estándar, intenté entrar directamente en algunos de los frameworks sin una comprensión clara de cómo funcionaba Java EE/Web. Si bien no todo el contenido de Java EE es relevante si está utilizando un marco como Spring, creo que es una buena idea tener un buen conocimiento de algunas de las tecnologías subyacentes. No es necesario ir por la borda, pero comprender algunos de los conceptos básicos es una buena idea.

Cuando algo no está configurado correctamente en las bibliotecas (como Spring) a veces asumen un cierto nivel de conocimiento por parte del usuario. Después de luchar con algunos problemas básicos, pasé un tiempo y volví a lo básico. Después de eso, pude lidiar mejor con los marcos.

Sin embargo, me gustaría renunciar a la ruta EJB.

0

Primero, comprenda que Java EE no es una especificación única, sino un conjunto de especificaciones. Mientras que Spring es un marco. Spring tiene una integración ordenada con muchas especificaciones Java EE incluyendo EJBs. La idea de utilizar las especificaciones es hacer que su aplicación sea portátil entre las diferentes implementaciones de esta especificación. Lamentablemente, esto no funciona muy bien en la vida real.
Ahora con respecto a Hibernate. De nuevo: es un marco. Java EE incluye una especificación llamada JPA. Hibernate implementa JPA. Puede encontrar otras implementaciones. Entonces, si está utilizando otra implementación, no necesita Hibernate.

Ahora, es probable que desee saber el balance final. Realmente no lo tengo. Si estás estudiando Java, cuanto más sepas, mejor será.
Si está buscando tecnologías para iniciar una nueva aplicación web, creo que es mejor usar Spring con un contenedor de servlet (el contenedor servlet es parte de Java EE!) Como Jetty o Tomcat + para usar JPA (implementación de Hibernate) para persistencia .

0

Realmente no hay ninguna razón para ir con Spring en un nuevo proyecto. Sin embargo, hay muchas aplicaciones que todavía la usan. Definitivamente debe aprender Java EE antes de Spring. Spring utilizado para facilitar el desarrollo. En este punto, es más fácil trabajar con Java EE y también puede deshacerse de la dependencia Spring.