Ir al contenido principal

Segunda reunión JUG CR

Breve resumen.

Nuestra segunda reunión ha sido todo un éxito!

El expositor, Carlos Zuñiga; inicio practicamente puntual a eso de las 6 y media, después de una breve bienvenida, empieza la exposición comentando las características principales del lenguaje Groovy:

Lenguaje Script y Dinámico (Hot deployment) principalmente orientado a programadores Java, Groovy posee una compatibilidad al 100% con clases Java, pues corre directamente en el Virtual Machine de Java, lo que quiere decir que puede tanto Groovy usar clases Java como Java clases Groovy.

Seguidamente nos comenta de la herramienta Groovy Console, nos señala que es una herramienta que nos permite correr segmentos de código en un archivo Groovy de forma dinámica, con solo seleccionarlo. Carlos continua con una serie de ejemplos, a medida va afinando puntería con la ya mencionada consola de Groovy.

Entre varias cosas, nos muestra el funcionamiento de los GString (Tangas en Ingles y nos señala que el nombre fue hecho a propósito y con algo de sátira o humor, en efecto).

También nos muestra los Heredocs, comenta el duck typing, el autoboxing y la recalca el hecho que Groovy sea full orientado a objetos, pues hasta los primitivos a diferencia de Java, son objetos.

Por ultimo nos da una introducción al manejo de collecciones: Listas, Mapas, Vectores para finalizar con algunos buenos ejemplos del uso de Closures.

Una vez cocinado los closures y de un pequeño debate entre su servidor y Carlos, entramos en un receso acompañado de pan de Ajo y deliciosa pizza, patrocinada por BackCountry, ehh todo el anuncio.

Despues del intermedio, volvemos al auditorio de la ULatina para iniciar con Grails; Carlos retoma la charla, comentando que Grails es la versión de Rails para Groovy, es un tool/framework para hacer aplicaciones Web, utiliza la convención sobre configuración, utiliza Ant para la construcción (en realidad es GANT y se parece demasiado a Maven, osea reinventaron la rueda), usa SpringMVC y Flow para el control, GSP (Groovy Server Pages para la presentación), Hibernate para la persistencia, entre otras cosas.

La forma de funcionar, resulta muy similar a un generador de código, en particular a OpenXava, en el ultimo se anotan los beans con JPA y se genera todo un IMEC, basado en porlet's por defecto, en Grails se espera simplemente una estructura estándar de paquetes y por convención se hacen mapeos basados en mapas asociativos en variables estáticas que deben llevar cierto nombre.

Por ultimo demuestra el Hot deploy con el cual cuenta Grails y de las ventajas del mismo, así como el ejemplo, además nos da por enterados de una serie de plugins para mejorar la interface, entrelazarse con otros sistemas, tener mas control y extender Grails.

La charla termina con un Set de preguntas, en gran parte hechas por su servidor, ahora desde mi humilde opinión y mi completa ignorancia, claro y con mas calma, mis impresiones.

1) Groovy es Java 2, el 85% de las características que tiene el lenguaje, simplemente excelentes y además son cosas que ya no se le pueden agregar o no deberían, a la actual arquitectura de Java; un claro ejemplo son los closures; espero que todos los ángeles y demonios por igual caigan a Sun y al Java Community, para evitar este sacrilegio, de lo contrario vamos a tener una librería util, mas demoniaca que nunca, con mas parches de los que ya tienen a raíz de las anotaciones, enumeraciones y templates (generics a.k.a) introducidos en la versión 5, no confundan, me cuadran, pero el lenguajes no fue pensado para ellas, al menos no, para anotaciones y generics, por ultimo diré que Groovy fue considerado y solicitado por el Java Community como un Fork de Java, al cual algunos le apodan Java 2 y con mucha razón, pues este es un super conjunto de Java, como en su momento lo fue C++ de C.

2) Programador Java que quiera conservar su trabajo como desarrollador en esta área del conocimiento, debe aprender Groovy, pues en el futuro la programacion Java apoyada en ciertos segmentos por scripting, fijo va a ser la moda si no la regla.

3) Para seguir en el futuro, Groovy con sus inconvenientes de desempeño y todo, sera el lenguaje VM mas usado, las cosas que realmente necesitemos "perfomance" seran en Java, asi como hace algunos años, se escalaba el desempeño a traves de JNI y C++, e igual siempre queda ese tercer nivel para lograr aun mejores resultados o cuando la plataforma Java necesita cosas muy especificas del sistema operativo en donde es huesped.

