miércoles, 21 de noviembre de 2012

Comunidad 7BBerries - Todo el mundo BB explicado en español


Introducción al desarrollo de aplicaciones móviles

Objetivos

El objetivo principal de este capítulo es describir las diferencias entre el desarrollo de aplicaciones para un entorno de escritorio frente a un entorno de dispositivo móvil basado en las características del dispositivo físico y en las necesidades del usuario.
Desarrollo en dispositivos móviles
Desarrollar para dispositivos móviles tiene algunas cosas en común con el desarrollo para escritorio o servidor, pero las diferencias son realmente importantes. Por esto es necesario describir algunas características del desarrollo de aplicaciones móviles y luego poder considerarlas a la hora de programar aplicaciones. Estos conceptos tendrán un impacto importante a la hora de implementar finalmente una aplicación.
Lo primero a tener en cuenta es la limitación de recursos que existen en un dispositivo móvil. Si bien la evolución es constante y en gran escala, no se debe olvidar que sigue siendo un dispositivo limitado.
Recursos a tener en cuenta a la hora de programar:
- Tamaño de la pantalla
Los teléfonos móviles cuentan con una pantalla de pequeño tamaño, lo cual hace imprescindible tenerlo en cuenta a la hora de diseñar una aplicación. Es importante entender que no toda la información que tenemos disponible puede ser presentada al mismo tiempo en una sola pantalla. Para ello es necesario realizar un diseño de nuestra aplicación considerando siempre los elementos más relevantes dentro de cada pantalla.
- Memoria
Los dispositivos móviles cuentan con reducida capacidad de almacenamiento. Si bien es posible utilizar memorias externas, es difícil considerar que se dispone de gran capacidad para persistir y sostener información. Es importante administrar y gestionar prolijamente el uso de la memoria para evitar la caída del rendimiento de la aplicación y el dispositivo en general. Evitar la creación de objetos innecesarios es un factor muy determinante en el cuidado de este recurso. Así como Java Standard cuenta con el “Garbage Collector” (recolector de basura en memoria), Java Microedition también utiliza este mecanismo. No por esto se deberá dejar información “basura” dentro de la memoria esperando que el recolector haga su trabajo. Cuando se programa para móviles, es muy importante reducir el trabajo del GC.
- Capacidad del procesador
Así como la memoria es limitada, el procesador y su capacidad de procesamiento también lo son. Es por eso que es necesario evitar cualquier utilización innecesaria de este recurso. Los aplicaciones Java que corren en dispositivos BlackBerry poseen la capacidad de ejecutar tareas en simultáneo “multithreading”, por lo que se está expuesto a la degradación del rendimiento general del equipo. Tanto el diseño de clases y métodos, como la implementación de estos, es fundamental para la mejor optimización del procesador. Existen herramientas “profiler” que permiten analizar la utilización del CPU y encontrar la mejor implementación para cada rutina, llegando a optimizarlas lo máximo posible. Se mostrarán ejemplos y explicará su uso en otro capítulo.
- Medios de conexión
Los dispositivos móviles cuentan con la posibilidad de estar “todo el tiempo” conectados, tanto a internet como a dispositivos periféricos. Existen distintos métodos para lograrlo, como la conexión celular, WiFi y BlueTooth. Es importante no abusar del uso de este recurso, ya que este representa el factor de mayor consumo de procesador y memoria. En la etapa de diseño de una aplicación, es necesario considerar el mínimo uso de las distintas conexiones en los distintos escenarios.
- Batería
Los dispositivos móviles cuentan con una fuente de energía muy limitada. El mal uso de los recursos (pantalla, memoria, procesador y conexiones) tendrán un impacto directo en el consumo de batería, generando una baja considerable en el rendimiento de las aplicaciones y la experiencia de los usuarios.

Métodos de desarrollo para dispositivos móviles

Objetivos

El objetivo de este capítulo es enumerar y describir cuatro métodos para el desarrollo de aplicaciones para dispositivos móviles BlackBerry. Se describirá cómo difieren las aplicaciones HTML5, Java, Air y C++, mostrando distintos ejemplos. Se describirán las consideraciones de diseño y limitaciones para los métodos de desarrollo de aplicaciones.


