sábado, 29 de noviembre de 2014

Herramientas de la programación móvil

ELIZABETH RAMIREZ   1151256
OMAR CONTRERAS       1151226
CRISTIAN CONTRERAS    1151220



Programación móvil: Qué herramienta y 

lenguaje elegir

En casi cualquier ámbito de programación que escojas, hoy en día tienes disponibles infinidad de herramientas, lenguajes y entornos que puedes elegir. Toda esa maraña de opciones hacen que, en ocasiones, sea muy complicado decantarse por una opción u otra.
En el mundo del desarrollo para móviles y tabletas pasa lo mismo. Actualmente dispones de muchas opciones si te quieres dedicar a este ámbito, y en concreto debes elegir entre:
  1. Los lenguajes y herramientas nativos de cada plataforma: ObjectiveC/Swift y XCode en iOS, Java y Android Studio en Android, C#, XAML y Visual Studio en el caso de Windows Phone y Windows 8....
  2. Herramientas multiplataforma que compilan a código nativo. La más conocida y utilizada es Xamarin.
  3. Herramientas multiplataforma basadas en HTML. La más conocida es PhoneGap/Apache Cordova, pero existen muchas más.
Cada una de estas opciones tiene sus ventajas e inconvenientes, así que ¿cuál deberías elegir?.
En este post repasaremos por encima las principales opciones que existen a la hora de realizar programación móvil con sus ventajas e inconvenientes, y te daremos unas pautas básicas para ayudarte a decidir por dónde tirar.

Desarrollo Nativo

Está claro que, siempre que puedas, el desarrollo nativo es la mejor gran opción.
El problema es que cada plataforma (iOS, Android, WP...) es un mundo. Cada una de ellas utiliza un lenguaje de programación diferente, herramientas propias y paradigmas de programación particulares. A cambio obtienes la máxima flexibilidad, adaptación total al entorno en el que se ejecuta la aplicación y el máximo rendimiento.
La desventaja principal es que tienes que dominar muchos lenguajes y herramientas y que el tiempo de desarrollo se multiplica mucho, pues es necesario crear desde cero tres versiones diferentes de la misma aplicación (una para cada plataforma).
Por regla general los programadores se especializan y eligen una única plataforma, de modo que puedan dar lo mejor de si mismos en ésta.
Por ejemplo, si decides especializarte en iOS y así programar para la popular plataforma iPhone/iPad, entonces deberás aprender a programar con ObjectiveC o Swift y a utilizar el entorno XCode, comprándote además un ordenador Mac.
Tratar de abarcarlas todas es muy complicado, aunque desde luego siempre es una opción.

Desarrollo multiplataforma compilado a nativo

Una opción de compromiso es utilizar alguna plataforma de desarrollo mixta que independiza el desarrollo del lenguaje nativo de cada plataforma móvil.
Con este tipo de herramientas se utiliza un único lenguaje y se crean aplicaciones para todas las plataformas, eso sí, adaptando algunas cuestiones para poder funcionar en cada caso. Lo bueno es que te permite conocer un solo lenguaje,reutilizar gran parte del código entre todas, y generar aplicaciones nativas para todos los entornos móviles.
La más conocida es, sin duda, Xamarin. Está basada en el lenguaje C# de Microsoft y en la plataforma .NET, y gracias a sus herramientas permite crear aplicaciones para todas las plataformas, reutilizando gran parte del código (a excepción de la interfaz).
Si ya conoces C# y .NET, aprender Xamarin te ayuda a aprovechar los conocimientos que ya posees y con ellos desarrollar para todas las plataformas móviles relevantes del mercado (iOS, Android y Windows Phone).
Se obtienen muchas ventajas de su uso, pero fundamentalmente dos:
· Puedes programar en algo que ya conoces y evitar aprender nuevos lenguajes innecesariamente.
· Tus aplicaciones funcionarán con pocos cambios en varias plataformas.
O sea, al final ahorras tiempo, esfuerzo y llegas antes al mercado.
Las aplicaciones escritas con Xamarin en C# se compilan a código nativo en cada plataforma, por lo que su rendimiento es exactamente el mismo que el de una aplicación nativa. Además ofrece acceso directo nativo a todas las APIs de cada plataforma así como a los controles de interfaz de usuario nativos (de hecho esto es lo que debes aprender con Xamarin para cada plataforma de manera diferente según quieras programar para iOS, Android o Windows Phone).
Xamarin-Apps-Nativas

