tutorial traduccion framework entre diferencia spring java-ee

framework - spring traduccion



Spring 3.0 frente a Java EE 6.0 (4)

Como Will y Oliver ya dijeron las cosas más cruciales, solo agregaré eso: "si funciona y hace el trabajo, ¡entonces déjalo en paz!". "Más nuevo" y "estandarizado" no siempre es igual a "mejor", de hecho, rara vez lo hace: las cosas nuevas son torpes y problemáticas (y eso es lo más importante para mí) no ampliamente respaldadas. Si el resto de Java EE 6 está tan "estandarizado" como JSF2.0 (y todos los Rich / Ice / Prime / WhateverFaces), entonces créanme, me quedo con Spring por el momento. Muchas empresas se adhieren a tecnologías un poco más antiguas por una razón (estabilidad> *), Spring ha estado en el mercado por años y está bien establecida.

@ Edite: Especialmente para @ymajoros: JSF (ambos 1.x y 2.x) es un estándar defectuoso debido a múltiples razones y es útil solo en algunos casos (es decir, cuando está creando sitios web CRUD pequeños y simples o cuando es un entusiasta de Java EE):

  • crear nuevos componentes es un dolor en el culo. Como se trata de un marco basado en componentes, supongo que haría las cosas más fáciles, no más difíciles. Actualmente prefiero ir con un enfoque JS + Java en el back-end ya que en realidad es más fácil para mí crear componentes allí. El único punto de ahorro de JSF es que hay un montón de bibliotecas de componentes. El problema comienza cuando no funcionan, quiere cambiar algo o crear su propio componente.
  • el manejo de excepciones es un desastre (¿o algo cambió en el último año o dos?)
  • JSF tiene problemas con ser demasiado explícito: pocas decisiones malas, un desarrollador defectuoso en su proyecto y la mitad de su aplicación pueden ser con estado y serializadas.
  • la parte de la IU del estándar no cubre (o al menos no lo hizo cuando escribí esta respuesta) la mayoría de las colecciones de Java (de hecho, solo la estructura de datos cubierta decentemente era una Lista).

En cuanto al estándar que tanto le gusta, ¿finalmente integraron JSF de algún modo con JAX-RS? Porque la última vez que verifiqué esas especificaciones fueron totalmente separadas, a pesar de que podrías hacer muchas mejoras. Por ejemplo, ¿por qué no puedo anotar un método con @Path en mi bean de respaldo por lo que ambos serían manejados por una solicitud REST y una solicitud JSF?

Tal vez algunos (¿todos?) De esos problemas ahora están corregidos, pero cuando escribí esta respuesta, fueron pocos entre todos los aspectos negativos de JSF y el estándar en general.

Actualmente, si quiero crear una aplicación CRUD muy pequeña y simple, juego con Play 2.0 (aunque es un gran antipatrón) o algo así como RoR. Cuando quiero crear una aplicación grande, de "nivel empresarial", tomo un framework JS (como ExtJS) y una biblioteca de componentes JS lo combino con un back-end Java (y por ejemplo Spring) y hago lo que necesito sin ningún tipo de sobrecarga. llamado estándar traería.

Por supuesto, hay partes interesantes de JEE6 como JPA2, JAX-RS2, la validación de bean no es tan mala. Pero usar toda la pila estándar solo porque lo llamaron un "estándar" (y como mencioné anteriormente, la mayoría de las especificaciones ni siquiera se combinan) es, en mi humilde opinión, simplemente erróneo.

Me enfrento a una situación ...

Me han pedido que aconseje qué enfoque adoptar, en términos de desarrollo de Java EE entre Spring 3.0 y Java EE 6.0. Fui, y todavía soy, un promotor de Spring 2.5 sobre el desarrollo clásico de Java EE 5, especialmente con JBoss, incluso migré aplicaciones antiguas a Spring e influí en la redefinición de la política de desarrollo aquí para incluir API específicas de Spring, y ayudé al desarrollo de un plan estratégico para fomentar soluciones más livianas como Spring + Tomcat, en lugar de las más pesadas de JBoss, en este momento, estamos usando JBoss meramente como un contenedor web, teniendo lo que llamo el "contenedor dentro de la paradoja del contenedor", es decir, tener aplicaciones Spring, con la mayoría de sus API, ejecutándose dentro de JBoss, entonces estamos en el proceso de migrar a tomcat.

Sin embargo, con la llegada de muchas características de Java EE 6.0, que hicieron atractivo a Spring en ese momento, la implementación fácil, menos acoplamiento, incluso algún tipo de DI, etc., parece haber sido imitada, de una manera u otra. JSF 2.0, JPA 2.0, WebBeans, WebProfiles, etc.

Entonces, la pregunta es ...

Desde su punto de vista, ¿qué tan seguro y lógico es continuar invirtiendo en un marco de desarrollo de Java EE no estándar como Spring, dadas las nuevas perspectivas que ofrece Java EE 6.0?

¿Podemos hablar de 3 o 4 años más de desarrollo de Spring o recomienda la adopción temprana de las API de Java EE 6.0 y sus prácticas?

Apreciaré cualquier idea con esto.


Creo que habrás notado que trabajar con Spring te hace más productivo que Java EE. No creo que alguna vez puedan hacer que el cerdo (Java EE) realmente vuele. Java es un gran lenguaje / plataforma, no lo paralice con Java EE. ¿Por qué conformarse con ''algún tipo de inyección de dependencia'', si hoy puede tener Spring?


El punto crucial en mi humilde opinión no es el de las características. En ese sentido, Spring siempre estará por delante de JavaEE, como es natural para OpenSource VS. un estandar. Entonces, un hecho es que obtienes las nuevas características mucho antes con Spring que con JavaEE (por ejemplo, las pruebas de integración de contenedores son una nueva característica en JavaEE 6 y han estado disponibles en Spring por mucho tiempo).

El punto más importante en mi humilde opinión es el de los ciclos de vida para la administración y el desarrollo. Cuando elige JavaEE, vincula su modelo de programación a su infraestructura. Por lo general, los proveedores de servidores de aplicaciones no son los más rápidos en adoptar las nuevas versiones de los estándares (culpan a WebSphere, JBoss, qué tienen ustedes). Entonces, esto significa que probablemente no veamos la producción lista, JavaEE 6 respaldará productos de los grandes proveedores antes de fin de año.

Incluso si ese es el caso, entonces aún debe asumir el obstáculo de su administración, el departamento de TI y los gerentes de control presupuestario para estar dispuestos a actualizar a esta brillante nueva versión. Viniendo desde este lado, JavaEE 6 ni siquiera es una opción para muchas tiendas. ¿Puede elegir a qué le gusta implementar sus aplicaciones? ¿Quieres elegir Glassfish para la producción? Adelante, inténtalo. La mayoría de las tiendas no se encuentran en una situación tan "cómoda".

Exactamente lo contrario: primavera. Modelo de programación desacoplado de la infraestructura. Ve a tomar 3.0.x actual y usa @Inject , JPA 2 y similares en tu Tomcat o servidor de aplicaciones heredado.


Si ya eres una tienda de primavera, ¿por qué molestarse en cambiar? Estás contento con eso, hace lo que quieres, está activamente desarrollado, probablemente no estés buscando salir de Tomcat en el corto plazo, si es que lo haces, ya que Tomcat es muy maduro y se ejecuta en todas partes. Entonces, cualquier promesa de portabilidad que Java EE pueda sugerir está fuera de la ventana.

No veo ninguna razón para cambiar de Spring.