Buscar
Social
Ofertas laborales ES
sábado
feb232008

Haciendo un tetris en JavaFX

En lo que promete ser el primero de una serie, Jim Weaver nos presenta en su blog el primer paso en la creación de un juego de Tetris en JavaFX.

Es un proyecto sencillo, pero interesante para quienes quieran empezar a interesarse por JavaFX y ver sus posibilidades. Como comenta, la idea será ir añadiendo detalles y obteniendo un resultado más pulido a lo largo de próximos artículos. Y para quien quiera más, todo su blog está lleno de comentarios y enlaces interesantes.

sábado
feb232008

¿Cómo es tu proceso de desarrollo?

Por darle un poco un cambio a las noticias y hacer una un poco más participativa, gracias a una charla que tuve hace poco con un amigo, se me ocurrió plantear esta pregunta para compartir entre nosotros nuestros procedimientos y ver si podemos aprender unos de otros.
El tema es, como dice el título "¿Cómo es tu proceso de desarrollo?" Con esto me refiero a explicar que creas tu modelo en Hibernate y con X plugin te crea la BDD, luego usas Y para generar codigo, lo empaquetas todo en un rar y el IDE te lo despliega solo en Z app. server... esas cosas.

Ojo, la idea es mostrar como lo hace cada uno y si se puede, razonado, no una competición de egos de yo lo hago mejor y lo tuyo es un asco. Los comentarios que vayan por ahi durarán lo que tarde en verlos.

En mi caso, normalmente del mini-analisis que me dan, a veces puedo hablar yo mismo con los futuros usuarios y hacer algo más serio, a veces no, empiezo haciendo una maqueta HTML y modelando la BDD relacional o estudiandola si ya existe. Si la BDD es nueva, suelo hacerme el esquema en HSQLDB para desarrollar en local sin problemas, antes de pedir, en caso necesario, que me monten todo el sarao en las "BDD corporativas".

Voy refinando la interfaz con el usuario, todo lo que puedo cuando hay un usuario definido y si no entre nosotros, que remedio. Para eso la Web Developer Extension y el FireFox van de coña, puediendo cambiar CSS "on-the-fly".

Del modelo relacional tenermos unas utilidades que te generan clases Hibernate y utilidades para leer los parametros del request, generar XML a partir de las clases, etc. Si la BDD ya existe o no se adapta bien a un modelo OO, entonces desde hace poco tiro por scripts Groovy, que más adelante puedo compilar o cambiar por clases con JDBC puro. A veces tambien puede tocar hacer la logica en PLSQL si se comparte con otros modulos en ese lenguaje.

Al mismo tiempo que desarollo la lógica usando las clases o los scripts, la maqueta HTML se transforma en la capa de vista, usando FreeMarker o XSLT.

El desarrollo lo hago sin poner mis clases en .war o .jar, ya que usando Java 6 así apenas tengo que re-iniciar el contexto, lo cual me permite ganar mucho tiempo que se pierde con el servidor de aplicaciones p'arriba, p'abajo... con Java 6 y todo desplegado, las clases se recargan solas en muchos casos y si no el contexto reinicia solo, todo lo demas es actualizable en ejecución, la vista, la configuración del framework, WebLEAF,... así que reinicios del contexto, cuando las clases ya estan creadas, pocos.

Además, el servidor de aplicaciones, Resin, lo ejecuto fuera del IDE, Eclipse, para que no interfieran y se vuelvan más pesados. Las aplicaciones se compilan y despliegan con Ant, como mínimo, aunque despues nos montamos el IDE para que nos haga partes del proceso, como la compilación, sin tener que ejecutar el Ant a cada momento. Para depurar uso los logs, que redirijo a consola y en produccion a un fichero por aplicacion.

El desarrollo se hace en la maquina de cada desarrollador, la BDD puede ser remota dependiendo del caso, y luego a través de control de versiones y a través de una persona, pasamos los cambios al servidor de produccion.

A veces, "time permitting" que dicen los ingleses, usamos theGrinder para hacer pruebas de estrés y YourKit para encontrar problemas de memoria etc., aunque como siempre usamos el mismo framework y librerias parecidas, no suele haber sorpresas y si los culpables habituales.

En mi caso, las aplicaciones suelen ser pequeñas-medianas, el codigo ha de ser mantenible de forma muy facil por el resto de miembros del equipo (poca gente-muchas aplicaciones) y nos gusta no tener que reiniciar mucho el contexto :).

¡Ahora os toca a vosotros!

Nota: No es que se me haya ido la pinza, como community manager de la comunidad JavaTools@java.net, es un tema que interesa y sobre el que creo que se puede compartir mucho conocimiento y aprender unos de otros.
viernes
feb222008

TempoBEA: Blog de Bea en Castellano