Desarrollo multiplataforma basado en HTML5

Una opción muy popular, sobre todo si eres un programador Web, es utilizar alguna herramienta basada en HTML que genere aplicaciones para todas las plataformas. Existen muchas, pero la más conocida es PhoneGap/Apache Cordova.
Las apps escritas en HTML5 y compiladas con PhoneGap, permiten crear la interfaz usando HTML, CSS y JavaScript, lenguajes muy conocidos y utilizados, y desplegar a las diferentes plataformas. En cada una además podemos utilizar un “skin” concreto para que el aspecto sea lo más similar posible al de las aplicaciones nativas. PhoneGap y similares crean un contenedor para la aplicación que la ejecuta como si estuviesen en un servidor web local. Además exponen gran parte de la funcionalidad nativa del dispositivo móvil a través de librerías JavaScript, de modo que es muy sencillo “engancharse” desde la aplicación HTML5 que estamos creando.
PhoneGap es una plataforma muy interesante si eres un programador web y si además tu aplicación dispone de una versión web.
Entre las desventajas principales están que las aplicaciones no tiene el mismo rendimiento que una app nativa, ni tampoco te dan acceso a todas las APIs nativas de cada plataforma. aunque sí a todas las importantes. Además, aunque algunas bibliotecas como jQuery Mobile te dan la opción de adaptarse al aspecto de cada sistema operativo móvil, no puedes simular todos los controles nativos (aunque sí muchos de ellos).
Si ya conoces HTML, CSS y JavaScript, entonces PhoneGap te deja construir aplicaciones para cualquier plataforma móvil usando lo que ya sabes, y te brinda la funcionalidad necesaria para poder construir el 90% de las aplicaciones habituales que puedas necesitar, con un rendimiento adecuado también para el 90% de los casos.
Si lo que quieres es una aplicación súper-especial que entre muy a bajo nivel (por ejemplo un juego complicado) y que sea muy compleja en cuanto a interfaz y por lo tanto el rendimiento es muy importante, entonces PhoneGap seguramente no es para ti.

¿Cuál escojo entonces?

Para ayudarte a decidir hemos creado este sencillo diagrama de flujo:
Elegir-Entorno-Programacion-Movil

En resumen y para darte una ruta más clara:
  • Si vas a programar para una sola plataforma (por ejemplo, Android) y no conoces C# ni HTML, entonces aprende las herramientas y el lenguaje nativo.
  • Si quieres tener una aplicación para todas las plataformas, entonces tus opciones son:
    1. Aprende ObjectiveC y Cocoa Touch para iOS, Java y el SDK de Android para Android, y C#/XAML para Windows Phone.
    2. Usa C# y Xamarin y ataca todas las plataformas.
    3. Usa HTML5 y PhoneGap (u otra herramienta simular) y  ataca todas las plataformas.
Como podemos ver, al final todo se reduce fundamentalmente a dos cuestiones fundamentales:
  • Conocer de qué punto partes (qué sabes y qué quieres/puedes aprovechar)
  • Decidir para qué plataformas quieres programar.


Características de la programación móvil

Elizabeth Ramirez   1151256
Omar Contreras       1151226
Cristian Contreras    1151220


CARATERISTÍCAS DE LENGUAJES DE PROGRAMACIÓN PARA DISPOSITIVOS MÓVILES