4) Grails: pienso que este enfoque aun esta muy en pañales e inclusive me atrevo a decir que Grails, puede ser un buen intento de algo que fracasará y en el futuro evolucionara a algo mas intermedio, es decir facil de usar pero mas flexible y proporcionando mas control, asi como le sucedio a los EJB version 2, practicamente muertos y relevados por JPA y EJB 3 que es una version super Pojo y sin tanta interface.

Otro punto bajo recae en el hecho que Grails utiliza una serie de framework's que aunque muy buenos y todo, primero no son estandar (aunque no tengo ningun problema con eso ;) y segundo no estoy del todo seguro de la facilidad de meter por ejemplo otro framework de persistencia (aunque por estar con Spring, de fijo se puede, aunque sea fuera del caminito de oro), digamos iBatis y por que iBatis; con base en los comentarios hechos por la gente de LinkedIn, por solo poner un ejemplo de escalabilidad, ellos no usan un ORM por que simplemente no tienen sentido, usan JDBC directamente con unas clasesillas que les apoyan en lo repetitivos, supongo algo como dbutils de common apache, ya que ellos tienen la base de datos distribuida, osea una tabla en una base de datos, otra en otra base de datos, etc; Hibernate hasta donde yo se, no puede manejar este tipo de cosas pues aqui no existiría integridad referencial, para iBatis por el contrario, es una situación perfecta; bases de datos no normales y nefastas, con select moustrosos, venga, a iBatis le vale un comino, simplemente toma el resultado de la consulta y juazzzz, te retorna un bean, si bien no es un ProxyBean y el manejo de transacciones no es el mismo, es mil veces mejor que JDBC y muy util para diferentes escenarios (Notese la aficcion a iBatis, creo que soy un psicopata del control en mis app's me gusta saber que pasa y como :). Y asi pienso que se pueden sacar muchos mas escenarios donde Grails se queda corto, claro no le quito merito, la velocidad de desarrollo y demas, es super cool, GORM y sus campos "buscables", super cool, sin embargo aun permanezco algo retraido a este tipo de soluciones, genera todo. Si me preguntan, Grails te ofrece una solución al estilo .Net, cero opciones, pero funca y rapido, pero con restricciones, en el caso por ejemplo de ASP, no se puede tener mas de un formulario, entre otro monton de pegas, la diferencia es que Grails usa un pseudo Java para implementarlo todo. Jajaja, espero que no me llamen ateo o me acusen de sacrilegio por eso, pero al chile, no quiero ver clientes pidiendome hacer un facebook con Grails en 2 meses.

5) Como Carlos menciono, los test cases son un escenario bastante bueno para introducir Groovy, estoy de acuerdo, pero como comente en el cuarto punto, Grails si se pasa de esa raya. Un enfoque donde los DAOS y Servicios sean Java, digamos expuestos por XFixe o Axis, etc y un Aplicativo MVC, donde Actiones de Struts inyectadas por Spring, sean Script's Groovy o Jython, Scala, etc; con Hot Deployment, seria super cool, de hecho yo lo hago asi y si bien es cierto, el IDE aun le falta bastante y el classpath al compilar a veces queda super perdido, la velocidad para probar y hacer cambios lo justifica.

En resumen, muy buena confe y aguante al grupo de Java CR.

Nos vemos en la proxima!

Saludos,
J

Comentarios

Mariocr (Uro) dijo…
Di men que te diré... No entendí nada, jeje...

Pero weno, q dicha q le fue bien...

Bendiciones
Alonso dijo…
Lástima q no pude asistir, soy un poco nuevo en groovy estoy de acuerdo q puede llegar a ser muy poderoso, al igual q otras de tus conclusiones... en mi caso yo soy del que intento meter en mis aplicaciones frameworks que faciliten el proceso de desarrollo (aunque pierda un poco el control de cómo se hacen las cosas) siempre y cuando me retorne algo esperado y manejable.. pero son gustos :D En general muy buen blog locaso
jsanca dijo…
Yo creo que eso depende de la app. Digamos si es un app de gestion administrativa donde los detalles de interface y el desempeño no son importantes, pues vale, pero si es un app publico, pues hay que pensarselo mejor. En cuanto al asunto de usar cosas que faciliten el desarrollo, totalmente de acuerdo, pero no hay que abusar, o caso se deberia usar access en lugar de MySQL o Oracle, solo por que es mas facil?
Por ultimo agradecer tus comentarios y deberias hacer el intento de ir a las reuniones del grupo, son realmente muy buenas.
Mario León dijo…
Pues a mi me parecio tambien una herramienta bastante util para un desarrollo RAD (hablo de grails, por aquello).

