Aunque fuera de plazo, ya que han transcurrido casi diez días desde la celebración del último evento de Danysoft, (en el último día del mes de mayo), me ha parecido interesante dejar unas  breves lineas como recordatorio del mismo, de aquella vivencia, y de paso, que puedan servir también para recomendaros la presencia en el próximo evento online, resumen del contenido que se vivió en las presentaciones de Danysoft en la península y Portugal.

Me fue imposible en esta ocasión disponer de tiempo libre suficiente para iniciarlo en los días posteriores a la cita de Barcelona. 😦    pero al menos servirá como recordatorio de esta sesión online.

El evento se celebrará el martes 11 de Junio en el horario que se indica en este enlace al mismo

tour_online_sjover1000x125

 

Si no pudiste asistir y vivirlos en vivo y en directo, en las semanas anteriores, ahora no tienes excusa para faltar a este evento online gratuito. Mi recomendación es que no debes de perdértelo, más si te has incorporado recientemente a nuestra comunidad y todavía das tus primeros pasos.  En ese caso no solo es recomendable sino necesario. En realidad, no hace tanto tiempo que suspirábamos por tener repeticiones online de estas sesiones (¡ahora ya no nos acordamos de cuando no existían!) y quizás por eso, por ser mas frecuentes, no las valoramos suficientemente, habida cuenta que existen mas recursos, tanto de artículos como de vídeos (sean en nuestro idioma u en otro). Eso es síntoma de que algunas cosas se hacen bien.

 El evento de Barcelona

 Agradezco a mi buen amigo Germán, (Neftalí), la cita en su artículo acerca del evento de Barcelona del 30 de Mayo, Presentación Delphi XE4 en Barcelona. Su entrada en el blog, hace un extenso y buen resumen de muchos de los puntos calientes del mismo, por lo que, habida cuenta que van a ser compartidos nuevamente en el evento gratuito del próximo martes, no tenía demasiado sentido extenderme. No puedo mas que invitaros a su lectura. En lo que se refiere a estas lineas, me parece mas adecuado, dada la premura de tiempo, resaltar algunos detalles de cara a que no os pasen inadvertidos en la próxima repetición.

Para empezar, diré que realmente pude vivir dos eventos en ese día y medio que estuve en Barcelona. Por una lado estaba el oficial, celebrado por Danysoft, que íbamos a vivir con intensidad el día 30 de Mayo. Ese nos ocupa y da sentido a estas lineas. Y por otro,-y creo que Germán coincidirá también-, la víspera previa a ese evento, que nos llevó a compartir unas horas de charla apacible y distendida, donde pudimos conversar, Germán y yo, sobre la comunidad  y el proyecto de DelpHispano. Lógicamente, no podían estar allí físicamente ni Eliseo ni Juan Antonio, parte en el grupo de administradores, ni hubo oportunidad de que se uniera a esa conversación otros miembros del grupo como Xavier, residente en la zona, pero la iniciativa me pareció francamente positiva. El mero hecho de que un grupo de personas se puedan reunir o gastar parte de su tiempo, para analizar el estado y las necesidades de la Comunidad ya es positivo en si mismo. Incluso os diría que, si tuviéramos una Comunidad Hispana como tal, sería algo normal que previo a un evento de presentación anual, existiera alguna mesa de discusión formada por miembros de la Comunidad donde se planteasen tales debates.

Mi balance respecto al proyecto es que avanzamos día a día, aunque lentamente, o al menos no tan rápido como nos gustaría. Tenemos por delante todavía muchas páginas que llenar en esos blogs, que lleguen y ayuden a un numero mayor de compañeros, y sobretodo, tenemos que contagiar a la comunidad de un optimismo sano, no exento de sentido crítico y objetividad.  No sería razonable decir que es un proyecto maduro sino que da sus primeros pasos. También deseamos que estas propuestas acaben generando una posición mas activa de todos los miembros. Algunas de las iniciativas que se pusieron en marcha a título conjunto, en nombre de Delphispano, como el mantenimiento del grupo de facebook de Delphi Solidario ya alcanzaron los 400 miembros y día a día existe un trabajo continuo de revisión de los contenidos, para que preste un servicio de comunicación de noticias de nuestra comunidad y de la comunidad global de usuarios de la herramienta. A título personal, Juan Antonio, sigue en sus trece de que exista un Stackoverflow en español, o participa en traducciones del libro Programación paralela con OmniThreadLibrary. Al final, se trata de volver a ese espíritu que siempre caracterizó a nuestra Comunidad en los años en los que Delphi era un referente para todos, con la sana idea de que vuelva a estar ahí.