Desarrollo JAVA

Las aplicaciones Java se caracterizan por residir y correr dentro de los dispositivos móviles. Las aplicaciones para BlackBerry se escriben basadas en Java® ME.

Existe la posibilidad de implementar aplicaciones “Standalone”, que no requieren de conexión a internet, y por lo contrario, contienen el contenido y lógica completos dentro de estas. Ademas, es posible desarrollar aplicaciones que soporten funciones “wireless”.


Desarrollo HTML5

En primer lugar, una aplicación de BlackBerry WebWorks es una aplicación independiente, lo que significa que no tiene que apuntar a un servidor remoto para cargar una página web o aplicación (a menos que se requiera). En este caso, la aplicación reside en el dispositivo BlackBerry. Básicamente se trata de un conjunto de recursos que se encapsulan en un contenedor que puede ser visto por un "explorador sin cabeza" - el motor WebKit.

En segundo lugar, usted puede tomar ventaja de las tecnologías web estándar, como CSS, HTML5 y JavaScript para construir su aplicación.

También puede tomar ventaja de los populares frameworks para móviles, tales como Sencha, PhoneGap, jQuery, o Dojo. Esto permite crear aplicaciones más rápido porque puede volver a utilizar las aplicaciones existentes y los recursos.

Lo más importante es que se puede agregar funcionalidad nativa a una aplicación HTML5 utilizando la plataforma BlackBerry WebWorks.

Se puede obtener acceso completo a la API de la plataforma a través de wrappers de JavaScript, que puede utilizar para extender la aplicación y tomar ventaja de las características específicas de BlackBerry (por ejemplo, BBM, PIM, los medios de comunicación, hardware), ofreciendo una experiencia integrada para el usuario de BlackBerry .


Desarrollo en Adobe Air

Para desarrollar aplicaciones que corran en BlackBerry tablets, se puede utilizar BlackBerry Tablet OS SDK para Adobe Air, y junto con Adobe ActionScript y Adobe Flex se pueden crear experiencias cutivantes para el usuario.

El SDK provee APIs que extienden ActionScript 3.0 que permiten desarrollar aplicaciones que se asemejan a las desarrolladas para BlackBerry Tablets. Estas API proporcionan algunos de los componentes de interfaz de usuario únicos y skins predefinidos, así como de los listeners para los eventos que son específicos para el sistema operativo BlackBerry Tablet.

Usando la API de Flash, la aplicación también puede acceder a las funciones que son exclusivas de los dispositivos móviles, tales como el acelerómetro y la información de geolocalización.

Desarrollo en C++

BlackBerry Native SDK para Tablet OS es un conjunto de herramientas de desarrollo que le permite aprovechar el poder de la BlackBerry PlayBook.

Combinando la velocidad y estabilidad del sistema operativo en tiempo real QNX Neutrino con el entorno de desarrollo basado en Eclipse Momentics QNX, el SDK nativo está diseñado para desarrolladores que necesitan tener acceso completo a todo lo que la BlackBerry PlayBook tiene para ofrecer.

El SDK nativo le proporciona un conjunto APIs de C y C++ que expone todas las herramientas necesarias para crear aplicaciones potentes y dinámicas.

Las capacidades incluyen:

API nativo del sistema para la pantalla, el navegador, ecualizador, el acelerómetro, la red, etc

Un entorno de compilación que le permite personalizar la configuración del proyecto, del compilador y las opciones de deploy

Una manera de implementar sus aplicaciones a los dispositivos BlackBerry PlayBook reales o al simulador de PlayBook incluido

Un depurador integrado que le permite examinar cada línea de código, mientas es ejecutada

Documentación, tutoriales y ejemplos de código


Ventajas y desventajas de cada lenguaje

SmartphonePlayBook
 HTML5JAVAHTML5AirC++
