Los teléfonos inteligentes y sus aplicaciones son la nueva forma del mundo, y los desarrolladores se sienten atraídos por su creciente popularidad. Pero con dos plataformas principales: iOS recientemente actualizado y renombrado de Apple y Android de Google, compitiendo entre sí, ¿cómo elige un desarrollador entre ellas?
De hecho, ¿cómo les iría a los desarrolladores interesados en la máxima exposición de sus aplicaciones al apuntar a cualquiera de las plataformas, o a ambas? ¿Qué obstáculos existen y cómo los supera un desarrollador? Echaré un vistazo a estas preguntas y transmitiré consejos de desarrolladores experimentados en ambas plataformas.
Lenguajes de programación
Para los desarrolladores que tienen una aplicación en mente y visualizan su código ejecutándose en múltiples plataformas móviles, las cosas son difíciles en el mundo de hoy.
Las aplicaciones de Android están escritas en el lenguaje de programación Java. Muchos desarrolladores han hecho carreras en empresas al volverse muy competentes en Java, por lo que desarrollar para la plataforma Android es una opción natural para esas personas.
Por otro lado, las aplicaciones que se ejecutan de forma nativa en el sistema operativo iPhone están escritas en el Objective-C de Apple, un dialecto del lenguaje C más común que tiene elementos de Smalltalk. (Técnicamente hablando, Objective-C es un lenguaje pequeño y estricto de superconjunto sobre C, por lo que cualquier programa C compilará con un compilador Objective-C, y un desarrollador puede incluir código C dentro de una clase Objective-C). Desarrolladores que tienen Pasaron sus carreras trabajando con C y C ++, probablemente no encontrará que Objective-C sea un lenguaje difícil de aprender, aunque puede haber obstáculos en el camino.
“No hay una forma obvia de escribir un conjunto de códigos que apunte a ambas plataformas”, dice Matthew Baxter-Reynolds, director de AMX Software Ltd., una firma de desarrollo de software en Inglaterra, y autor del próximo libro Desarrollo multimobile: creación de aplicaciones para Cualquier teléfono inteligente “No puede ejecutar Java en iPhone y tampoco puede ejecutar Objective-C en Android”.
Escribir para múltiples plataformas
Esa fue la historia por un tiempo: tenía que desarrollar sus aplicaciones en el idioma nativo para cada dispositivo. Sin embargo, durante el último año, han surgido nuevos kits de herramientas y plataformas de desarrollo en el mercado para que los programadores puedan crear aplicaciones para iPhone sin tener que estudiar Objective-C.
Los kits de herramientas como Rhodes de Rhomobile, PhoneGap de Nitobi, Titanium de Appcelerator y Corona de Ansca hacen que sea relativamente sencillo crear aplicaciones que se ejecutarán en alguna combinación de las plataformas iPhone, BlackBerry, Windows Mobile, Symbian y Android.
Sin embargo, estos emuladores y capas de tiempo de ejecución son nuevos y no tienen todas las funciones. Si bien las aplicaciones simples que acceden a la Web y devuelven información al teléfono son apropiadas para este tipo de marcos, las aplicaciones móviles que dependen de cálculos intensos y acceso pesado a la base de datos, que incluye algunas aplicaciones de línea de negocio personalizadas, no son buenos candidatos, porque ejecutar un marco de compatibilidad exige una penalización por sobrecarga en un procesador móvil de potencia limitada que la mayoría de los usuarios consideran inaceptable.
Además, actualmente no hay buenas soluciones para proporcionar soporte multiplataforma para una aplicación gráficamente intensiva, como un juego o un editor de video.
En otras palabras, todavía no hay nada que cambie el hecho de que está trabajando con dos plataformas diferentes y dos idiomas nativos diferentes. Por ahora, la solución es reescribir la aplicación en el idioma nativo de la plataforma de destino deseada.
Sistemas cerrados vs. sistemas abiertos
Algunos desarrolladores prefieren Android porque proporciona una plataforma de desarrollo abierta, en la que se pueden implementar aplicaciones ricas con conjuntos de funciones que pueden cambiar el juego. Los desarrolladores pueden aprovechar el hardware del dispositivo Android, crear aplicaciones que reconocen la ubicación accediendo al GPS y otra información sensorial en el dispositivo, configurar alarmas para recordar a los usuarios los eventos, incluir notificaciones y otra información en la barra de estado del dispositivo, y más.
En contraste, los iPhones tienen dificultades para mostrar múltiples notificaciones, ya que las aplicaciones están restringidas a mensajes emergentes que se muestran solo uno a la vez. Además, los desarrolladores de Android, al menos en los Estados Unidos, pueden aprovechar las diversas funciones del operador en todo el espectro de dispositivos Android, mientras que los dispositivos iPhone están limitados a las funciones de red que permite AT&T.
Con la funcionalidad del kit de desarrollo de software de Android (SDK), un desarrollador puede crear aplicaciones que usan la pantalla táctil o el teclado del dispositivo. Este es un punto importante, ya que los desarrolladores de Android tienen que acomodar un conjunto más grande de dispositivos, todos con diferentes configuraciones de hardware.
En un artículo reciente de TechRepublic, Justin James informó que Jason Chen, un defensor de desarrolladores de Android en Google, dijo que los dos obstáculos más grandes que deben superar los desarrolladores de Android por primera vez son comprender y manejar la multitarea en la plataforma Android y lidiar con gracia con las interrupciones de la aplicación, como recibir un mensaje de texto SMS entrante o una llamada telefónica.
Por otro lado, a los desarrolladores les va bastante bien al escribir aplicaciones para el iPhone, al menos al principio. Dado que el sistema operativo del iPhone es un sistema cerrado, creado específicamente por Apple para sus propios dispositivos, los desarrolladores tienen un espectro conocido de dispositivos para apuntar, con un alcance bien definido de capacidades y limitaciones.
Algunos desarrolladores informan que este modelo de sistema cerrado mejora la usabilidad, un rasgo por el cual los productos de Apple han sido tradicionalmente elogiados. Con una integración tan estrecha del teléfono, el sistema operativo y las aplicaciones de terceros, las expectativas definidas de los usuarios se cumplen con un mínimo de alboroto para obtener una aplicación en el teléfono, qué hace cuando está en el teléfono y qué características tendrá esa aplicación apoyo.
Eso es algo bueno desde la perspectiva del tablero de dibujo, pero en algunos casos, por ejemplo, donde su software podría funcionar mejor, o al menos de manera diferente, con un tipo diferente de dispositivo, limita la flexibilidad que los desarrolladores tienen para crear aplicaciones.
Recursos de aprendizaje y herramientas de prueba.
Ponerse al día es una parte importante del proceso de desarrollo. Apple ofrece información para desarrolladores de aplicaciones de iPhone en muchas formas, incluyendo multimedia. “Los conceptos importantes se explican en videos, lo que facilita la comprensión de los conceptos”, dice David Green, desarrollador de software de MAKE Technologies Inc. en Vancouver, Columbia Británica. “Sin embargo, descubrí que los videos progresaban lentamente y estaba viendo lo que parecían horas para encontrar información que debería haber tomado minutos”.
Por el contrario, el soporte de Android de aplicaciones de código abierto hace que sea fácil aprender de las aplicaciones de muestra y otros programas. “También descargué muchos proyectos de Android de código abierto para obtener ideas sobre arquitectura y uso de API. Esta es un área donde Android tiene la ventaja, [ya que] con la política anterior de NDA de Apple no hay mucho en términos de código abierto para iPhone “, dice Green.
Por supuesto, el entorno de desarrollo y las herramientas de prueba constituyen una parte significativa de la experiencia general para los creadores de aplicaciones. Green dice que aquí, Android es el claro ganador. “El desarrollo de Android aprovecha las excelentes herramientas JDT, que son prácticamente estándar y estándar en cada instalación de Eclipse”, dice. “He usado estas herramientas durante muchos años y son excelentes. Todo lo que Java está indexado, el IDE tiene un modelo rico del código fuente, y la refactorización es tan perfecta que ha cambiado la forma en que trabajo”.
Por otro lado, el entorno de desarrollo integrado (IDE) Xcode de Apple no está a la altura, según Green. “Xcode es tan sorprendentemente malo que casi no sé por dónde empezar”, dice.
Green sugiere que, como mínimo, Xcode debería mejorarse para incluir un sistema de gestión de Windows / editor decente para facilitar su uso, documentación API integrada para ahorrar tiempo y funcionalidad de asistencia de contenido que representa un conjunto de estilos de codificación más amplio que el que está disponible ahora. “La asistencia de contenido proporcionada por XCode a menudo es incorrecta y casi siempre sugiere un pequeño subconjunto de lo que está realmente disponible”, dice Green.
¿No se permite Java o Flash?
Últimamente, se ha hecho mucho de la disputa pública de Apple con Adobe sobre la estabilidad y la máxima utilidad de la tecnología Flash Web de este último. Apple, en el pasado, arrojó de manera similar el lenguaje Java en una luz negativa. En un dictamen que probablemente provenga directamente de la parte superior (Steve Jobs), la compañía decretó que el iPhone y sus diversas tecnologías hermanas y hermanas no admitirán Flash o Java. Durante el reciente lanzamiento de iOS 4.0, se le preguntó a Jobs si era probable que esta posición cambiara. “No”, dijo.
En un entorno donde solo unos pocos toques o clics le permiten descargar, instalar y ejecutar una aplicación, todo sin interrupciones y de forma inalámbrica, se puede argumentar que se deben emplear ciertas protecciones razonables para proteger a los usuarios de las aplicaciones mal intencionadas. Aún así, eso limita la flexibilidad que los desarrolladores con conocimientos en esas plataformas de medios enriquecidos tienen para crear aplicaciones para el iPhone, particularmente cuando el audio, el video, las animaciones, etc. son componentes centrales de una aplicación.
“En este momento, hay algunos signos de interrogación sobre las licencias de SDK de Apple con respecto a si Apple permitirá, de forma continua, aplicaciones en la App Store que se hayan escrito utilizando capas intermedias o herramientas de conversión”, dice Baxter-Reynolds.
“El mensaje que [Apple está] presentando en este momento es que las aplicaciones de iPhone deben escribirse de forma nativa para ese dispositivo y, por lo tanto, los desarrolladores pueden tener dificultades para mantener y desarrollar un único conjunto de código que incluya iPhone en su conjunto de plataformas de destino”. él dice. “Esto es una vergüenza particular porque será por razones legales y no por razones técnicas”.
Aprobación y pago
Las limitaciones en la plataforma de iPhone no han frenado la popularidad del teléfono en sí, que continúa vendiéndose en grandes cantidades, o el éxito de la tienda de aplicaciones iTunes, que tiene más de 225,000 aplicaciones para iPhone, iPod y iPad en venta.
Apple también ofrece una API abierta para desarrolladores que no desean enviar sus aplicaciones para su revisión y aprobación en la App Store. Estos desarrolladores pueden alojar la aplicación empaquetada en su propio sitio e indicar a los usuarios que visiten esa ubicación para descargar e instalar el código. Pero claramente, al implementar aplicaciones de iPhone de esta manera, un desarrollador pierde miles y miles de globos oculares que navegan exclusivamente en la App Store y se separan de su dinero en ese lugar.
Los desarrolladores que siguen la ruta de la App Store pueden suscribirse a la ruta estándar del Programa de Desarrolladores de iPhone, que les permite recibir el 70% de los ingresos por ventas sin pagar ningún costo de distribución de la aplicación. Sin embargo, para usar el iPhone SDK, los desarrolladores deben pagar una tarifa anual de $ 99, después de lo cual reciben la firma del certificado digital necesaria para vender la aplicación en la App Store.
El proceso de aprobación, que en 2009 fue a menudo de semanas, se ha reducido a solo unos días, aunque las aplicaciones específicas de iPad pueden enfrentar retrasos más largos en este momento.
Por el contrario, Android Market no tiene restricciones sobre el idioma en que se escriben las aplicaciones, las funciones que realizan o cualquier otra propiedad de la aplicación. Los desarrolladores que se registran en el Android Market pagan una tarifa única de $ 25 para registrarse, y el 70% de los ingresos posteriores van al desarrollador. Los desarrolladores también son libres de publicar las mismas aplicaciones en otros mercados de aplicaciones sin enfrentar ninguna restricción.
Mirando hacia el futuro
En última instancia, los argumentos a favor y en contra de los enfoques adoptados por Apple y Google son irrelevantes desde la perspectiva de los usuarios finales, los eventuales consumidores de las aplicaciones que crean los desarrolladores. Lo que importa para todos, excepto para la minoría más pequeña de clientes, es la experiencia general: el matrimonio de forma y función.
Además, el avance de la tecnología generalmente deja obsoletos los argumentos sobre kits de herramientas y plataformas. Como señala Baxter-Reynolds, el próximo estándar HTML 5 resolverá gran parte del argumento de Adobe-Apple para muchos desarrolladores.
“No todo es pesimismo”, dice. “Tanto Android como el iPhone utilizan el fabuloso marco de navegación WebKit, que se compromete a admitir completamente HTML 5 y que eventualmente se convertirá en una plataforma de aplicaciones multiplataforma por derecho propio en los próximos años”. Desarrollar en HTML 5, además, significará una amplia documentación para aprender sobre el lenguaje y la libertad de desarrollar código HTML en cualquier entorno que un desarrollador desee.