1
1.1 Este lenguaje esta diseñado para la programación orientada a objetos
1.2 Una plataforma estándar para el desarrollo de aplicaciones
1.3 Abarca un gran tipo de dispositivos limitados no sólo teléfonos móviles
1.4 Se puede ahorrar demasiadas líneas de código
1.5 Se utiliza en el sistema operativo Android
1.6 Se ha convertido en una excelente opción para desarrollar juegos para móviles ya que se puede   desarrollar desde un PC y luego ser pasado fácilmente al dispositivo móvil.
2
2.1 JavaScript es un lenguaje de programación orientado a objetos
2.2 Su uso en aplicaciones externas a la web es bastante significativo
2.3 Se define como orientado a objetos,3 basado en prototipos, imperativo, débilmente tipado y    dinámico.
2.4 JavaScript se diseñó con una sintaxis similar al C
2.5 Tiene un formato scripting
2.6 Es un lenguaje de formato libre
3
3.1 Es un lenguaje de programación orientado a objetos
3.2 Es utilizado en el sisitema operativo Macs
3.3 Los objetos se crean en una memoria dinámica
3.4 Requiere conocimientos de lenguaje C
3.5 Lenguaje utilizado por Mac OS X.
3.6 Carga dinámica. Cargar clases en función de su uso. Hacen programas extensibles (Plug-ins)
4
4.1 Es un lenguaje de programación fácil de aprender y potente.
4.2 Es un lenguaje de programación dinámico orientado a objetos que se puede utilizar para muchos tipos de desarrollo de software
4.3 Ofrece un fuerte soporte para la integración con otros lenguajes y herramientas, cuenta con extensas bibliotecas estándar
4.4 Funciona en Windows, Linux / Unix, Mac OS X, OS / 2, computadoras de mano Palm y los teléfonos móviles de Nokia
4.5 Código 100% libre
4.6 Se distribuye bajo una licencia aprobada por OSI abierta que hace que sea libre de usar, incluso para los productos comerciales.
4.7 Es un lenguaje interpretado, fuertemente tipado y multiplataforma
5
5.1 Multiplataforma
5.2 Orientado a objetos
5.3 Amplia librería estándar
5.4 Tiene una licencia de software libre
5.5 Es un lenguaje dinámico
5.6 Es de código abierto
6 LUA - CORONA
6.1 Es un lenguaje de extensión
6.2 Se puede utilizar en diferentes plataformas
6.3 Los programas en Lua no son interpretados directamente, sino compilados a código bytecode, que es ejecutado en la máquina virtual de Lua.
6.4 Lua ofrece soporte para funciones de orden superior, recolector de basura
6.5 La semántica de Lua puede ser extendida y modificada redefiniendo funciones de las estructuras de datos utilizando metatablas
6.6 Se puede utilizar en la programación orientada a objetos
7
7.1 El objetivo de HTML5 no es solo para utilidad en la programación en los navegadores actuales, sino en la gran variedad de dispositivos móviles que hay en el mercado, tales como PDA, tablets, etc …
7.2 Se usa el lenguaje HTML5 web móvil para la creación de web móviles y aplicaciones móviles
7.3 Es una tecnología sin igual que funciona en las principales plataformas móviles (Phone, iPad, Android, Android Tablet, BlackBerry y Windows Phone 7)como una aplicación instalada y en navegadores móviles.
7.4 Tiene un soporte para la reproducción de vídeo sin necesidad de plugins.
7.5 Es ideal para permitir que las WebTVs basadas en Simple Web TV se puedan visualizar en Smartphones y Tablets que no dispongan del plugin Flash
7.6 Permite efectos visuales y animaciones más atractivas
8
8.1 El BASIC4Android, está realizado para poder hacer programas para el Android
8.2 No es necesario escribir en en el lenguaje de JAVA o XML para poder crear aplicaciones en Android
8.3 Su programación es muy similar a la que se utiliza en BASIC
8.4 Trabaja con librerías especializadas que nos permiten trabajar con la cámara del teléfono, GPS, bases de datos, Bluetooth, soporte para el protocolo HTTP, reconocimiento de voz o incluso contiene una librería para trabajar con el sistema de publicidad Admob.
8.5 Posee un diseñador de interfaces
8.6 No es gratuito ,pero es muy económico. Se puede adquirir una licencia individual por tan solo $35 dólares
9
9.1 Es una aplicación proporcionada por Google
9.2 permite a cualquiera crear aplicaciones de software para el sistema operativo Android.
9.3 Utiliza una interfaz gráfica muy sencilla, ya que permite a los/as usuarios/as arrastrar y soltar objetos visuales para crear una aplicación que pueda ejecutarse en los terminales cuyo sistema operativo sea Android.
9.4 Para utilizar la aplicación Inventor, no es necesario ser un programador profesional.
9.5 No se limita unicamente a juegos , pues también es posible construir aplicaciones para educar
9.6 Facilita el acceso al sensor de localización GPS
10
10.1 LiveCode permite crear aplicaciones potentes. Para escritorio, base de datos de Internet, y aplicaciones de red
10.2 incluye un completo constructor de interfaz gráfica de usuario, así como las herramientas que necesita para producir aplicaciones.
10.3 Esa basado en objetos. Esto hace que sea fácil escribir módulos de código que se unen directamente a los objetos individuales.
10.4 Es multiplataforma
10.5 Se puede utilizar como servidor o cliente
10.6 permite tanto ejecutar y editar una aplicación en vivo


