2011-01-15 29 views
12

Soy desarrollador de Java SE pero tengo un rico fondo web (PHP, Perl/CGI, etc.) y ahora estoy comenzando un nuevo proyecto. Tendrá una interfaz web, lógica de negocio de spaghetti, base de datos relacional como almacenamiento y conexiones a otros servicios. Lo hago desde cero.Java EE 6 y alternativas

Mis colegas me dijeron que use resortes y resortes de seguridad y muelles. Miro brevemente las especificaciones de Java EE 6 y descubrí que cubre casi todos los aspectos de la aplicación empresarial. Les pregunté a mis colegas por qué necesitan resortes y puntales, pero parece que usan tecnologías simplemente porque están familiarizados con ellos y no están familiarizados con la clásica pila de Java EE 6.

Entonces, mi pregunta es: ¿qué tiene de malo Java EE 6? ¿Por qué necesito la primavera si hay búsquedas JNDI? Tomará uno o dos días crear InitialContext falso para pruebas unitarias. Y eso es todo: me quedo sin herramientas externas como la primavera. ¿Por qué necesito seguridad de primavera si hay una seguridad incorporada en la especificación de Servlets? Puedo asignar cualquier solicitud a cualquier servlet utilizando web.xml, no se necesita struts.xml. Puedo usar servlet-filters en lugar de interceptores de puntales. Hay RMI, por lo que no necesito un control remoto de resorte. Y así sucesivamente ..

¿Por qué debería molestarme con todas esas cosas elegantes si hay Java EE 6?

Realmente quiero encontrar la situación cuando Java EE 6 no es suficiente. ¿Tiene alguna?

Gracias!

+3

Hay una gran diferencia entre el J2EE vintage de entonces y el moderno Java EE 6 a partir de ahora. ¿De qué estás hablando? Entonces, Spring y Struts fueron excelentes complementos además de J2EE. Pero ahora, Java EE 6 proporciona casi lo mismo ya en la caja. Sus colegas aún podrían estar colgando en la antigüedad. – BalusC

+0

Lo siento) Java EE 6. No voy a usar Java 1.2))) –

+0

Por favor revise/vuelva a incluir su pregunta. También podría reconsiderarlo :) Pregunta similar [aquí] (http://stackoverflow.com/questions/2084169/choosing-a-java-web-framework-now) y [aquí] (http://stackoverflow.com/questions/1960280/what-to-learn-for-making-java-web-applications-in-java-ee-6). – BalusC

Respuesta

1

El resorte no es necesario para Java EE. Spring simplemente hace que los componentes complejos de Java EE sean fáciles de usar.

+0

Lo sé) Pero puedo usar JNDI en lugar de DI de primavera. Entonces, ¿por qué necesito la primavera? –

+2

JNDI no es de ninguna manera comparable a Spring DI. CDI es. – BalusC

0

Spring un modelo-vista-controlador que hace Java EE más limpio y más organizado. Es estructuralmente más correcto separar sus modelos, vistas y controlador.

Estoy de acuerdo con usted. Si es un sitio web simple, entonces creo que puedes hacer todo con solo Java EE. Sin embargo, imagine tener un montón de código que maneja la entrada de formularios y muchos modelos. Cada controlador puede tener una vista. Puede crear un servlet y luego reenviarlo a la página jsp correcta, o puede usar la primavera porque ya hace todo esto.

La decisión es su de cuánto necesita usar la primavera. Un buen marco es aquel que le permite escoger y elegir qué partes usar. Creo que la primavera lo hace bien porque puedes usar el modelo mvc o ir más allá y hacer más con él.

Finalmente, la primavera tiene inyección de dependencia que facilita la configuración.

+0

Gracias. Puedo implementar mi propio patrón MVC: cada servlet es un controlador y la página JSP es solo una vista. No utilizaría ninguna lógica dentro de JSP (porque es imposible de probar). Puedo usar JNDI (búsqueda de servicio) sin primavera. Es tan bueno como la inyección de dependencia, ¿no es así? –

+0

Creo que estás tratando de reinventar la rueda. Lo cual es genial, pero ¿por qué harías eso cuando Spring ya ha sido probado por millones de usuarios? Si dices una experiencia de aprendizaje, entonces estoy totalmente contigo. De lo contrario, solo estará reutilizando las libs que se crearon y probaron. –

+0