Las semanas anteriores igualmente las dedicamos enteramente en dar contenido, tanto a la pagina principal de la web de Delphispano, como a la página de Delphispano en facebook, con la idea de que ambas se nutrieran de las publicaciones que vamos haciendo y las noticias que compartimos desde los respectivos blogs miembros. Ya es posible acceder y votar las distintas publicaciones. En mi caso personal, la participación en todos estos preparativos es uno de los motivos que me han podido apartar de mantener mas actualizado el contenido de mi blog, por lo que me aprovecho para disculparme por ello.

Pero no dejemos el evento de Barcelona. Volvamos a ese jueves, sobre las nueve de la mañana. Habíamos quedado Germán y yo en una de las salidas del metro de Barcelona con la idea de llegar unos minutos antes de iniciarse el mismo y poder conversar con Luis Alfonso Rey, que habitualmente dirige las presentaciones de Danysoft y a quien todos creo que ya conocéis. La anécdota graciosa fue que nos equivocamos de hotel, ¡eso de pasar la vista y no leer! nos llevó a la conjetura de que sería el mismo hotel de siempre, el de toda la vida, junto a la estación de Sants, y allá nos metimos a investigar en los sótanos, acompañados de uno de los botones de la entrada, para ver en que salón se iba a celebrar el evento. 😀    Evidentemente este año había cambiado y deshecho el entuerto, y obligados a leer la publicación de Danysoft, donde se leía el hotel correcto, llegamos con el tiempo justo para saludar a Luis.

😀

embarcadero

Luego, como comenta bien Germán, se inició la sesión con puntualidad, pasados esos diez minutos de cortesía habituales, con las presentaciones propias de quien exponía, con los detalles públicos de la Empresa Embarcadero y de su partner español: quienes eran, desde cuando estaban en el mercado, cuales eran los actuales centro de producción de código, etc.

A todas luces el evento se celebraba fuera de la ubicación natural de su tiempo, que sería transcurrido el mes de Septiembre, durante el tiempo en el que Embarcadero inicia su gira mundial y gastó su tiempo Luis para ubicar la oportunidad de la celebración actual. Todos eramos conscientes y teníamos todavía en la retina algunas de las instantáneas de XE3 y me quedó la sensación de que ésto pesaba sobre muchos de los asistentes. 

2013-05-30-12.20.24-300x199

Sobre las 10:30,  hechas estas presentaciones el foco de la presentación giró en torno al concepto de “Nativo”, de aplicación nativa, término que el marketing había usado desde distintos enfoques del desarrollo de aplicaciones móviles jugando con la confusión que existe y ocultando detalles para equiparar todo al mismo nivel de una forma engañosa.

imagen_arquitecturaImagen 1.

imagen_baja_latenciaImagen 2.

imagen_llvmImagen 3. imagen_nativoImagen 4.

La imagen 4, de esta tabla de imágenes que he resaltado con el contenido de la sesión, os muestra distintas alternativas válidas en el desarrollo de aplicaciones móviles. En dicha imagen, se resalta el hecho de que las aplicaciones generadas por nuestro compilador van a ser realmente nativas, no basadas en código intermedio que va a ser interpretado por una maquina virtual sino código optimizado para que el rendimiento sea máximo y la explotación de las capacidades del hardware no se vean limitadas por las limitaciones de los anfitriones, que intentan hacer factor común en muchas funcionalidades para adaptarse al máximo numero de plataformas y versiones. Luis no pudo mas que aceptar que html5 Builder, fuera uno de estos enfoques alternativos, que sin duda ha prestado un gran servicio como via alternativa en tanto nuestra herramienta era dotada con las capacidades actuales. La imagen 2, en la parte superior derecha, visualiza los beneficios de una aplicación realmente nativa: la optimización y el rendimiento en el acceso a los servicios que el hardware ofrece, acaba representando una mejor experiencia del usuario frente al dispositivo, merced a la baja latencia en las respuestas de esa comunicación.

A todo esto hay que unir que disponemos de una plataforma como Firemonkey, que nos va a permitir que un mismo código sea destino de distintas plataformas finales como los desarrollos de las aplicaciones nativas en windows y osX, o las distintas alternativas de iOSX y en un futuro cercano Android. La imagen 1 os muestra esquematicamente la arquitectura de Firemonkey. Estamos llevando la idea que siempre hizo de Delphi una herramienta extraordinaria, su rendimiento, la optimización de su codigo en los desarrollos de la plataforma de Windows frente a otras alternativas, a la demanda actual del desarrollo en la creciente tecnología móvil.

Pero para entenderlo, para comprender este escenario, habría que releer los papeles que han ido dejando los responsables de Embarcadero en la red, documentos que explican esa imagen 3 de la tabla anterior: el escenario de un nuevo compilador basado en LLVM.

Segun lo explcado por Marco Cantú en su documento del mes de Abril, The Delphi Language for Mobile Development, Embarcadero inicio una nueva estrategia y movió su compilador para iOS a la arquitectura que le ofrecia Llvm y de hecho, según lo comentado en ese mismo documento, nuestra herramienta cuenta actualmente con varios compiladores, los que ya conocíamos en el entorno de win32 (dcc32), win64 (dcc64), mac (dccosx) y ya en el ambiente de la teconogia móvil, el del simulador de iOSx (dccios32). Pues bien, a estos existentes, le sumariamos el compilador para iOS ARM (dcciosarm) que está basado en esa nueva arquitectura y que va a permitir que un codigo intermedio genere codigo binario para distintas plataformas móviles destino. El paso fue importante y la decisión dificil de tomar, por cuanto se dejaba la tendencia de generar un desarrollo del compilador propietario, en aras de usar unos servicios que ya cuentan con vagage amplio y que estan reconocidos por el mercado. Llvm es usado por ejemplo por XCode de Apple, para compilar los distintos desarrollos nativos basados en Objetive C.

Si queréis entender estos cambios, leed el documento de Marco Cantú porque os será de gran ayuda.

En él también se extiende ampliamente sobre las repercusiones que tiene la adopción de la nueva arquitectura del compilador de iOS ARM:

  • Unificación del tipo String que pasa a ser un tipo por valor, inmutable frente al variado repertorio que teníamos. En la nueva arquitectura desaparecerán y se simplificará el trabajo con el tipo cadena, que además, cambiará su rango para iniciar la cuenta del primer indice del elemento en cero. Esto ha sido motivo de gran controversia en foros y sitios de comentarios, que encuentran un problema de adaptación de código por cuanto existen miles de lineas escritas bajo el supuesto de que el primer caracter de una cadena se iniciaba en el indice 1.
  • Cuenta de referencias o ARC, que posibilita que nuestro trabajo se beneficie de esta estrategia que ya conocíamos en el ámbito del tipo string pero que es llevada al ámbito de cualquier objeto que instanciemos, consiguiendo que el programador se  despreocupe de la liberación de memoria. Marco lo ilustra declarando un objeto local cualquiera y haciendo uso del mismo tras la creación, y señalando que ahora no sería necesario liberar la memoria puesto que al salir de ámbito, el recuento de referencias automáticamente lo liberaría. Luis destacó al hablar de estos aspectos los beneficios de este enfoque frente a otros como el Recolector de Basura, tambien usado por otras herramientas, que automatiza la liberación de memoria y que permanece ajeno a la voluntad del desarrollador, disparando en ocasiones un proceso que puede ser costoso en momentos poco apropiados.
  • Futuros cambios que restringirán el uso de punteros y que nos moverán lejos de contenedores clasicos como la clase TList o cualquiera de las hermanas, en aras de estos requerimientos.

Estos puntos y algunos mas, fueron comentados mientras Luis Alfonso iba exponiendo esas diapositivas relacionadas con la imagen 3. 

Sobre las 11:30 y previo al descanso, nos mostró una aplicación que constaba de un marco vació  en el que se podían ver varios botones que al pulsar, verificaban muchos de esos comentarios que había hecho en la exposición inicial.

Fue pulsando los distintos botones del interfaz y comentando las conclusiones. Se podía ver en el primero de ellos, como el tipo cadena se basaba en el indice cero y en la segunda botón, cómo trabajaba el recuento de referencia en el tipo string, de forma que quienes pudimos ver la presentación entendimos claramente estas explicaciones. También, al hilo de esto, Luis Alfonso hizo referencia a la clase TStringBuilder y tomó en la demo, distintos tiempo de ejecución para comparar los procesos de concatenación de cadenas a través de la asignación directa o del uso delos métodos de la clase TStringBuilder, especializada en ello.

Frente a sus comentarios, durante estos días repetí sus experimentos y mi conclusión es que el tiempo es favorable a la clase si no tiene que hacer conversiones de tipo y trabaja directamente sobre un tipo cadena. En su ejemplo, existían conversiones de integer a string con la función IntToStr( ) que podían en mi opinión alterar el resultado o las conclusiones.

Luego vino el tiempo de descanso que nos permitió estirar las piernas y conversar, haciendo grupos que iban cayendo sin piedad sobre las viandas y las distintas bebidas (sanas y saludables)   😀   A eso de las 12:30, vuelta a nuestro asiento y lentamente fue acallando el murmullo generado por las relajadas conversaciones.

2013-05-30-11.39.13-e1370879275812

A partir de ese momento, entramos de lleno en el tema de las aplicaciones para iOS, con una introducción amplia y detallada de los pasos que había que seguir para la instalación y preparación del ambiente de desarrollo. Fue uno de los causantes que no pudiéramos llegar con tiempo suficiente al ultimo de los temas, que era Firedac. Pero tengo que reconocer que era necesario dedicar este tiempo, incluso con el perjuicio de que finalmente pudiéramos ver solo por encima y muy de pasada la ultima adquisición de Embarcadero, que amplia el horizonte de conectividad de nuestra herramienta.

El resumen de esos paso en la preparación y configuración del entorno se podrían resumir en:

  1. Obvio… instalar XE4.   😀
  2. Localizar en la instalación de XE4, el paquete de instalación de la plataforma PAServer, que permitirá la comunicación con la plataforma mac. Podéis encontrar detalle de esto en un articulo anterior de Neftalí, Configuración del entorno de trabajo iOS/OSX (Delphi XE4)
  3. ¿Es necesario instalar XCode? Sí pero no porque haga falta para compilar nuestro aplicativo sino porque lo usaremos en los momentos previos de configuración de XE4 para disponer la instalación de las sdk adecuados y las utilidades Command Line Tools. Recordad que vais a poder compilar tanto para el sdk 5.1 de iOSx como el último 6.x., tanto en Lion como en Mountain Lion.
  4. preferences
  5. Una vez hecho esto, proseguían las acciones propias de iniciar el servicio de PasServer, que se muestra disponible dentro de las aplicaciones de nuestro Mac y configurar correctamente el perfil de conexión remoto, que apunta a la ip del servicio que hemos levantado. De todos estos pasos, encontramos abundante documentación por lo que no voy a incidir.
  6. Finalmente, quisiera apunta un ultimo requerimiento que no conocía  y que era nuevo en XE4. La configuración del ambiente de trabajo requiere que importemos los distintos sdk que vamos a usar y para ello existe una nueva ubicación con una mecánica de importación extremadamente sencilla.

