Proyecto de expresión y espacio para la tecnología, cultura, empresa, estética y humanidades en general Introducción a la programación para dispositivos móviles.
28 de septiembre de 2013 Quien se adentre en el espacio de la programación para dispositivos móviles por primera  vez se encontrará que no es tan sencillo. Por un lado la información que está dispersa por  la red es inmensa, hay que navegar mucho, mucho, mucho y hay que leer mucho,  mucho, mucho. Además no toda la información disponible es precisa y a menudo hay que  intentar discriminar, cuando a veces no se sabe cual es la dirección correcta. La moderna  teconología móvil avanza tan rápidamente que lo que es una novedad, en poco tiempo   puede quedar completamente obsoleto, por lo que los conocimientos habrán de  actualizarse convenientemente, pero sin embargo las páginas de internet allí quedan y el  riesgo de consultar información que ya no vale, o vale muy poco, existe, y para colmo,  algunos artículos sin actualizar aparecen sin fecha, por lo que el nivel de confusión  aumenta. Con este artículo mostraré un tablero de juego organizado, a día de la fecha  indicada en la cabecera, en el que se identifique claramente los distintos elementos que  forman parte y que se podrán utilizar según convenga.  Como todo en tecnología, el contenido de este mismo artículo ha de tomarse con cautela  y considerar siempre el momento temporal en el que ha sido escrito, pues soy  plenamente consciente que habrá de quedarse obsoleto en poco tiempo.  Empecemos por la base, ¿qué podemos considerar como dispositivo móvil?. Si buscamos  por internet nos encontraremos ya el primer problema. La información de la wikipedia se  escribió en el año 2005, además es un artículo inacabado. Otras páginas web muestran  información tan antigua como la wikipedia, pero con el mal gusto de no indicar la fecha en  la que se ha escrito. Se puede observar también cómo unas páginas se copian  información de otras y hacen referencias a los mismos aspectos. Se pueden encontrar  definiciones circenses como "suelen tener una pantalla y botones pequeños" o que  "entran en un bolsillo".  A efectos de este artículo, no entraremos en características físicas o funcionales, ya que  éstas pueden cambiar de la noche a la mañana: terminales de telefonía móvil cada vez  más grandes, dispositivos híbridos entre tablets y ordenadores portátiles, móviles  acoplados a tablets, etc. A efectos de este artículo  consideraremos como dispositivo móvil las  tablets PC y los teléfonos móviles inteligentes  (smartphones). Los ordenadores portátiles o  laptops,  aunque pudieran considerarse como  dispositivo móvil, se dejarán fuera de este  estudio por poseer características operativas  similares al PC.  Nos centramos entonces en tablets y  smartphones. Una vez que hemos identificado el tipo de  dispositivos móviles que vamos estudiar, nos  interesa saber, con el objeto de tener una visión global, qué empresas fabricantes  dominan el mercado.  Empecemos con los teléfonos móviles, para ello utilizaremos la  información que Gartner, la empresa líder mundial en investigación en tecnología de la  información, ha publicado en febrero de este año. Se puede observar que Samsung y  Nokia (ahora comprado por Microsoft),  lideran el mercado, seguidos de lejos  por Apple. El resto de fabricantes  tienen muy poca cuota de mercado,  comparado con los tres primeros. ¿Pero qué pasa con las tablets?. En el  mercado de las tablets la situación  cambia drásticamente. Véase el  siguiente gráfico, cno datos  procedentes de IDG, donde Apple es  todavía dueño y señor del mercado de  las tablets a pesar de la drástica  pérdida de cuota de mercado. Le sigue  Samsung a una enorme distancia.  Ya vamos perfilando el tablero de juego. Los actores principales son Samsung, Nokia y  Apple en el mercado de smartphones y Apple y Samsung en el  mercado de tablets.   Pero el dispositivo físico no sirve para nada sin el correspondiente  sistema operativo. Veremos aquí que las cosas están muy claras:  Tanto para teléfonos móviles como para tablets, el mercado lo  dominan dos sistemas operativos, iOS de Apple y Android de Google,  pues ambos dos juntos tienen cuota de mercado cercana al 90%. Sin  embargo la cuota de mercado de ambos se invierte, ya se hable de  telefonía móvil (69,7% para Android y 20,9% para iOs) o se hable de  tablets (63,5% para iOS y 24,4% para Android).  Pues nada, ya tenemos una visión más clara de la situación, si  queremos construir una aplicación para dispositivos móviles y que  ésta esté disponible para el mayor número de clientes posibles, los  sistemas operativos más utilizados son iOS y/o Android.   La cuestión que se nos plantea ahora es el tipo de dispositivo, si  elegimos Android tendríamos más visibilidad a través de los teléfonos  móviles, pero no en las tablets. Nos podría ayudar otro tipo de  información tal como "la publicidad en tablets es tres veces más  efectiva que en teléfonos", o como "la gente prefiere tablets a  teléfonos a la hora de navegar". En cualquier caso este tipo de  información hay que tomarla con cautela pues ya sabemos que los  dispositivos pueden cambiar radicalmente y ya desde principios de  año la empresa española bq ha sacado al mercado una tablet de 7  pulgadas con función de teléfono, por lo que si esto fuese una  incipiente tendencia, la frontera entre teléfonos y tablets empezaría a diluirse, y las reglas del juego cambiarían  rápidamente.  Pero ¿por qué elegir un sistema operativo para programar?, ¿qué hay de eso de la multiplataforma?, ¿No se podría realizar  una aplicación que sirva para todos los sistemas operativos?.   Y aquí es donde toca hablar de la filosofía UNCOL, algo que estudié en la universidad, a finales de los años 80, en el siglo  pasado. UNCOL son las siglas de Universal Computer Oriented Language. Se propuso en los años 50 del siglo pasado y era un  intento de crear un lenguaje intermedio  universal que solucionara el problema de la  multiplataforma. Si suponemos la existencia  de X lenguajes de programación y de Y tipos  de procesadores distintos, crear un  compilador para cada lenguaje y que se  ejecutara en cada procesador, requería X*Y  compiladores distintos. Si el código de cada  lenguaje de programación se tradujera al  lenguaje intermedio UNCOL y éste generara  código objeto para cada procesador, el  esfuerzo sería de X+Y programas. Decir que UNCOL nunca se implementó, a  pesar de varios intentos serios. Sin embargo  el problema de la multiplataforma siempre ha  estado ahí y aunque la tecnología ha avanzado  a ritmos frenéticos la dicotomía entre desarrollo interpretado y desarrollo nativo sigue estando presente. Y el mundo de  los dispositivos móviles no es una excepción.   Se han construido una serie de sistemas que pretenden dar una solución al problema de la multiplataforma en los  dispositivos móviles, con mayor o menor éxito, como pueden ser PhoneGap, Appcelerator, Adobe Air mobile, Ansca  Corona. Sin embargo estos sistemas adolecen de algunas limitaciones que podrían estar relacionadas con la seguridad,  rendimiento, presentación, infraestructura etc.  Por supuesto, la elección dependerá del tipo de aplicación a desarrollar y el objetivo que busquemos con ella. Si podemos  asumir las limitaciones de los entornos de programación multiplataforma, entonces quizás sean estos una buena opción.  Pero si nos jugamos dinero o prestigio o necesitamos un gran rendimiento entonces es recomendable la programación  nativa.  Respecto a Android, decir que está basado en el sistema operativo Linux y su programación se realiza, básicamente, con  Java. El entorno de desarrollo estándar incluye un emulador de dispositivos, herramientas para depuración de memoria y  análisis del rendimiento del software. El entorno de desarrollo integrado es Eclipse usando el plugin de herramientas de  desarrollo de Android. El SDK (Software Developer Kit) de Android, proporciona las API's necesarias para el desarrollo de  aplicaciones, las cuales cubrirán gran parte de las necesidades. También tenemos a nuestra disposición el API nativo para  Android o Android NDK que permite el uso nativo de la plataforma Android y programar a más bajo nivel compilando para  C/C++.   Hay otras herramientas para progamar  Android, no es objetivo de este artículo  repasarlas todas, porque hay suficiente  información en internet, pero para quien  quiera acceder a más información sobre  Android, la página de androideity me gusta  bastante, contiene mucha información y  pienso que bastante bien estructurada.  Por su parte, la programación en IOs, requiere  como infraestructura los productos de Apple,  tanto software como hardware. El lenguaje  utilizado es Objective-C, un lenguaje  orientado a objetos, y el entorno de  desarrollo se llama Xcode que se  suministra gratuitamente con Mac OS  X. Al igual que en el caso de Android,  existen otras alternativas a Xcode,  tales como Marmalade SDK y  DragonFire SDK, que son capaces de  generar aplicaciones perfectamente  válidas, pero si se necesita perfección  gráfica y rendimiento óptimo, lo mejor  es el sistema nativo.  Pero en la elección de la plataforma también influye el tipo de aplicación que se desea construir. Por ejemplo, no es lo  mismo crear una aplicación tipo web con html que una aplicación para uso empresarial o un juego, dado que pueden  variar tanto las técnicas de programación como las exigencias de rendimiento o calidad gráfica.  Bueno, ya hemos creado nuestra aplicación, ¿y ahora qué?. Pues lo lógico es publicarla en el lugar adecuado. Y ese lugar  es Android Market para las aplicaciones Android y Apple Store para las aplicaciones en iOS. ¿Qué hay que hacer para  publicarlas?. Dar los detalles aquí se escapa del propósito de este artículo, pero como Internet es grande, la información  que aparece en los enlaces siguientes me han parecido interesantes para aprendera a publicar en Android Market y  publicar en Apple Store.  Espero haber dibujado un mapa sencillo que pueda servir para posicionarnos en el complejo y cada vez más amplio  mundo de la programación para dispositivos móviles.  ÚLTIMAS ENTRADAS INFORMÁTICA Las v’s de los datos (I). Volatilidad. Introducción a la programación para dispositivos móviles. La eterna presencia del fantasma del número mágico. Introducción Ver todas las entradas BUSINESS ADMINISTRATION La carrera profesional también se gestiona. Orientación al servicio informático: Una relación gana-gana. Cuadrante mágico para plataformas ETL y BI. Introducción Ver todas las entradas PSICOLOGÍA El miembro fantasma. Criterios diagnósticos. Psicología científica, básica y aplicada. Introducción Ver todas las entradas FOTOGRAFÍA Galería fotos de Córdoba. Introducción Ver todas las entradas AJEDREZ IX torneo media hora, ciudad Ávila. I open ciudad de Jaca. Torneos en Mislata - Valencia. Introducción Ver todas las entradas MERCADOS BURSÁTILES Elliot, Fibo y el 61,8% 1 año del juego de las tres carteras. Señal TCM en Telefónica. Introducción Ver todas las entradas MISCELÁNEO RABASCO-MENDÍVIL recital piano cuatro manos. Ciclo de conferencia del CEC. Ética radical, la puerta de Texas y la tía Norica. Introducción Ver todas las entradas Información legal