Complejidad del lenguajeBajoAltoBajoMedioMuy Alto
FlexibilidadBajaAltaBajaMediaMuy Alta
Utilización de estándaresBuenaBajaBuenaBuenaAceptable
RendimientoBuenoMuy BuenoBuenoMuy BuenoAlto
Conexión con dispositivos periféricosSiSiNoNoNo
Integración con Hardware del dispositivoSiSiNoSiSi
Conexión a internetOpcionalOpcionalOpcionalOpcionalOpcional
Almacenamiento localNoSiSiSiSi
Acceso a información de posicionamientoSiSiSiSiSi
Ejecución de tareas en segundo planoSiSiNoNoSi
PortabilidadAltaBajaAltaBaja-
Push NotificationsSiSiNoNoNo
Integración con serviciosMuy simpleComplejoMuy simpleSimpleMuy Complejo
Acceso a base de datosSi (OS 5.0+)SiSiSiSi
EscalabilidadBajaMedioBajaMedioAlta
Disponibilidad de ejemplosAltaMediaAltaMediaBaja
Integración con otras tecnologíasLimitadoMedioLimitadoMedioAlto


Definiciones

Complejidad del lenguaje
Define cuán difícil o intuitivo es desarrollar una aplicación en ese lenguaje, tomando en cuenta tanto la simpleza de la sintaxis como asi también el conocimiento requerido para realizar distintas tareas.

Flexibilidad
Determina cuan permisivo es el lenguaje para poder crear cualquier estilo, apariencia y funcionabilidad. Siendo altamente flexibles aquellos lenguajes que prácticamente no presentan límites ni requisitos que determinen la apariencia y comportamiento, dejando así en manos de los desarrolladores y diseñadores ambas cuestiones. Aun así, se recomienda seguir las buenas prácticas de programación, estándares y consideraciones de diseño para evitar complicaciones y facilitar el uso.

Utilización de estándares
Determina cuan respetados son los estándares de programación por parte del resto de la comunidad. Tomando en cuenta desde los que determinan como se escribe el código (forma de nombrar clases, variables, métodos, utilización de llaves y ubicación de las mismas) hasta las que indican las mejores maneras de proceder para realizar determinadas procesos.

Rendimiento
Define que tan eficiente o efectivo es el código producido, siendo la efectividad la capacidad de alcanzar el efecto deseado y la eficiencia la capacidad de alcanzar dicho efecto con la menor cantidad de recursos posibles. Aun así, el rendimiento está altamente ligado a la habilidad y conocimientos del programador, ya que a pesar de que C++ tiene una alta performance, si se codifica mal o bien no se tiene cuidado se puede generar código mucho menos eficiente que el producido en otros lenguajes.

Conexión con dispositivos periféricos
Describe la posibilidad de integrar el uso de las características del dispositivo BlackBerry, tales como la Cámara de fotos y las funciones del Teléfono. Así mismo, es posible la integración con aplicaciones nativas que se encuentren instaladas en el dispositivo, tales como la Agenda de contactos, el Media player y BlackBerry® Maps.

Integración con Hardware del dispositivo
Determina si las aplicaciones pueden comunicarse con los dispositivos que posean conectividad mediante Bluetooth®, tales como Headsets, Impresoras, Dispositivos de entrada y Transmisores GPS.

Nota: En Air se puede utilizar las ANE (Adobe Native Extensions) y acceder a librerías compiladas con el NDK.

Conexión a internet
Significa que no requieren una conexión a internet para poder ejecutarse ni para obtener sus recursos.

Almacenamiento local
Define la capacidad del leguaje para acceder a los dispositivos de almacenamiento interno del dispositivo (memoria interna y memoria SD).

Nota: Si bien HTML5 no puede utilizar la memoria interna del dispositivo, se puede usar lo que se denomina Storage (Local storage, session storage y database storage).

Acceso a información de posicionamiento
Determina si es posible detectar la ubicación del dispositivo BlackBerry y proporcionar información para esa ubicación. Existen distintos mecanismos para lograrlo, difiriendo en la precisión final de la ubicación conseguida y variando en el consumo de recursos para lograrlo.

Ejecución de tareas en segundo plano
Posibilidad de implementar procesos que se ejecutan en segundo plano, escuchando eventos y/o actualizaciones. Esto permite a los usuarios ejecutar otras funciones mientras la aplicación realiza tareas o ejecuta rutinas que requieran un indeterminado tiempo para finalizar.

