A la hora de desarrollar una aplicación usando Tecnología Móvil, de diseñar una solución para resolver una necesidad de los usuarios, un punto importante a tener en cuenta es el enfoque que tendrá dicha aplicación, y por enfoque me refiero a la decisión de si la aplicación se ejecutará vía WEB (desde un browser), o NATIVO (directamente instalada en el dispositivo).
No es un punto menor debido a las características del mercado Móvil: variedad de dispositivos (y software base o sistemas operativos), capacidad de procesamiento y memoria restringidos (comparados con los de PC tradicionales) y disponibilidad de conexión a Internet (que puede tener restricciones debido costos y/o cobertura o alcance de la señal).
La llegada del iPhone ha complicado más el asunto, dado que ahora existe la presión de "copiar" la apariencia (usabilidad y atractivo) de esas aplicaciones, lo que aumenta la complejidad de los desarrollos.
Ventajas del enfoque WEB:
- El soporte es más barato.
- La velocidad de desarrollo es mayor.
- Costo de desarrollo es menor.
- El conocimiento existente de PC es reutilizable en su mayoría.
- No hay problema con la variedad de dispositivos.
- Distribución es mucho más sencilla.
- Datos centralizados e integración con múltiples fuentes es más sencilla.
- Permite el desarrollo de comunidades.
- Permite extender el sitio WEB existente.
- Actualización / correcciones son instantáneas.
Desventajas del enfoque WEB:
- Costos, en algunas países las tarifas de acceso a Internet desde dispositivos móviles son elevadas.
- Disponibilidad, las aplicaciones necesitan conexión continua (y rápida) a Internet y aún no está disponible en todas partes.
- La "experiencia" WEB (funcionalidad de las aplicaciones, interactividad) en los dispositivos móviles es limitada comparada con la que se tiene en PC.
- No hay forma de aprovechar algunas características específicas de los dispositivos (como la cámara por ejemplo).
- Velocidad de acceso es limitada.
- Muchas versiones de navegadores disponibles, los cuales ofrecen muy diferentes presentaciones para el mismo contenido al no estar estandarizados.
- Tecnologías que permiten interacción como AJAX y DHTML tienen soporte limitado.
Ventajas del enfoque NATIVO:
- Nuevas oportunidades de negocio.
- Aplicaciones pueden interactuar directamente con el dispositivo.
- Control detallado de qué se muestra y cómo se muestra.
- Múltiples formas de interacción con el usuario disponibles (de acuerdo al dispositivo, por ejemplo, pantalla táctil, teclado).
- Rendimiento mejorado y optimizado de acuerdo a cada dispositivo.
- Se puede mantener la consistencia de la interfaz (como se ve, como se interactúa, como responde) a través de las múltiples plataformas en las que se distribuya la aplicación.
- Capacidad de trabajo "fuera de línea".
- Flexibilidad en las opciones de configuración de la aplicación, dándole control total al usuario.
- Comercialización simple: el usuario paga por la aplicación y la descarga (es un evento claramente identificable para efectos de cobro).
Desventajas del enfoque NATIVO:
- Dificultad para mantener la portabilidad (disponibilidad en múltiples plataformas) de la aplicación debido a la enorme cantidad de diferentes dispositivos que son lanzados continuamente.
- Fragmentación de ambientes de desarrollo, lo que requiere conocer y entender cosas únicas de cada ambiente y es difícil determinar cuál es el más adecuado para desarrollar una aplicación particular (¿se usa J2ME o Flash Lite o C/C++?)
- Mayores costos de desarrollo debido a que el conocimiento es más especializado.
- Menor velocidad de desarrollo por su complejidad.
- Dificultad para cumplir los múltiples y variados requerimientos que cada proveedor de servicio exige.
- Pruebas costosas puesto que toca tener los dispositivos físicos.
- Mercado puede requerir migración de aplicación a otras plataformas.
- Modelo de distribución es complicado, si se usan las App Store se puede necesitar autorización adicional.
- Corregir un error / sacar una nueva versión implica volver a descargar la aplicación y considerar la migración de los datos actuales.
Como se puede ver la decisión no es fácil y depende mucho de lo que se quiere respecto a la aplicación.
Si la aplicación es una extensión de algo que ya existe en la WEB (y que se está migrando o extendiendo al ambiente móvil), y no requiere mucha interacción con el usuario entonces el enfoque WEB sería adecuado.
Si la aplicación requiere acceso a datos que están en el dispositivo (como la agenda, o la información de algún contacto), necesita interactuar con el usuario, tiene reducida la variedad de dispositivos a los que tiene que llegar (por ejemplo, aplicaciones sólo para iPhone), y/o usa características que son generales a todos los modelos (por ejemplo J2ME básico sin extensiones del fabricante), entonces el enfoque NATIVO sería adecuado.
En resumen: es más rápido y barato el enfoque WEB, pero hay mayor integración y rendimiento con el enfoque NATIVO.
Hay que tener en cuenta que los ambientes de desarrollo se encuentran evolucionando rápidamente: Flash podrá ejecutarse en los navegadores de los dispositivos móviles dentro de poco y eso hará más fácil desarrollar aplicaciones móviles que usen la WEB; la diversidad de sistemas operativos seguirá disminuyendo, de los 5 "grandes" que tenemos ahora mismo (Android, iPhone, Symbian, WebOs, Windows Mobile), pasaremos a 3 en el mediano plazo (Android, iPhone, Windows Mobile o Symbian), y eso hará más fácil desarrollar aplicaciones móviles NATIVAS.
Mi conclusión es que la evolución de la tecnología hará cada vez más fácil usar cualquiera de los enfoques, y así como Internet y las aplicaciones WEB no han abolido las aplicaciones nativas en PC, el enfoque móvil WEB no acabará con el enfoque móvil NATIVO por lo que ambos deben considerarse siempre a nivel de desarrollo de aplicaciones.
Si su negocio es desarrollo de aplicaciones y quiere ir a desarrollar aplicaciones móviles (o quiere entrar a ese negocio) debe entonces tener en cuenta que necesita tener la capacidad de usar las dos opciones.