¿Qué es la programación móvil?

Elizabeth Ramirez   1151256
Omar Contreras       1151226
Cristian Contreras    1151220


¿Qué es la programación?

La programación es el proceso de diseñar, escribir, depurar y mantener el código fuente de programas computacionales. El código fuente es escrito en un lenguaje de programación. El propósito de la programación es crear programas que exhiban un comportamiento deseado. El proceso de escribir código requiere frecuentemente conocimientos en varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y lógica formal. Programar no involucra necesariamente otras tareas tales como el análisis y diseño de la aplicación (pero sí el diseño del código), aunque sí suelen estar fusionadas en el desarrollo de pequeñas aplicaciones. 

¿Qué son dispositivos móviles? 

Un dispositivo móvil se puede definir como un aparato de pequeño tamaño, con algunas capacidades de procesamiento, con conexión permanente o intermitente a una  red, con memoria limitada, que ha sido diseñado específicamente para una función, pero que puede llevar a cabo otras funciones más generales. De acuerdo con esta definición existen multitud de dispositivos móviles, desde los reproductores de audio portátiles hasta los navegadores GPS, pasando por los teléfonos móviles, los PDAs o los Tablet PCs.


¿Qué es programación movil?

Programación Movil es desarrollar aplicaciones para aparatos como celulares, smartphones, PDA's, PocketPC's y dispositivos con recursos limitados. Hay que ser claros con la diferencia entre Programación Movil y Programación Embebida, que son cosas parecidas (recursos limitados) pero distintas en esencia. 
Sistemas Operativos para moviles están Symbian, Palm OS y Windows Mobile; así como una versión de Linux. 


Este auge tan importante de los dispositivos móviles es el escenario también de una batalla que se libra en diversos sentidos, pues los fabricantes de estos dispositivos compiten (en aspectos que van desde la innovación, hasta la legalidad) por tener una mayor en el mercado con sus productos. Así, este auge de los dispositivos móviles es también el escenario perfecto para el surgimiento de cada vez más y más aplicaciones orientadas a estos dispositivos y que tienen como finalidad satisfacer las necesidades del mundo moderno, como se había mencionado anteriormente. El desarrollo móvil es la actividad encaminada a la creación de aplicaciones o programas para dispositivos como los Smartphones y las Tablets, entre otros. Esta actividad es llevada a cabo por programadores y diseñadores, quienes valiéndose de las herramientas necesarias, como lenguajes de programación,APIs y SDKs, realizan aplicaciones para una plataforma móvil o para múltiples de ellas. Existen varias plataformas móviles; Bada de Samsung, Symbian principalmente de Nokia, Windows Phone de Microsoft, iOS de Apple, Blackberry OS de RIM, Android de Google, entre otras. Todas estas plataformas ofrecen la posibilidad de desarrollar aplicaciones específicas y distintas de las que incluyen por default, haciendo uso de las herramientas que las empresas propietarias de las mismas ofrecen para ello. Bada es una plataforma desarrollada por Samsung, la cual era incluida en muchos de los dispositivos de esta empresa, antes del surgimiento con gran intensidad del OS Android. La palabra Bada, significa Océano, en alusión a las grandes posibilidades que esta plataforma ofrece, de la misma forma que el Océano. El desarrollo para esta plataforma es realmente sencillo, pues las herramientas como el SDK ( Software Development Kit, Kit de Desarrollo de Software), el IDE (Integrated Development Environment, Entorno de Desarrollo Integrado) y emuladores están incluidos en un mismo paquete que puede descargarse desde el sitio oficial de desarrollo de Samsung. Sin embargo, presenta el inconveniente


de que limita a los desarrolladores en el uso de ciertas características que son muy importantes en los dispositivos móviles, como el GPS, acelerómetro, etc. El OS Symbian es una plataforma desarrollada originalmente por un conjunto de empresas como Samsung, Ericsson, Nokia, Siemens, etc. Actualmente, es mantenida principalmente por Nokia. Utiliza una IDE conocido como QT y un SDK para el lenguaje de programación C++, el cual es el lenguaje nativo de esta plataforma. Windows Phone es una plataforma desarrollada por Microsoft y es una versión mejorada del antiguo SO Windows Mobile, utilizado en terminales y dispositivos como PDAs entre otros. Este sistema operativo móvil ofrece como herramientas para su desarrollo a la plataforma de desarrollo .NET, sus lenguajes principales como C# y Visual BASIC., y el entorno Visual Studio. La plataforma iOS es desarrollada por Apple exclusivamente para sus dispositivos móviles, como lo son el iPhone, iPod, iPad y Apple TV. Goza de una gran popularidad y es rival directo de Android, otra plataforma bastante popular. El desarrollo para esta plataforma se lleva a cabo de manera nativa mediante el IDE Xcode, el cual incluye todas las herramientas necesarias, como el SDK y emuladores, para los dispositivos Apple. Utiliza el lenguaje de programación Objective C, es cual es una adaptación del clásico lenguaje C. Como desventaja, se puede mencionar que el desarrollo nativo solo puede realizarse bajo el Sistema Operativo OSX, lo cual supone una gran limitación pues es también necesario contar con una computadora Mac. La plataforma Blackberry es desarrollada por la empresa Canadiense RIM (Research In Motion). Es una plataforma sumamente popular entre los usuarios de dispositivos móviles, y sus dispositivos han sido reconocidos desde su origen por contar con un teclado QWERTY y estar enfocados al uso de oficina. En cuanto al desarrollo para esta plataforma, se ofrecen una variedad de herramientas y lenguajes. Es posible desarrollar, como en casi todas las plataformas, haciendo uso de tecnologías web; se puede usar Java de manera nativa, o adaptar aplicaciones para Android de tal forma que se puedan ejecutar en el Blackberry OS. Recientemente, RIM pretende lanzar una nueva versión de su plataforma, Balckberry OS 10, y con ella un nuevo SDK para lenguajes de programación como C++ y QML (un lenguaje basado en Javascript). Las herramientas de desarrollo consisten en un IDE el cual es una versión adaptada de Eclipse, la cual incluye el SDK, además del Emulador, el cual debe ser descargado de forma separada. PhoneGap o Cordoba es una plataforma de desarrollo móvil que actualmente está a cargo de la empresa Adobe. Esta plataforma permite la creación de aplicaciones web para móviles para posteriormente realizar un proceso de conversión y permitir la instalación de estas aplicaciones como si fueran nativas. De esta forma, es posible hacer uso de características que normalmente no estarían disponibles a través de las tecnologías web, como el acelerómetro, lista de contactos, etc.