Portabilidad
Define la facilidad para portar la aplicación a otras plataformas, determinada por las modificaciones que se requieran. Muchas veces se requiere crear distintas versiones de la aplicación orientadas a soportar las características propias de cada dispositivo.

Nota:Las aplicaciones desarrolladas en C++ no pueden ser portadas a smartphones, debido a que estos no soportan aplicaciones desarrolladas en este lenguaje.

Push notifications
Describe la posibilidad de recibir un request originado del lado del servidor. Cuando haya contenido nuevo, el servidor tiene la capacidad de “empujar” esta información a los dispositivos.

Integración con servicios
Define la complejidad que presenta el lenguaje a la hora de interactuar con servicios web.

Nota:Tanto HTML5 como Air tienen una limitación dada por same origin policy, en el caso de HTML5 esto se puede resolver utilizando JSONP y en Air se puede solucionar mediante el uso de un archivo de cross domain ubicado en el dominio.

Acceso a base de datos
Determina la capacidad de poder acceder y trabajar sobre la base de datos local.

Escalabilidad
Indica la capacidad de ampliación o extensión de las aplicaciones sin perder calidad ni funcionabilidad.

Disponibilidad de ejemplos
Define la facilidad así como también la cantidad de ejemplos disponibles en internet.

Integración con otras tecnologías
Describe la complejidad dada para realizar integraciones con distintas tecnologías como pueden ser realidad aumentada.


Transportes de red

Objetivos

El objetivo principal de este capítulo es cubrir y explicar las diferentes formas que un dispositivo BlackBerry puede utilizar para conectarse a la red. Se explicarán las principales características y beneficios de cada método y cuándo y cómo utilizarlos.

Visión general de transportes de red

Los dispositivos BlackBerry pueden acceder a Internet de distintas maneras:
TCP Celular: Directamente vía el Operador.
WAP: Directamente vía el Operador usando WAP.
TCP WiFi: Directamente vía redes WiFi.
BIS (o MDS público): Vía el Operador, pero a través del Gateway de Internet de RIM.
BES (o MDS): Vía el Operador, pero a través del Gateway empresarial de RIM.
WiFi: Vía BIS o BES a través de una red WiFi.

Tipos de acceso a internet

TCP Celular


- El transporte TCP celular crea una conexión a Internet a través de la puerta de enlace de Internet de un Operador. Este método crea el tipo más directo de conexión que utiliza la radio celular.
- La mayoría de los Operadores configuran los dispositivos BlackBerry del usuario para usar la puerta de enlace de Internet del proveedor. Sin embargo, cuando el usuario se mueve a otra red, este debe configurar el dispositivo manualmente para usar el gateway de Internet en la red del host.
- Si la aplicación utiliza este transporte, debería probarlo con cada Operador.
- Generalmente este transporte genera un costo adicional al usuario, ya que no está contemplado dentro del servicio de datos BlackBerry.


WAP


- El transporte WAP crea una conexión a través de la puerta de enlace WAP del Operador. Se admiten WAP 1.0, 1.2 y 2.0.
- Para soportar este transporte, el usuario o el Operador debe configurar los parámetros de conexión WAP en el dispositivo. Como resultado, este transporte puede que no se admitido en todas las redes inalámbricas o con todos los planes de datos.
- Si la aplicación utiliza este transporte, debería probarlo para cada Operador que puede utilizar la aplicación.
- Para utilizar WAP 2.0, debe recuperar el identificador de conexión del libro de servicio.
- Generalmente este transporte genera un costo adicional al usuario, ya que no está contemplado dentro del servicio de datos BlackBerry.


TCP WiFi