Veamos una imagen de captura de la sección SDK Manager, existente en el área de Opciones de en nuestra herramienta:

sdks

 La mecánica no puede ser mas sencilla. Con el servicio PASServer ejecutándose, seleccionáis la opción de Añadir (Add) que mostrará una ventana de dialogo y permitirá de una forma transparente y rápida sean importadas la rutas de ubicación de las librerías, creando un perfil adecuado que luego puede ser modificado en función de vuestras necesidades. Este gestor os habilita para tener múltiples sdks y alojará con seguridad futuras necesidades en el ámbito de Android.

¡Focos, Cámaras y Acción!

Todo lo dicho anteriormente, todas esas facilidades que nos han ido mostrando, wizards, configuradores que facilitan la creación del esqueleto inicial de nuestra aplicación, servirían de poco si programar para iOSX no resultara algo tan sencillo.

Luis Alfonso Rey prosiguió esas explicaciones detalladas de la primera configuración del entorno, con un ejemplo que usaba una conexión de datos basada en SQLite. Esta es una imagen que no va a deciros demasiado pero que resulta ilustrativa para explicaron qué hacía.

app_notificaciones

La aplicación permitía al hipotético usuario crear recordatorios que usarían los servicio del centro de notificaciones, y que dispararían una de estas notificaciones en el dispositivo cuando se cumplía el plazo de tiempo fijado. Todos hemos usado alguna vez aplicaciones que muestran en su icono alguna imagen adicional que nos avisa  de la llegada de nuevos mensajes o notificaciones. En el caso de iOSX y Mac, se representa con un circulo diminuto en color rojo, en la parte superior, con el numero de notificaciones pendientes de revisar.

El ejemplo revisaba además diversos temas: la conectividad con sqlite, la disponibilidad de las acciones que extendían los servicios del sistema, la posibilidad de usar prototipos para simular el ambiente de datos en los primeros estadios de desarrollo de nuestros proyectos, facilitando la presentación de capturas a nuestros clientes y agilizando la toma de decisiones sin tener que movernos a detalles intrascendentes a ese nivel de la arquitectura de bbdd usada. La asignación de estilos a los distintos objetos de la interfaz de iOSX (se puede ver en la ultima de Germán, citada al inicio).

Nunca ha sido tan sencillo hacer una aplicación para iOS, en cualquiera de las posibles dispositivos. Ver en acción un ejemplo básico como el expuesto por Luis nos da una idea de este escenario que se complementa en la posibilidad de conexión a un servicio de dbexpress, conectividad con múltiples bases de datos locales, como sqlite o la versión local de interbase y ahora, la conectividad de firedac, nuevas mejoras en componentes, estilos y wizards de ayuda en el desarrollo. Todo está a nuestro favor para que sea agil nuestra experiencia con los distintas plataformas de desarrollo. Y es una promesa de que la llegada de Android no nos va a defraudar.

La sesión se finalizó abordando de una forma superficial y rápida el tema de Firedac, sin poder ver en la practica ningún ejemplo. El tiempo se vino encima y el horario de cierre de la sesión era próximo. Luis Alfonso ajustó su tiempo y abordo la parte final mas como una especie de visita guiada. Lo mostrado, a mi al menos, me pareció muy interesante ya que no había trabajado anteriormente con el producto original, aunque si que había oído hablar muy bien de esa librería de componentes por boca de amigos y compañeros de trabajo.

No me extiendo mas.

Mi consejo: asistid a este evento online. 11 de Junio.

Creo que no os defraudará.

En próximas entradas intentaré preparar algun video en el que se pueda ver algunos detalles que hemos comentado en acción. Sacaremos tiempo de debajo de las piedras…  😛

Nota:  No dejéis de visitar, una vez descargado e instalado el entorno, la zona de código para iOS, donde existen un buen numero de ejemplos que recorren las funcionalidades mas usadas de los distintos servicios para iOS.

Os van a ser de gran ayuda:

Delphi XE4 and RAD Studio XE4 iOS Code Snippets

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s