Resumen 12ma. Reunión de SpringHispano.org, Grails.org.mx y JavaMexico.org


Murphy es mi pastor, ¿qué podría salir mal?. El fin del 2009 y el comienzo de 2010 comenzaron con muchas liberaciones, mucho nuevo software (constatado en los podcasts de Springhispano temporada 2 episodio 5, episodio 6 y en el podcast de grails.org.mx temporada 1 episodio 3); mucha abundancia, mucha indignación por brotes de violencia contra un muy famoso futbolista, contra estudiantes y gente no tan famosa pero sobre todo con mucha energía por parte de los administradores de springhispano.org y grails.org.mx, y como cierre de este agitado mes, tuvo lugar la reunión de springhispano.org, grails.org.mx y javamexico.org y créanme, ese soleado sábado 30 de enero de 2010, sobretodo para los organizadores, fue un evento que por mucho, mucho tiempo no olvidarán. ¿por qué? permítanme platicarles.

El sábado amanecía radiante. Preparé mis cosas, alisté a mis únicos entes femeninos que me obedecen ciegamente (léase mis computadoras), y con bastante antelación (2 horas) emprendí mi viaje hacia el lugar. Esta ocasión sería diferente a las anteriores, pues estaría dirigiendo una charla ante la comunidad que me abrió sus brazos hace 10 meses y me permitió aprender de un nuevo universo con infinitas posibilidades, y debo reconocerlo, cambió mi manera de ver la vida, mi criterio para abordar las oportunidades y retos en la vida, y me dio el privilegio de conocer a valiosísimas personas y todavía mejores seres humanos. La reunión comenzó, por mi culpa, 35 minutos después de lo pactado. Pedí disculpas (con la cara cayéndoseme de la vergüenza) y proseguí con el tema que me permitieron abordar: Java 2010: presente, limites y futuro.

La charla inició con un poco de historia a manera de introducción, de cómo inició Java, su inclusión en el Navigator 2.0 de Netscape, y se habló grosso modo del plan inicial de sus creadores: el primer TiVo, dispositivos portátiles y páginas Web. Enseguida, de cómo se abrió camino a finales de los noventas y qué virtudes posicionaron al lenguaje como el de mayor uso en la primer década del siglo XXI, la apertura de su código y la enorme diversificación de su uso. Los asistentes tenían un mayor conocimiento de esa historia, por eso fue muy puntual la introducción.

El primer apartado fue preguntarle a los asistentes qué significa Java para ellos, y las respuestas, cuantiosas: el medio de subsistir, de pagar el ancho de banda, de abrirse paso en el mundo laboral, el de poder expresar sus habilidades tecnológicas de manera artística (porque no sólo se requiere técnica y tecnología para usarlo; en serio, es un arte), y de manera general, cuánto el lenguaje ha hecho en sus vidas profesionales y personales, impulsado no tanto por el lenguaje en sí, sino por todas las herramientas, Frameworks, agregados, plataformas y demás etcéteras que permiten desarrollar ágilmente, dinámicamente, por objetos y por aspectos, adaptando y adaptándose a la flexibilidad y a la rigidez según convenga o no quede de otra. Fue motivante escuchar cuánto cariño, pasión y aliento dan a su labor. Esta participación fue muy nutrida, y permitió que los noveles pudieran escuchar experiencias y homogeneizar los perfiles para poder hablar de los proyectos a presentar y sus ópticas hacia Java.

Se inició con JNode, un sistema operativo escrito en Java en prácticamente su totalidad. Se habló de sus inicios, de su objetivo: una máquina virtual (VM) y un sistema operativo (SO) en un mismo paquete, y de cómo se compone, en no muchas palabras. La administración de memoria, de IRQs, de puertos de entrada y salida, de controladores de dispositivo, de sistemas de archivo, de la GUI y la máquina virtual hechos en Java. Sólo el arranque y un nanonúcleo están escritos en ensamblador (lo cual representa muy poquito código en comparación).

Se habló de cómo se nombran los paquetes comunes que arrancan la VM y el SO, del espacio único de memoria plano (es decir, no tiene memoria virtual), compilación “al vuelo”, sin intérprete, el estado de desarrollo en enero de 2010 y que todos los componentes son agregados (plugins), incluyendo la VM y el Framework, inspirados por los plugins de Eclipse.

Se mostró la definición XML de un plugin y el esquema básico de diseño de un controlador de dispositivo, la manera de cómo reconoce los dispositivos y publica en el administrador de dispositivos la API con los recursos y posibilidades de cada dispositivo en específico. Se mostraron pantallas (porque muy tarde me di cuenta que se quedó en el camino la portátil con JNode cargado) y finalmente qué beneficios aporta Java al proyecto, como el enlace dinámico, el tipado seguro, la seguridad y las soberbias herramientas de desarrollo. Terminando el apartado, se invitó a los presentes a visitar la página Web del proyecto (http://www.jnode.org/) y de así desearlo, unirse a su desarrollo.

Enseguida, se expuso a LWJGL: una API Java ligera que integra una API uniforme para crear juegos de calidad comercial en Java. Proporciona bibliotecas multiplataforma de alto rendimiento: OpenGL para gráficos 3D, OpenAL para sonido 3D, DevIL (antes OpenIL) para imágenes, FMOD para audio multiplataforma, controladores para joysticks, gamepads y volantes entre otros, todo en una licencia BSD.

LWJGL es muy veloz, comprueba hardware, elimina métodos no usados para aligerar y evitar complejidad (sólo tiene lo necesario), es muy pequeño, no usa punteros y se puede instalar en su IDE de preferencia. Corre en M$ Window$, MacO$ X y GNU/Linux.

Para verlo en acción, videos de algunos de los proyectos enlistados en la página de desarrollo mostraron las capacidades de la biblioteca. En la página http://www.lwjgl.org/demos.php hay demos categorizados para desentrañar cada una de las características ofrecidas por la biblioteca. Para mayor información, visite http://www.lwjgl.org/ y compruebe que no es fácil, pero es sencilla de usar.

Acto seguido, se presentó Apache Harmony (http://harmony.apache.org/): una implementación de Java SE de fuente abierta, bajo la licencia Apache 2.0. Se habló de sus inicios para unir a todos los desarrolladores de implementaciones Java libres, de la decisión de escribir todo desde cero (por licencias), la relación de Apache y Sun en proyectos Java y el caso particular de Harmony y sus problemas para obtener la licencia del Kit de Compatibilidad de Tecnología (TCK) que Sun requiere por licencia de especificación, de la postura de Apache ante la presunta violación del Acuerdo de Participación de la Especificación Java por parte de Sun y sus desavenencias en especificaciones posteriores. Para cerrar el acápite, se habla de los detractores que ponen en tela de juicio incluso el lugar de Harmony en la comunidad, y aún así, la posición de Apache para continuar con el proyecto.

El último apartado fue una invitación a los participantes para dar su opinión respecto al futuro de Java. Se dieron estadísticas sobre el uso de Java en 2010 y el papel del surgimiento de tantos proyectos alrededor de Java y su VM para robustecer a Java. Se habló de las especulaciones que muchos hicieron por las distintas políticas de proyectos de Java por parte de Oracle y con las noticias publicadas en Springhispano.org, grails.org.mx y javamexico.org se instó a los interlocutores a aventurarse a hacer apuestas. Hubo muchas opiniones al respecto. Hubo quien dijo que se abandonaría al lenguaje, que se volvería el COBOL del siglo XXI, que se harían implementaciones y "forks", y hasta quien llegó a colocar a groovy como el nuevo líder, pues se destacó que prácticamente a nadie le ha importado la nueva especificación de Java 6, pues ahora desarrollan usando otras herramientas complementarias. Con todo ello es muy difícil, pero no imposible, que Oracle pueda mover el futuro, dijeron algunos, y otros no se vieron tan optimistas. ¿Cuál será la verdad? Sólo el tiempo lo dirá.



El intermedio fue ampliamente comentado, y hubo oportunidad de conocer a gente nueva y, virtud de haber hablado acerca de las varias experiencias personales, de compartir anécdotas, comparar y constatar cuán símiles situaciones se pueden presentar en un mundo de tanta gama de matices. Y la segunda parte, seguía sin llegar. Enrique Díaz, el segundo expositor, seguía sin aparecer, y era hora de proseguir con la función. Hubo una pequeña intervención, encabezada por el buen José Juan Reyes (@neodevelop en twitter). De ella hablaré enseguida.



Como preámbulo a la plática de Android, unos (bueno, bastantes) minutos se dedicaron al avance de mundojava. En la reunión de diciembre se había hablado del proyecto para construir una comunidad virtual en 3D. Pues se habló de los avances en la física, en su ingeniería y en menor medida del modelado. Puntos muy específicos sobre las colisiones que estaban siendo solucionados, al tiempo que más curiosidades aparecían. Dése oportunidad de descargar el avance: ahora hay soporte multijugador y reconoce de mejor manera la física. La mejor manera de verlo es descargando el avance en línea, utilizando subversion:

svn co https://mundojava.svn.sourceforge.net/svnroot/mundojava

 

En el Weblog http://sourceforge.net/apps/wordpress/mundojava/ están los particulares sobre cada aspecto que va detallándose del proyecto. Está hecho en Java, por Java y para Java. Una vez más, la invitación a la comunidad se levanta para participar en el proyecto.



Pues llegó hora de hablar de Android, y el ponente no llegó. Aún así, gracias al poder de la comunidad y al espíritu abierto y libre de http://www.slideshare.net/ hubo oportunidad de hablar sobre Android.

Se utilizó la presentación compartida por Sean Sullivan de Mobile Portland dando una buena idea al novel en la plataforma de desarrollo (adjunta aquí arriba). Se describieron los componentes físicos del Google phone, sus botones, teclado y dimensiones, sus características como el puerto USB o el lector de SD. Se describió a Android como el conglomerado de Software para dispositivos móviles que incluye un sistema operativo, middleware y aplicaciones clave, de acuerdo con Google. El plan maestro de Google es hacer la nube más accesible, permaneciendo la conectividad impregnando todo y con ello hacer al cliente más poderoso. Optan por una plataforma Web abierta que permita aplicaciones Web más ricas, con ello más usuarios, más uso, más valor de retorno que secundará en una mejor plataforma Web abierta.

Google compra a Android en Agosto de 2005, esperado que la siguiente aplicación que "pegue con todo" sea para teléfonos celulares. En noviembre de 2007 se firma la Open Handset Alliance entre Google, HTC, Samsung, T-Mobile, Motorola, LG, China Mobile, Intel, Qualcomm, Docomo y Sprint para desarrollar para Android, iniciando con el lanzamiento del SDK de celulares de Android. T-Mobile anuncia en septiembre de 2008 el T-Mobile G-1, el pirmer teléfono con Android incluido, y sale a la venta el 22 de octubre del mismo año. Con él, comienzan a surgir aplicaciones de compañías varias, que pueden correr simultáneamente, puede cambiarse entre aplicaciones, correr servicios en el fondo y copiar y pegar.

Las aplicaciones para Android pueden distribuirse vía el Android Market (la tienda de Google para Android), autodistribuirse en el propio sitio o usar una tienda de terceros. Se mostraron capturas de pantalla del Android Market, sus ventajas ($25 USD de registro, el desarrollador recibe 70% de la venta, el resto a los intermediarios y que Google no toma porcentaje alguno). El sitio es http://www.android.com/market/ para examinarse.

Enseguida, se abordó el estado de conectividad entre los dispositivos con Android y computadoras personales, hablando de los progresos desde la fecha de esta presentación, y de dónde aún falta por desarrollar.

Se habló someramente de la arquitectura del sistema, del proyecto de código abierto (http://source.android.com/) y del uso de Apache Harmony como base para su desarrollo, perimitiendo licencias Apache 2.0 y GPL 2.0. Se cuenta además con un "repository" de Git para obtener los archivos fuente actualizados.

Las aplicaciones Android están escritas en Java, y corren sobre la máquina virtual Dalvik. Dalvik no es propiamante una Java VM, pues no ejecuta bytecode de Java, sino un formato propio basado en registros, más breve para reducir espacio y no compila al vuelo. Está pensada para restricciones de diseño como CPU lentos y poca RAM. Correrá el SO sin espacio de intercambio.

La API de aplicaciones incluye a J2SE, clases propias de interfaz de usuario, telefonía y SMS, además de las de manejo del dispositivo. Para iniciar con Android, la página http://code.google.com/android proporciona un muy buen punto de partida.

Entre las herramientas de desarrollo está el SDK de Android y un plugin para Eclipse. El SDK comprende el emulador de Android, herramientas de linea de comandos, documentación y aplicaciones de ejemplo. Se mostraron capturas de pantalla de la línea de comandos y del emulador, así como sus limitaciones al momento de la presentación y actuales. Las aplicaciones se componen de actividades en Android y usualmente ocupan una sola pantalla en la aplicación, aunque pueden ir sin interfaz gráfica. Una actividad se diseña como punto de entrada para la aplicación. Se mostró un archivo Java de una actividad Android, cómo se construyen bloques de aplicación, un archivo manifest XML y cómo implementar la interfaz de usuario de una aplicación propia: código Java y XML. Se habló de vistas de interfaz de usuario, de intentos: objetos mensajes en Android, una descripción abstracta de una operación a realizarse. Acto seguido, se habló de más aspectos alrededor, como la llamada internacionalización, la sincronización de información, modelo de seguridad, etc.

Finalmente, se habló brevemente sobre los planes para Android y lo que se ha cumplido desde la fecha de la presentación hasta enero de 2010, junto a enlaces para abordar a Android.

Por último, una pequeña presentación comparando a Android contra el iPhone de Apple. Esta última, muy breve, más que nada fue para aplacar a los "maqueros" asistentes. El poder de http://www.slideshare.net/ permitió utilizar la presentación realizada por THINK Interactive Inc. (adjunta aquí arriba). El hecho de ser de fuente abierta, de no haber una central única y exclusiva para poder vender aplicaciones, aplicaciones corriendo en paralelo y que pueden incrustarse en Web, una comparativa de características y posibilidades entre los dos. Se compararon aplicaciones de clima entre las dos plataformas, juegos clásicos y se habló de las limitantes de Android / G1.


Esta, la reunión que pudo haber sido el caos completo, donde incluso la comida se retrasó, tuvo un muy fuerte elemento que no sólo equilibró la balanza, sino la postró en favor de los asistentes, y ella es el poder de la comunidad. La unión entre los asistentes hizo más que quienes por azares del destino no llegamos a tiempo o de plano no llegamos. Poder tener el privilegio de decirme parte de una comunidad tan comprometida es motivo de orgullo, y con estas líneas felicito a quienes hacen posible estas reuniones. Gracias a su apoyo pude dar las dos charlas de ese mes, una estudiada, la otra compartida, y eso es algo que queda como un muy grato recuerdo. Aprovecho para exhortar a los que aún no se han animado a ir: si todo esto sucedió en la duodécima, qué pasará con la mítica tridécima reunión. Yo estaré allí. Seguro. Espero encontrarles por allá y que juntos narremos la reunión del número de las fobias, las supersticiones y la suerte, para que sea una muy buena reunión.

Felicidades

Cabe mencionar que el esfuerzo que se hizo para la platica de Android, (que como lo menciona a el no le tocaba y por lo tanto no venia preparada) fue muy bueno, felicidades por el esfuerzo y espero poder seguir asistiendo a sus reuniones.

Saludos a todos.

PD. Podrian decirle al expositor que suba su presentacion, para ver que tenia planeado, ya que para que se repita pasarian otras 10 reuniones mas.

Habría llegado un minuto después que tú...

Caramba, me la perdí. Ojala hubiese estado en el DF para poder asistir. Y conociéndome, en esta ocasión habría llegado a tiempo para la charla. :D