Concuerdo con jsanca, cuando dice que le gusta tener el control, resulta que si perdemos eso en las aplicaciones, despues no vamos a saber donde modificar o cambiar algo para incrementar el performance, o mejores X o Y caracteristica.

En cualquier caso, creo tambien que todavia esta muy en pañales, como bien lo acoto el colega Carlos Zuñiga, RoR tiene todavia más funcionalidad que todavia a Grails le falta.

Excelente conferencia, y aguante el CRJUG
Gabriel Solano dijo…
Estuvo interesante la parte de la conferencia en la que pude estar presente. De fijo sigo yendo a las reuniones del JUG. Hay que ver al Loco desenvolverse en una conferencia frente a una audiencia sedienta de conocimientos Java ;)
Anónimo dijo…
mae hoy estuvo masomenos buena lo de JSF y IceFAces, aveces un poco aburrida pero para los q menos sabiamos de JSF fue mejor q para los otros.

Por cierto es mejor las convenciones y usar las varas mas comunes sin andarle metiendo tantas personalizaciones ni cambios de mierda, amenos de q estes realmente trabajando en algo de acceso masivo o algo asi que ocupe varas demasiado excepcionales, es mejor mantener las varas faciles de dar mantenimiento y de que cualquier soplas lo entienda luego, que hacer un despiche y compilar tus propios frameworks con cambios o extensiones, para lograr un 9.5% mas de eficiencia, pero q complica la jugada un 80%.
esa es mi humilde opinion de programador no "super genio" .

Entradas más populares de este blog

Validaciones con HTML5 sin necesidad de form.submit

Como parte de HTML5 existe la posibilidad de agregar información a los inputs de un form, para realizar validaciones; podemos indicar si queremos que sea requerido, con el tipo de datos; number, email, etc restringimos los valores que pueden ser agregados, podemos usar alguna mascara para validaciones, colocar mensajes de error custom, etc (en la red existen muchos ejemplos acerca de como customizar formularios). Ahora bien pongamos en contexto, tengo un formulario como este: <form name="managerForm"  id="managerForm">              <p>                  Name:                 <input id="managerNameText" required="required" placeholder="Write here the new manager name" size="40"/>              </p>             <p>                 Email:                 <input id="emailText" required="required" placeholder="myemail@myserver.com" type="email" />

Pasos para remover Postgresql 8.3 en MAC OS

Tomado de: http://forums.enterprisedb.com/posts/list/1437.page In Mac OSX: (Assuming Default Locations) Via uninstaller: 1) In the installation directory, there will be a uninstall-postgresql.app file will be there, executing (double clicking) that will uninstall the postgresql installation. Manual Uninstallation: 1) Stop the server sudo /sbin/SystemStarter stop postgresql-8.3 2) Remove menu shortcuts: sudo rm -rf /Applications/PostgreSQL 8.3 3) Remove the ini file sudo rm -rf /etc/postgres-reg.ini 4) Removing Startup Items sudo rm -rf /Library/StartupItems/postgresql-8.3 5) Remove the data and installed files sudo rm -rf /Library/PostgreSQL/8.3 6) Delete the user postgres sudo dscl . delete /users/postgres

Inventario anual de bebidas

Hola gente, Solo quería compartir mi inventario anual de bebidas (así conocer gustos), excluyendo algunas cervecillas que tengo por ahí guardadas, este es mi inventario: Ron: Flor de Cana 1 botella 5 anos. 2 botellas 7 anos una pacha 7 anos 2 botellas 12 anos 1 botella 18 anos Ron Zacapa 15 anos Centenario pachita 7 anos Centanario pachita 12 anos Bacardi limon Bacardi Razz Ron abuelo 7 anos Bacardi superior 1862 Ron Boltran XL Ron Centenario Garrafon Ron Jamaica Appleton 7 anos Ron Jamaica Appleton 12 anos (muchisimas gracias a Mayra :) Capitan Morgan Rum Jumbie, coconnut splash Ron coconut Malibu Ron Tequila Milagro Silver (muchisimas gracias a Pablito :) Sauza Gold Sauza Reposado Don Julio Reposado Vino Luigi Borer Malbec 2006 Casillero del Diablo, Caberut Sauviguon 2009 Vodka 2 botellas smirnoff y una smirnoff con sabor cranberry Cremas y otro licores Cahuita pacha Amaretto Barinet Licor de menta Licor de agave Rancho Escondido Bayleys 2 botellas (muchisimas gracias a Brian B :) Li