- El transporte WiFi crea una conexión a Internet o a redes privadas, como las de una organización o un hogar. Cuando la radio WiFi está activada, el usuario del dispositivo BlackBerry o una aplicación puede configurar el dispositivo para conectarse a Internet utilizando este transporte.
- Si aplica, el dispositivo puede enviar automáticamente datos a un BlackBerry Enterprise Server o BlackBerry® Internet Service a través de una conexión WiFi. Por ejemplo, si el dispositivo está conectado a una red WiFi y un perfil VPN está configurado para la organización del usuario, el dispositivo intenta conectarse al BlackBerry Enterprise Server a través de la VPN mediante la conexión WiFi porque la transmisión de datos a través de Wi-Fi es generalmente más barata que otros transportes. Este comportamiento se conoce como el enrutamiento de menor costo.


Servicio de internet de BlackBerry (MDS público)


- El transporte BlackBerry Internet Service crea una conexión a Internet a través de la infraestructura de BlackBerry. Los datos que se envían y reciben utilizando este transporte son comprimidos y optimizados para la transmisión en conexiones inalámbricas.
- Las aplicaciones que utilizan el transporte BlackBerry Internet Service automáticamente se benefician por el enrutamiento de menor costo. El dispositivo se conecta a una red WiFi automáticamente, si está disponible.


Servicio empresarial BlackBerry (MDS)


- El transporte de BlackBerry MDS permite a un dispositivo BlackBerry conectarse a su asociado BlackBerry Enterprise Server a través de la infraestructura de BlackBerry o utilizando una conexión WiFi.
- Los datos que se envían y reciben utilizando este transporte son comprimidos y optimizados para la transmisión en conexiones inalámbricas.
- Es posible acceder a destinos privados dentro de la red corporativa.


Tecnología PUSH

Objetivos

El objetivo principal de este capítulo es definir la tecnología Push y describir sus beneficios. Se describirá cómo funcionan las aplicaciones push server-side y se proporcionarán ejemplos de usos en aplicaciones BlackBerry.

Introducción a la tecnología PUSH

Las aplicaciones Push envían el contenido web u otros datos a los dispositivos BlackBerry sin necesidad de intervención del usuario. Estas aplicaciones proporcionan automáticamente la información tan pronto como esté disponible en el lado del servidor, por eso se denomina información “empujada”.

El paradigma PUSH

Una de las características principales de la solución BlackBerry es la tecnología PUSH. El principal objetivo a cumplir es entregar los datos de forma proactiva, haciendo que estos se encuentren listos en el dispositivo cuando el usuario los necesita. Para ello, los datos se entregan tan pronto como estén disponibles, por ejemplo cuando se produjo un evento de interés en el servidor.
Las aplicaciones están siempre escuchando la llegada de datos sin necesidad de que el usuario intervenga para recibirlos. Este se entera de la llegada de nueva información mediante una alerta (reproducir una melodía, vibrar, parpadear, ventana emergente, icono) cuando han sido entregados todos los datos, procesados y listos para ver, provocando la apariencia de cero latencia.
La aplicación no se encuentra solicitando actualizaciones constantemente, sino que simplemente espera a que esta llegue por medio de una solicitud del servidor.
La experiencia del usuario es que el evento acaba de ocurrir, automáticamente, en tiempo real y de forma fiable.

Beneficios

Los beneficios principales de la implementación de aplicaciones que utilizan la tecnología PUSH son:
- Instantaneidad
El usuario recibe la información en el momento que se produce el evento o actualización.
- Eficiencia
La información solo se envía cuando está disponible, evitando que el cliente este solicitando actualizaciones constantemente.
- Latencia reducida
Se reduce el impacto en la red debido a que la aplicación no se encuentra todo el tiempo solicitando información.
- Duración de batería prolongada
El hecho de no estar constante e innecesariamente solicitando actualizaciones tiene un impacto positivo en la duración de la batería. La información es recibida y procesada solo cuando está disponible y el usuario no se preocupa por solicitar actualizaciones.

Flujo básico

1. Proveedor de contenido envía la petición Push
2. Servicio BlackBerry devuelve respuesta, declarando la aceptación o rechazo del mensaje
3. Servicio BlackBerry empuja los datos a los dispositivos asignados en el puerto especifico
4. Dispositivo devuelve respuesta al servicio BlackBerry
6. Proveedor de contenidos devuelve notificación de lectura al servicio BlackBerry


7 BBerries - Comunidad 7BBerries: