Número décimo de Javahispano Podcast. Este número está dedicado a OpenXava donde Javier Paniza nos hablará de como utilizar dicho framework. Las secciones de este podcast son:
Sección noticias: Presentada por Abraham Otero y Alfredo Casado
Entrevista realizada a Javier Paniza por Erick Camacho y Jorge Rubira. En dicha entrevista Javier nos explicará como funciona OpenXava y para que casos podemos utilizarlo.
Por último, por cortesia de Venkman se ha creado un nuevo mapa de oyentes utilizando GMaps ya que hubo gente que tuvo problemas con Frappr. Ponemos este nuevo link para que os apunteis.
Etiquetas: j2ee, podcast, openxava
Con los dedos de la mano tenemos 10 bits! Podemos contar hasta 2^10 ;p
Me ha parecido muy interesante el enfoque de OpenXava, gracias por la entrevista.
Offtopic: creo que empiezo a tener un problema, el comentario de @venkman me a sacado una sonrisilla xD.
Muy interezante el openXava, vamos a ver si le sacamos rato para jugar con él. Se que no es lo mismo, pero sería interezante que también entrevistaran al creador de openToro.
salu2
J
Cuando llevo sandalias puedo contar hasta 2^20 ;-)
Pero es chungo doblar y extender los dedos de los pies, Ibon ;p
Me ha parecido interesante lo de OpenXava, pero sólo limitadamente interesante. Quiero decir, tengo una cierta sensación de que "sólo" sirve para generar/construir CRUDs y punto. Me pregunto, por ejemplo...
- Si no manejamos para nada las vistas, ¿qué posibilidades tenemos de modificar la apariencia u otros aspectos de las pantallas que maneja el usuario? ¿O quizá si queremos hacer otro tipo de vistas, tenemos que hacerlo "por nuestra cuenta"?
- ¿Hasta qué punto tenemos control sobre los controladores (valga la redundancia)? En algún momento se señala que podemos "insertar nuestra funcionalidad en cualquier punto", ¿pero qué mecanismos da OX para ello?
No sé, sólo he mirado las demos y un poco de la documentación. La entrevista del podcast aún no he podido terminarla. Si estas cuestiones ya están comentadas en algún sitio, no dudéis decirme que RTFM, pero por lo que he ido viendo, la sensación que me da es que, aunque sin duda interesante, su alcance es limitado a un ámbito bastante determinado.
Lo que yo no logro ver con claridad es como se maneja la herencia, y si fuera capaz de manejarlo ¿qué tipo de interfaz de usuario generaría, una para cada clase no abstracta?.
Comparto las dudas de venkman.
Offtopic:Cuidaito y sale alguien diciendo que algunaz veces se puede contar hasta 2^21 ;-)
Hola Venkman,
¿qué posibilidades tenemos de modificar la apariencia u otros aspectos de las pantallas que maneja el usuario?
Usando anotaciones puedes indicar como quieres que salgan distribuidos los datos, los puedes poner dentro de marcos, de pestañas, alinear como una tabla, unos debajos de otros, unos a continuación de los otros, puedes poner acciones (vínculos, imágenes o botones) dentro de la vista, asociar eventos a cada valor, en fin, todo lo que puedas necesitar para una aplicación de gestión. Hay aplicaciones complejas (como una gestión de Inventario, o de Personal, o Nóminas) sin una sola vista personalizada, sino todas generadas por OpenXava.
Puedes ver todas las posibilidades en:
http://openxava.wikispaces.com/view_es
¿O quizá si queremos hacer otro tipo de vistas, tenemos que hacerlo "por nuestra cuenta"?
Por tu cuenta siempre se puede hacer. Te puedes hacer la vista completa a mano, o parte de la vista, usando lo que OX llama editores. Miralo en:
http://openxava.wikispaces.com/customizing_es
¿Hasta qué punto tenemos control sobre los controladores (valga la redundancia)?
Los puedes escribir tú desde cero. De hecho el tipo de mantenimiento que hace OpenXava por defecto es solo una opción, tú puedes hacer tu propio estilo de CRUD, o tus propias acciones de imprimir. Normalmente, cuando haces una aplicación más o menos sería tienes que hacerte (o refinar el que OX tiene) tu propio CRUD, y los módulos principales suelen tener sus contraladores especificos. Es decir, el comportamiento de las aplicaciones OX es el que tu quieras.
Puedes ver más de los controladores aquí:
http://openxava.wikispaces.com/controllers_es
su alcance es limitado a un ámbito bastante determinado
Cierto. El ámbito es aplicaciones de gestión, si quieres hacer otro tipo de aplicaciones (un blog, un portal, un CMS, etc) OpenXava no va a dar buen resultado, pero si quieres hacer aplicaciones de facturación, contabilidad, gestión de almacen, etc. entonces es ideal.
Pero ten en cuenta que OpenXava no ha de ser una herramienta de todo o nada, puedes usar OpenXava para hacer parte de tu aplicación,y otras herramientas para hacer otras partes, y después integrarlo todo de una forma coherente con la misma apariencia y la misma gestión de usuarios usando un portal Java. Un fontanero, por ejemplo, no usa una herramienta universal, sino que tiene varias herramientas y usa la más apropiada en cada momento.
Hola Ricardo,
Lo que yo no logro ver con claridad es como se maneja la herencia, y si fuera capaz de manejarlo ¿qué tipo de interfaz de usuario generaría, una para cada clase no abstracta?.
OX soporta la herencia de JPA, solo tienes que definir una jerarquia de clases JPA y OpenXava las entenderá. Incluyendo superclases mapeadas y herencia entre entidades.
Por ejemplo si tienes algo así:
Persona <|---- Programador <|---- ProgramadorJava
Si vas al modo lista de personas, te saldrán en la lista todas la personas, incluyendo programadores y programadores Java, si el usuario escoge una persona plana le saldrá la interfáz gráfica por defecto para la persona, si escoge a un programador escoge la interfaz gráfica para el programador. La interfaz gráfica es la que hemos definido con la anotación @View para cada clase. Es decir, el usuario, disfruta de una especie de "polimorfismo visual".
Por otra parte, si vas al modo lista de programadores java solo vas a ver programadores Java.
Si te has descargado OpenXava, ve al proyecto OpenXavaTest y mira la jerarquia de herencia de la entidad Human, y después ejecuta el módulo Human, y verás más o menos como funciona.
Gracias por tus respuestas, Javier.
La verdad es que me plantea algunas dudas. Sobretodo por lo siguiente. ¿En qué se diferencia un blog o un CMS, de una aplicación de gestión de almacén? En mi modesta opinión en lo único que realmente se diferencia es en la apariencia, en la estructura visual con que se presenta la información.
Tomemos un blog. Tenemos una aplicación realmente simple de 'anotaciones', usuarios, comentarios y poco más. Añadamos puntuaciones, por ponerle algo más. Realmente, todo eso no son más que una serie de tablas relacionadas. Podríamos manejarlas viendo el listado de anotaciones, el de usuarios, el de comentarios. Podemos ver el detalle de una anotación igual que vemos el de un almacén. O todos los comentarios de una anotación, como vemos todos los productos de un almacén. Podemos añadir un comentario, borrarlo, modificarlo... igual que lo hacemos con un producto, con una cuenta bancaria o una factura.
Conceptualmente, al nivel del modelo, las operaciones son equivalentes.
¿Qué es lo que diferencia, entonces, a un blog? Realmente la diferencia está sobretodo en el interfaz. Y quizá un poco también en la lógica; pero no tanto.
La diferencia es que en un blog, en lugar de tener un interfaz tabular, la portada, por ejemplo, es un listado de "fichas" digamos. Vemos el título, el primer párrafo y el enlace a "Seguir leyendo" (la vista de detalle).
Si comentaba lo del ámbito es porque la impresión que me da no es tanto que se centre en un ámbito temático (aplicaciones para XXX, YYY, y ZZZ) sino lo decía en un sentido más funcional (aplicaciones que manejan tablas). ¿Qué diferencia realmente a esto de esto, de esto o de esto otro? Funcionalmente casi nada. La diferencia está en la presentación de la información. Es más, a veces ni siquiera en eso.
En fin, espero que te tomes esto como un comentario constructivo. OX me parece interesante, pero no termino de verlo suficientemente flexible. Quizá es que no se ha buscado la flexibilidad, claro. Viendo la historia de su origen desde luego parece que se pretendía generar un tipo (vuelvo a aclarar que no me refiero a un tema) de aplicación muy concreto.
De cualquier modo, y como decía al principio, muchas gracias por tus respuestas.
Hola Venkman,
¿En qué se diferencia un blog o un CMS, de una aplicación de gestión de almacén?
En mi modesta opinión en lo único que realmente se diferencia es en la apariencia, en la estructura visual con que se presenta la información.
Conceptualmente, al nivel del modelo, las operaciones son equivalentes.
Estoy de acuerdo.
De hecho, si haces tu blog con JPA puedes poner tu modelo en una aplicación OpenXava, y tendrás un blog hecho con OpenXava. Aunque puede que tenga un aspecto un tanto extraño.
Pero sí que puedes desarrollar un blog haciendo el modelo con POJOs y JPA, la interfaz gráfica de los módulos principales con FLEX, GWT, JSF, lo que más te guste, y todos los modulos de administración con OpenXava. Como te comento arriba puedes mezclar. Todas las aplicaciones OpenXava que yo conozco están hechas 100% con OpenXava, pero sé de usuario de OpenXava que usan esta técnica de mezclar para hacer sus aplicaciones.
o termino de verlo suficientemente flexible
Puedes pensar que cambias un poco de flexibilidad por productividad. Si te gusta la cocina puede que hagas tus propios pasteles con justo la forma y gusto ideal, pero no me negaras que los donuts están muy buenos, y no tienes que pasarte horas cocinando.
Hola,
Por estar en lado contrario, no hago aplicaciones de gestion sino puro web, te puedo decir que la diferencia que tu consideras "simplemente la interfaz" es algo mas que simplemente, y por eso OpenXava no entra a solucionartelo. En aplicaciones de Gestion es mas facil, lo cual no significa facil, generar automaticamente la interfaz, y por eso la generacion te cubre el 85-90% de tu aplicacion y el resto lo puedes perfilar con anotaciones, algunas extensiones etc.
Si utilizaras OpenXava para generar la interfaz de una aplicacion puro-web, no te cubriría apenas un % de la parte de la interfaz web, y para retocarlo tendrías que hacer muuuchas cochinadas. Y por eso no es adecuado. No OpenXava, si no ningun generador de la interfaz. Y en cuanto a la lógica, aunque parezca que basicamente es lo mismo, normalmente las operaciones "web" no se parecen a las operaciones de gestion, ya que no sueles actualizar "objetos del modelo" de golpe o consultar, si no que las operaciones suelen tener en cuenta bastantes cosas, actualizar unos datos de aqui y otros de allá etc. Por lo que la generacion es dificil.
No es ser poco flexible, es ceñirse al campo donde sabes que sacaras el maximo rendimiento de la herramienta. En ese sentido es "refrescante" ver un producto pensado para hacerlo bien en un caso concreto solucionando un tema, en vez de un super-vale-para-todo que despues queda cojo por todo.
S!
Que conste, GreenEyed, que no he dicho nada sobre que la interfaz sea simple. De todos modos, el problema que veo con lo que dices de "un producto pensado para hacerlo bien en un caso concreto solucionando un tema, en vez de un super-vale-para-todo" es que en la propia página de OX leo que "es más rápido desarrollar con OpenXava que con Ruby On Rails, Spring MVC, o cualquier otro marco de trabajo MVC".
Claro, leyendo eso, tiendo a pensar que tiene -al menos- el mismo alcance que RoR o SpringMVC o cualquier otro marco de trabajo de esos que llaman MVC.
Javier:
Muchas gracias por tu respuesta. De hecho se nota que has invertido mucho trabajo en la criatura. Felicitaciones.
Ricardo
Me gustaria poder probar OpenXava en profundidad para poder dar una opinion con fundamento. Y por lo q veo la mayoria opinan basados en su experiencia en lo demás pero en conjeturas sobre OpenXava. Creo q habria q seguir los links que da javier para poder dar opiniones más valiosas. Sin haber probado nada y solo habiendo visto los ejemplos de la web, me parece un proyecto muy intereante y útil aunq su campo sea solo el de gestión.
Hola,
Te he entendido, Venkman, no pensé que dijeras que era simple, era sólo por puntualizar para otro incauto lector que solo leyera ese trozo que supiera ese simplemente llevaba comillas. Y respecto a lo que dices de leer esas lineas, estoy de acuerdo contigo y ya expresé mis reparos de que podía entenderse así, asi que coincido. La "publicidad online" es complicada hoy en dia ;).
S!
Por si alguien no lo conocía, hay un proyecto llamado Crack en Google code parecido a OpenXava que utiliza jpa, jsf y facelets para la generación de pantallas tipo CRUD. ¿Alguien que lo conozca puede dar su opinión al respecto? Me interesa ya que estoy barajando la posibilidad de utilizar uno u otro en una nueva aplicación.
Jorge.
Por lo poco que he leido, OpenXava ¿es sólo para aplicaciones web?. Me gustaría probar algo parecido pero para aplicaciones de escritorio, porque ¿no se pierde mucho en rendimiento de una aplicación de escritorio a una web? Si no es así, es decir, sino se pierde tanto en rendimiento pues quizá me interesaría realizarla en web, ya que a la hora de actualizar y demás sería mas óptimo.
Si se pierde en rendimiento bastante y afecta a al tiempo de interacción con el usuario, no me interesa. Y en este caso, ¿no hay nada parecido a OpenXava pero para escritorio?
Un saludo y gracias por adelantado.
Hola, soy usuario de OpenXava y lo utilizo tanto para realizar pequeños servicios (portlets) embebidos en un portal, como para aplicaciones completas de gestión. En un 90% de los casos la interfaz que me permite dibujar OX con las anotaciones de la vista es perfecta. El resto lo puedo solventar, bien con la construcción de editores propios (es muy sencillo) o bien diseñándome mi propia vista para dicho módulo. El resultado final es que tras superar una curva de aprendizaje bastante moderada, se consigue una gran productividad con la flexibilidad de que puedes hilar más fino personalizándote casos más complejos en el aspecto visual.
Si tuviera que hacer un blog desde cero, la presentación de cara al visitante del blog no la haría con OX, sino que probablemente usaría alguna librería ajax y lo orientaría casi todo a un diseño web puro muy visual. Pero en cambio en 5 minutos podría construirme con OX la parte privada de administración.
Desde mi perspectiva, OX puede abarcar un proyecto de gestión convencional al 100%, pero en otro tipo de proyectos también puede venir bien para el rápido desarollo de algún módulo o sección.
Según tengo entendido hay previsiones de uso de ajax en futuras versiones, lo cual sin duda potenciará la interfaz visual y la experiencia del usuario... creo que son suficientes alicientes para probar OX y hacer un seguimiento al proyecto.
Un saludo y felicidades Javi.
Hola Anónimo del 21/03:
¿es sólo para aplicaciones web?
Sí. Aunque originalmente, antes de ser de código abierto, producia aplicaciones Swing (aplicaciones de escritorio) y durante un tiempo producia a partir del mismo fuente aplicaciones Swing y Web. Pero en la versión de código abierto no está presente el generador Swing, y de hecho nuestra tendencia ha sido sustituir las aplicaciones Swing por aplicaciones Web.
Futuras versiones de OpenXava tendrán otros tipos de interfaces gráficas, pero dificilmente Swing, mira la encuesta sobre esto en el sitio web de OpenXava y vota si quieres.
¿no se pierde mucho en rendimiento de una aplicación de escritorio a una web?
No. De hecho si tienes aplicaciones de escritorio Java necesitas ordenadores potentes en los clientes. Con aplicaciones web solo tienes que invertir en el servidor. Con un servidor potente y una red decente tienes un buen rendimiento. Con aplicaciones Swing has de cambiar todos los PC de la organización, recuerda que Java es todavía pesado. La sensación de rendimiento de una aplicación web puede ser muy buena, para empezar el arranque en una aplicación Swing puede costar bastante, mientras que una aplicación web está disponible en segundos.
Lo más importante es que con una aplicación web el cliente solo necesita tener un navegador instalado. Cuando quieres actualizar solo has de cambiar en el servidor y está disponible de forma inmediata a los usuarios (mucho más agil que JNLP). Cuando hay un problema toda la traza está en el servidor. Además tú siempre controlas la versión del sistema operativo y de la máquina virtual de Java en el servidor. Las aplicaciones de escritorio no son necesariamente más rápidas, y son más dificiles de mantener que las aplicaciones web.
Ya te digo, nuestras aplicaciones eran Swing y ahora son Web, y de ninguna manera volveriamos atrás. Te hablo desde el punto de vista del desarrollador.
Escribe tu comentario