Mostrando entradas con la etiqueta ejb. Mostrar todas las entradas
Mostrando entradas con la etiqueta ejb. Mostrar todas las entradas

viernes, marzo 14, 2008

El nuevo modelo de empaquetado de EJBs

viernes, marzo 14, 2008 por Martín

En TheServerSide publican la segunda parte de la serie sobre las novedades en EJB 3.1. Este artículo habla sobre el nuevo TimerService que tiene muy buena pinta, y sobre el nuevo sistema de empaquetado.

Ya he sido crítico con EJB 3.1 antes, y aunque como ya he dicho el nuevo TimerService me gusta bastante, lo cierto es que el nuevo empaquetado no me gusta. Ya no es sólo el hecho de cambiar algo que se ha mostrado efectivo durante todo este tiempo sino más bien el transfondo que hay detrás de este cambio, que no es otro que el mismo que hay tras el cambio de hacer las interfaces opcionales: querer abarcar con EJBs todos los escenarios habidos y por haber.

Quizás es que estoy chapado a la antigua, y que vengo de cuando había EJB 1.x, y que casi todo lo que he hecho con EJBs ha sido con EJB 2.x, pero, ¿no hay nadie más por ahí al que esto...



...no le parezca más simple que esto?



En mi opinión la simplicidad no está en el tamaño de los dibujos, si no más bien en su estructura. Y, nuevamente en mi opinión, el meter todo en un sitio sin separar vista y negocio, el mezclar parte web y parte no necesariamente web, el entremezclar recursos utilizados en diferentes partes y permitir su uso indeferente, no son cosas que hagan una solución mucho más simple. Para mi, es justamente al contrario, la propuesta favorece la confusión. Y eso no es simplicidad.

A mi me gusta el modelo de separación en componentes propuesto por EJBs hasta ahora. Como en el caso de las interfaces, me parece una buena y muy recomendable práctica. El nuevo modelo, totalmente anárquico, está claro que apunta hacia desarrollos minimalistas, buscando el exponer EJBs como una tecnología fresca que se puede utilizar para todo. Sin embargo, ya empiezo a ver proyectos con datasources entremezclados y gente preguntándose dónde se ha declarado cada cosa, incompatibilidades entre recursos, proyectos que de pronto hay que separar en contenedor web y servidor de aplicaciones y se paran durante meses porque se diseñaron para ejecutarse como WARs, etc.

En fin, que parece que sigue la tendencia a lightweight EJBs. La verdad es que lo que noto es que cada vez esto le importa menos a la gente. Los que vivimos la época dorada de los EJBs poco a poco vamos dejando el paso a otras personas que no se tragan lo de que hay que usar EJBs por narices. Hay alternativas, y saben utilizar esas alternativas. Por lo tanto, en mi opinión estos cambios poco ayudan y al abrir el abanico de posibilidades están haciendo todavía más complejo el desarrollo y mantenimiento de aplicaciones basadas en EJBs.

Pero bueno, eso y el avance lento de los servidores de aplicaciones en parte debido a ese relevo generacional serían merecedores de otro post.

lunes, enero 28, 2008

EJB 3.1: No necesitas interfaces si total no vas a hacer tests

lunes, enero 28, 2008 por Martín

El viernes pasado TheServerSide publicaba un artículo sobre EJB 3.1 que habla de dos de las novedades de EJB 3.1: las interfaces opcionales y los singleton.

Atención a lo que su autor escribe en un momento dado respecto a las interfaces opcionales:

Interface-based programming is clearly a useful technique in writing loosely-coupled, unit-testable applications. That is precisely why both EJB 2.1 and Spring promote the idea of component interfaces. In fact, at least one interface is required even for EJB 3.0 Session Beans (this is not a requirement for EJB 3.0 Message Driven Beans).

Bien, hasta ahora todo bien. Ojo al siguiente párrafo que no tiene desperdicio:

The trouble is that component interfaces are just a needless abstraction in a lot of circumstances. I can't remember the times I silently cursed under my breath as I carried out the mechanical task of writing interfaces just because the framework needed it or the architect sitting in some ivory tower mandated it. A lot of times, just a regular Java object is really all you need for your foreseeable needs, especially if you don't really do much unit testing and loose-coupling is just not enough of a concern for the application.

Me pierdo un poco en este párrafo. Corregidme si me equivoco, pero me parece entender que ahora ya no necesitamos las interfaces porque hay ocasiones en que, total, no vamos a hacer tests unitarios, y que no nos preocupa el acoplamiento entre los componentes.

Yo creo que a veces todo esto de los hands-on architects, pragmatic architects, etc. se le va a la gente tan de las manos, que hasta se utiliza para justificar lo injustificable. Señores autores de la especificación de EJBs (sé que no me leen, no sé para que me dirijo a ellos), el desarrollo basado en interfaces es fundamental dentro de la programación de componentes ya que la testabilidad y el desacoplamiento son características fundamentales en estos sistemas. Y les pese o no, un EJB es exactamente eso, un componente. Es lo que ha sido siempre, y tampoco hay ido tan mal (al menos desde EJB 2.x).

Una cosa está clara, y ha sido así toda la vida. El que mucho abarca, poco aprieta. Y está claro que estos señores quieren abarcar mucho. Demasiado. Incluso a expensas de sugerir cosas como no hacer tests unitarios. En fin, cuando lees estas perlas de un miembro de la spec. de EJB 3 y JEE 6, y autor de EJB3 in Action, te das cuenta del despropósito total y el sin sentido que ha sido esta tecnología durante todo este tiempo.

Más les valdría haber estandarizado Spring y mantener EJB 2.x que tampoco era tan malo.