En un buen diseño de MVC, tendría solo un servlet. – BalusC

13

Por qué la gente usa Spring y por qué es tan popular requiere un poco de historia.

Solía ​​ser que Spring era más simple que las aplicaciones Java EE. Me refiero a la especificación EJB2.x. Me da la sensación de que hubo una especie de rebelión contra la naturaleza complicada de esa especificación. Los desarrolladores querían una arquitectura más simple, y Spring la proporcionó permitiéndoles escribir POJO (Plain Old Java Objects) en lugar de clases que tenían que implementar interfaces específicas para obtener la funcionalidad deseada.

Spring también hizo 2 principios más populares: Inversión de control (IoC) e Inyección de dependencia. Combinados, esos dos principios proporcionaron una forma diferente de cablear los diversos componentes de una aplicación y obtener esos componentes en la aplicación cuando se ejecutó.Eso, combinado con la idea de simplemente escribir POJOs fue muy convincente para muchas personas, porque el código era más simple y era más fácil conectar todos sus componentes.

La nueva especificación EJB3 anula algo de lo que Spring tiene para ofrecer, pero Spring es mucho más que un contenedor IoC. Proporciona excelentes plantillas para el acceso JDBC a la base de datos, múltiples formas simples de manejar transacciones, probar utilidades, una pila MVC, y más. Fue popular y sigue siendo popular. Una broma que he oído es

"EJB3, la respuesta a la pregunta formulada nadie ..."

EJB3 es una buena elección. La primavera es una buena elección. Grails es también una buena opción (utiliza Spring, Hibernate debajo de las sábanas).

+1

¡Soy un gran admirador de Grails! Es increíble lo rápido que puedes ponerte en marcha. –

+0

@amir, estoy completamente de acuerdo. – hvgotcodes

+1

y yo no. Grails es agradable, pero a partir de la versión que estamos usando - 1.3.3 - sigue siendo bastante inestable. Tuvimos que arreglar algunos errores nosotros mismos (después de informarlos, por supuesto). Y no eran algunos errores de esquina. – Bozho

1

"Entonces, ¿por qué necesito la primavera?"

Ilya! Finalmente me has convencido (y con suerte a ti mismo) de que no necesitas Spring. En realidad, no hay mucho especial bueno en todo este montón ... a menos que ya estés acostumbrado. Escriben un libro sobre tecnología web, luego agregan el resto de la ciencia de la computación y lo llaman RESTfull.

"Sin embargo, imagine tener muchos códigos que manejan la entrada de formularios y muchos modelos. Cada controlador puede tener una vista".

Amir! - muy buena consideración. La diferencia real entre los marcos web que conozco radica en la definición de componente. Struts tiene tres tipos de componentes: componentes View, Controler y Model. A primera vista se ve bien (mejor que algunos otros con seguridad). Pero, ¿qué puedes construir de esos componentes? - Una vista de página, un controlador de página y un modelo de página. Dios sabe cuál será el costo de encuadernar los artículos de estas tres filas de componentes, tal vez una configuración enorme si es posible.

La verdadera solución es (como prácticamente se menciona en el punto anterior) es un concepto de componentes que cada uno tiene su vista, su controlador y su modelo. Solo un marco llegó tan lejos hasta ahora: HybridJava. ¿Qué es un bloque de creación de página web en Spring?

1

Parece que necesita capacidades particulares de POC con Spring y luego con Java EE 6 para que pueda comparar las dos parecidas con un prototipo práctico de trabajo real.

Las razones por las que usar un muelle sin embargo, son los siguientes:

  • capacidad de abstracción mi solicitud fuera del servidor de aplicaciones. Puedo ejecutarlo en cualquier servidor de aplicaciones, o fuera de AS para pruebas de unidades
  • mucho del código de la placa de la caldera que tendría que escribir, para mejorar mi diseño ya está disponible
  • IOC/DI - el objeto que necesita dependencias, no sabe cómo obtenerlas; todo lo que sabe es qué interfaces requiere. Un tercero los proporciona. Sí, podría lanzar su propia versión de este tercero en Java EE 6 pero ya está disponible en Spring.
  • Transacciones administradas con frijoles: Spring proporciona todas las herramientas que necesita para tener un control completo de bajo nivel en sus transacciones. Siempre sugeriría usar BMT ya que le da la flexibilidad que pueda necesitar.