"Todo en la vida tiene ventajas y desventajas" es una frase que he visto cumplirse con una rigurosidad casi demoníaca, y la tecnología no es la excepción a ésto:.Net por ejemplo tiene bases sólidas para afirmar que tanto la curva de aprendizaje como el tiempo que emplean los programadores desarrollando software usando ésta tecnología es mucho menor que el que se requeriría en java, pero ¿a qué costo? ¡La Robustez!; de ahí que al momento de desarrollar aplicaciones empresariales de gran escala, Java defintivamente gana la contienda, y por citar un ejemplo, la mayoría de aplicaciones bancarias a nivel mundial usan Java, por la fiabilidad, robustez y estabilidad que ésta plataforma brinda, PERO, si hablamos de aplicaciones de escritorio desarrolladas en java, pese a ser robustas, el mantenimiento y tiempo de desarrollo en sí de las mismas es para desanimar a cualquier desarrollador, de hecho no conozco a nadie que me haya dicho: "!Qué bién tengo que desarrollar una aplicación de escritorio en Java...yuuuju!!!" jejeje.
Claro está que en la actualidad, se ha hecho común el "desarrollo rápido" y por tal motivo han emergido tecnologías aluscinantes que hacen que la experiencia de desarrollar software sea tremendamente productiva -y divertida-; Ruby On Rails es un gran ejemplo que revolucionó la industria dando un giro completamente radical al cómo los desarrolladores estabamos a costumbrados a hacer software, recuerdo que cuando aprendí Ruby On Rails me di cuenta que no solo era más productivo sino que la sonrisa no se iba de mi rostro; es más, en aquel entonces, entre quienes me preguntaban sobre Ruby popularicé la frase "Ruby On rails es una de las tecnologías más divertidas que he usado en mi vida", pues el paradigma de desarrollo que usa Ruby on Rails esta enfocado en la productividad desde el primer momento. Tiempo después bajo esta misma concepción emergió Grails como una solución de desarrollo rápido pero en ambiente Java, y de Grails no puedo sino hablar maravillas, pues sigue la misma línea productivo/divertido de Ruby On Rails pero usando por atrás tecnologías poderosísimas como: Spring, Hibernate, SiteMesh, etc. y al contar con un sin número de plugins, ha hecho del desarrollo de una aplicación web Java un día de fiesta.
Pero ¿qué ha pasado con las aplicaciones de escritorio en Java? ¿existe alguna solución que aminore el tiempo de desarrollo y por ende la frustración de los desarrolladores? Respuesta: existen frameworks como OpenSwing que tratan de hacer del desarrollo de las mismas una tarea más simple, pero, la brecha grandisima entre Desarrollo de Aplicaciones de Escritorio en Java y Desarrollo Rápido seguía existiendo... Pero traigo buenas noticias: ¡Nació Griffon!.
Griffon es un framework creado precisamente por gente del proyecto Groovy que al ver esta brecha grande en las aplicaciones de escritorio java, crearon una solución que basada en el mismo paradigma de Grails (pero para aplicaciones de escritorio), en otras palabras desarrollo ultra rápido para crear Desktop Aplications en Java; de hecho, a Griffon podemos verlo como un "Grails para aplicaciones de escritorio", pues lleva consigo los mismos conceptos de convención sobre configuración, DRY (optimizando, eliminando código repetitivo), e incluso lleva inherente el patrón MVC que habiamos visto en ambiente web pero ahora presente en aplicaciones de escritorio; una palabra: wow!
Griffon por ende usa el lenguaje Groovy (un lenguaje dinámico para la máquina virtual Java), lo cual podría generar ciertos desacuerdos entre aquellos puristas de la JVM que están preocupados por rendimiento, pero como lo dije inicialmente todo lleva ventajas y desventajas, pero, bajo mi perspectiva, si hablamos de rendimiento, no creo que el impacto en el rendimiento de un lenguaje dinámico sea el mismo en un ambiente web que en una aplicacion de escritorio (más aún con el hardware cada vez más potente que va apareciendo), sin embargo, animo a que sobre la mesa de opciones para su próximo proyecto de escritorio ya no solo estén: Swing, AWT, SWT... sino que Griffon sea tomado también en cuenta como una poderosísima alternativa pues puede ser una solución muy interesante cuando exista urgencia en el tiempo de desarrollo.
NOTA: (Tomada de un comentario en twitter de @aalmiray -lider del proyecto Griffon-) "Griffon soporta JavaFX también, así como 8 distintos lenguajes de la JVM, no solo Groovy"
Como ferviente admirador del proyecto Grails, afirmo sin temor a equivocarme, que si la misma gente que creó Groovy está tras el proyecto Griffon, hay toda certeza que será una maravilla absoluta, motivo por el cual me fue imposible el no escribir sobre Griffon hoy.
De igual manera como en Grails, cada día aparecen más plugins que amplían el rango de acción de Griffon: Para interaccion con bases de datos, programación 3D, Networking, Testing, Charts, Gráficos, Look & Feel, etc.
La verdad, Griffon me ha parecido extremadamnte poderoso, así que este post sin duda no será el único que escriba acerca de él, planeo posteriores posts sobre Griffon pero desde una visión más práctica ;)
Literatura recomendada: Griffon in Action ;)
Incluyo una muy interesante charla acerca de Griffon dictada en México, por @aalmiray