La empresa Zumo de Blogs ha anunciado el nuevo blog empresarial de BEA Systems: TempoBEA que servirá para ser su canal de comunicación con el mundo de desarrolladores hispanos. De acuerdo al comunicado:

"En TempoBEA hablaremos de arquitecturas orientadas a servicios (SOA), gestión de procesos de negocio (BPM), servidores de transacciones, virtualización de hardware y demás conceptos tecnológicos de este mercado, aunque intentaremos hacerlo de una forma simplificada, utilizando un lenguaje claro y sencillo para poder llegar a un público más amplio. "

Por ahora llevan ya varios posts explicando sus estrategias SOA y productos de su portafolio. Además aprovechan para anunciar para este 12 y 13 de marzo en Madrid y Barcelona el tour BPM & ESB.

Me gusta este tipo de estrategias por parte de las empresas para acercarse al público hispano y resulta interesante que a pesar de que BEA tenga su red de blogs en dev2dev, haya decidido contratar a una empresa hispana para su blog en castellano. Espero que otras empresas java sigan sus pasos.

jueves
feb212008

YUI 2.5: suite de componentes javascript de Yahoo!

Yahoo! ha publicado la nueva versión de su suite de componentes javascript. En esta nueva edición se incluyen 6 componentes nuevos:

Layout Manager, Uploader (motor para subir multiples archivos usando Flash y JavaScript), Resize Utility(Utilidad para cambiar el tamaño de una imagen), ImageCropper, Cookie Utility y ProfilerViewer Control.

De entre ellos, el que más me gustó es el Uploader ya que resuelve un problema recurrente e inherente a HTTP: el de que solo se puede hacer upload de un fichero a la vez. Aquí una imagen del componente en cuestión:

uploader

Esta librería cumple 2 años este mes y el 26 de febrero se prepara una fiesta en California para celebrarlo. Si quieres un ejemplo completo de las interfaces que es posible lograr con YUI, Dav Glass ha preparado uno para esta versión 2.5. 

jueves
feb212008

Comparativa de servidores JEE 5

A menudo hemos publicado comparativas entre los servidores JEE existentes en el mercado, sin embargo ya había pasado un tiempo sin una nueva. Lo interesante de esta que aquí ponemos es que no la hizo ninguna empresa, aunque el autor Jonathan Campbell publica en los weblogs de Sun me parece que no tiene ninguna relación laboral con ellos.

En el pasado, Campbell había comparado los servidores web java open source (enlace al artículo), y ahora se avoca a comparar los servidores que cumplen la especificación JEE 5 más usados en el mercado: Glassfish 2.1, JBoss 4.X, WebSphere Community Edition 2 (Geronimo) y BEA Weblogic 10.

Campbell hizo una matriz comparativa con las características de los servidores:

 

Feature Description

Glassfish 2.1

JBoss 4.x

WebSphere 2.0

WebLogic 10

Java EE 5 compliance

Yes

Partial

Yes

Yes

JSP 2.1 and Servlet 2.5 capable

Yes

Yes

Yes

Yes

EJB 3.0 capable

Yes

Yes

Yes

Yes

JavaServer Faces 1.2 support

Yes

Yes

Yes

Yes

Custom plug-in support

Yes

Yes

Yes

Yes

Business-rules engine support

Yes

Available

Available

Available

Hibernate 3.x support

Available

Yes

Available

Available

JBoss Seam support

Available

Yes

Yes

Available

Clustering support

Yes

Yes

Yes

Yes

JAX-WS / JAX-B 2.x

Yes

Available

Yes

Yes

Eclipse IDE connector support

Yes

Yes

Yes

Yes

Ease of operation rating 1 to 10

7

6

9

6


Y también un bechmark usando jRealBench que utiliza un war para simular una carga a una aplicación web. En este caso, se simulo una carga de 10 000 sesiones concurrentes. La siguiente gráfica muestra los resultados para dos casos, el de la izquierda para la creación de la sesión, es decir, cuando el usuario entra por primera vez a la aplicación. La de la derecha es cuando el usuario hace nuevas peticiones una vez ha iniciado sesión (como cambiar de página).

chartjee

Como puedes ver los resultados al menos para mi, resultaron sorprendentes. Geronimo es por bastante margen el servidor jee más rapido del mercado, de acuerdo a Campbell, el hecho de usar Tomcat 6 como contenedor de servlets ayuda mucho a ello. Glassfish 2 es el segundo, JBoss 4 le sigue y al último WebLogic 10.

Pues bien, como siempre ocurre en estos casos las empresas no que quedaron en primero seguramente publicarán sus propios benchmarks para demostrar que en los casos X y Z el suyo es más rápido. De cualquier forma, esta comparativa es interesante pero no creo que sirva demasiado para elegir un servidor jee, ya que jRealBench prueba solamente el contenedor web y no despliega EJB ni hace uso de otros servicios como servicios web, mensajería con JMS, replicación en cluster, etc.