martes, 13 de diciembre de 2016

Investigacion

En esta entrada del Blog realizaré mi investigación sobre todo lo que debe saber y tomar en cuenta un principiante para el desarrollo de aplicaciones y para esto empezaremos con los conceptos mas básicos hasta que herramientas elegir, sus ventajas y desventajas y cuál será el futuro.


El desarrollo de aplicaciones móviles se puede realizar mediante diferentes plataformas, las cuales presentan un propio sistema de codificación y de compilación, por lo que el potencial que presente cada elemento en desarrollo es diferente. Para poder desarrollar un elemento de aplicación para cualquier dispositivo móvil lo principal a conocer es el medio en el que esta funcionará, es decir el sistema operativo o plataforma final en el que se ejecutará y la forma en que lo hará. 


Una aplicación puede ser desarrollada para un medio en específico o de manera general, que se ejecute en equipos como computadoras portátiles y de escritorio, en teléfonos inteligentes que sean compatibles con los comandos de ejecución de la misma aplicación, hasta consolas de vídeo juegos portátiles. Por lo que es importante conocer las especificaciones técnicas que se utilizarán en el desarrollo de la aplicación, ya sea el sistema operativo en que funcionará o la cantidad de memoria que aplicará, e inclusive la funcionalidad que tendrá si se utiliza en segundo plano o primera instancia.

Ahora bien, ya sabemos que son aplicaciones móviles pero, qué es un dispositivo móvil?

"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".

Los Teléfonos y Tablets son los dispositivos móviles mas utilizados. 

Los teléfonos actualmente son los medios más comunes, no solo celulares o teléfonos inteligentes, hoy día en casa los teléfonos fijos pueden ser móviles y procesar una cantidad de información determinada, como los números de entrada, agendas, alarmas entre otras sencillas aplicaciones.

Las tablets se han desarrollado por una parte como sustituto de un PDA y una sencilla computadora portátil, pues presenta varias de las características de ambas en sus elementos principales, con las nuevas ventajas de la capacidad de procesamiento, el manejo de elementos multimedia y el uso de app´s desarrolladas especialmente para estos dispositivos como juegos, diccionarios, procesadores de texto, navegadores web, entre otros.



¿Qué es una plataforma móvil?

"Es el medio en el que se ejecutan las aplicaciones informáticas dentro de un dispositivo
móvil, estas plataformas pueden ser android, iOS, Symbian, tizen, Ubuntu Phone, entre otros".

Como ya expliqué en la introducción del Blog vamos a trabajar con el desarrollo de aplicaciones en la plataforma Android porque es el sistema operativo mas usado en la actualidad de manera que Android da la posibilidad de instalarse en prácticamente en cualquier dispositivo, sean móviles, portátiles hasta incluso microondas.



¿Qué es Android?

"Android es un sistema operativo creado por la prestigiosa compañía Google, el cual está pensado y desarrollado desde la ideología OpenSource, de ahí su enorme éxito y gran aceptación en el relativo poco tiempo de vida que tiene. Está basado en GNU Linux y enfocado a dispositivos móviles de todo tipo, ya sean teléfonos móviles, tabletas e incluso mini ordenadores portátiles, que ya podemos encontrar en el mercado.

Su corazón está gobernado por un Kernel totalmente basado en Linux, y es el encargado de acoplar y hacer que todos los componentes de nuestro terminal funcionen correctamente en el sistema operativo. En definitiva, el Kernel es una de las cosas más importante dentro de nuestro Android y, sin él, el S.O. no sería capaz de encontrar los componentes básicos de nuestro dispositivo, tales como el tipo de procesador y sus parámetros de uso, la conexión Wifi y sus protocolos de actuación o incluso la cámara de fotos".
http://culturacion.com/ 



Ventajas y desventajas 

A diferencia de iOS, el sistema propiedad de Apple, que solo se puede montar en sus propios dispositivos móviles, Android está liberado y es apto para que cualquier compañía tecnológica que lo desee, pueda implementar el código base y adaptarlo a sus dispositivos. Esto es una gran ventaja que nos ofrece Android con respecto a iOs, ya que podemos encontrar multitud de marcas y modelos que vienen fabricados en base a este simpático Androide verde.

Por el contrario, una de las grandes desventajas de Android con respecto al sistema operativo del gran genio de Cupertino, es en lo referente a las actualizaciones del sistema. Si bien en iOS las actualizaciones son automáticas y están para todos sus dispositivos a la vez, en Android esto es un poco mas difícil de conseguir, y mucho depende de que la compañía fabricante de nuestro terminal móvil, quiera o le salga a cuenta actualizar sus propios dispositivos.

Normalmente, estas grandes compañías dejan de lado a los terminales más viejos para dar soporte de actualizaciones a sus dispositivos más novedosos o últimos lanzamientos, cosa que indudablemente en iOS no ocurre y tratan a todas sus creaciones por igual.

También es bueno decir, que una de las grandes ventajas que tiene este sistema operativo pensado para móviles, es que al ser un sistema de código abierto, es fácil que podamos encontrar actualizaciones no oficiales a Firmwares más actuales que el que lleva de manera nativa nuestro dispositivo; pudiendo así de manera extraoficial darle algún tiempo mas de vida a nuestro pequeño aparato tecnológico.


Ya definidos los conceptos básicos, vamos con lo que es el desarrollo como tal, lo que necesito

¿Qué herramientas usar? 


En casi cualquier ámbito de programación que escojas, hoy en día tienes disponibles infinidad de herramientas, lenguajes y entornos que puedes elegir. Todas esas 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:


  • Los lenguajes y herramientas nativos de cada plataforma: Java y Android Studio en Android 
  • Herramientas multiplataforma que compilan a código nativo. La más conocida y utilizada es Xamarin. 
  • 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?.

Resaltaremos las principales opciones que existen a la hora de realizar programación móvil con sus ventajas e inconvenientes, y de mi investigación daré unas pautas básicas para ayudarte a decidir por cual iniciarte en el mundo de la programación móvil.



Desarrollo Nativo


El desarrollo nativo es la mejor gran opción.

Se define la aplicación nativa como aquella que está específicamente diseñada para ejecutarse en el sistema operativo de un dispositivo y en el firmware de la máquina, y que por lo general tiene que ser adaptada para distintos dispositivos




Características de las aplicaciones Móviles Nativa 

  • · Las aplicaciones se descargan desde el market de la plataforma móvil. 
  • · Se debe desarrollar una aplicación distinta por cada sistema operativo. 
  • · Se utilizan lenguajes de alto nivel con una plataforma y soporte ampliamente reconocimiento y utilizados a nivel mundial, tienen sus propias API y librerías. 
  • · Se utilizan kit de desarrollos propios de las plataformas. 


Ventajas de una aplicación nativa 

  • · La principal ventaja de una aplicación nativa es el poder beneficiarse de los canales de distribución de los market places de cada plataforma. 
  • · Al estar instalada en el propio Smartphone no es necesario contar con una conexión a internet, si bien es cierto que algunas partes de la aplicación pueden requerir de dicha conexión. 
  • · Gracias a su programación en lenguaje nativo del dispositivo, todos los recursos de éste estarán accesibles para poder sacar el máximo partido a la aplicación. 
  • · Al finalizar la instalación se dispondrá de un acceso directo para poder lanzar la aplicación de una forma fácil y rápida. 
  • · Con respecto al rendimiento de la aplicación en la mayoría de los casos se desempeñan mejor que otras aplicaciones. 
  • · Se pueden utilizar funcionalidades y elementos nativos del hardware del dispositivo y del sistema operativo. 



Desventajas de una aplicación nativa 
  • · El usuario deberá actualizar manualmente la aplicación desde los market places. 
  • · A la hora de publicar la aplicación el desarrollador se enfrentará a los procesos de validación de los diferentes market places, algunos más duros que otros. 
  • · Al tener que desarrollar específicamente para cada plataforma el tiempo de desarrollo y el costo se incrementarán. 
  • · El mantenimiento es más costoso en tiempo y las actualizaciones se deben realizar para las nuevas versiones de los sistemas operativos en algunos casos desde cero. 
  • · Se debe desarrollar una aplicación para cada plataforma y para cada sistema operativo. 
http://datateca.unad.edu.co/



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).




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(Interfaz de progrmación de aplicaciones por su siglas en inglés) 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?




Si tienes tiempo y ganas para aprender el lenguaje y las herramientas nativas de la plataforma en este caso Android entonces, debes conocer Android Studio.


Android Studio v1.0: características


Android Studio

En esta serie de tutoriales se describirán las novedades que proporciona, tratando los siguientos puntos:

  • Android Studio y sus principales características.
  • Instalación de Android Studio y creación de primer proyecto.
  • Importación de proyectos desde Eclipse.
  • Novedades, consejos y trucos.
  • Android Studio y sus principales características.


Android Studio es un entorno de desarrollo integrado (IDE), basado en IntelliJ IDEA de la compañía JetBrains,  que proporciona varias mejoras con respecto al plugin ADT (Android Developer Tools) para Eclipse. Android Studio utiliza una licencia de software libre Apache 2.0, está programado en Java y es multiplataforma.

Fue presentado por Google el 16 de mayo del 2013 en el congreso de desarrolladores Google I/O, con el objetivo de crear un entorno dedicado en exclusiva a la programación de aplicaciones para dispositivos Android, proporcionando a Google un mayor control sobre el proceso de producción. Se trata pues de una alternativa real a Eclipse, el IDE recomendado por Google hasta la fecha, pero que presentaba problemas debido a su lentitud en el desarrollo de versiones que solucionaran las carencias actuales (es indispensable recordar que Eclipse es una plataforma de desarrollo, diseñada para ser extendida a través de plugins).

Android Studio se ha mantenido durante todo este tiempo en versión beta, pero desde el 8 de diciembre de 2014, en que se liberó la versión estable de Android Studio 1.0, Google ha pasado a recomendarlo como el IDE para desarrollar aplicaciones para su sistema operativo, dejando el plugin ADT para Eclipse de estar en desarrollo activo. Esta versión la puedes descargar desde la web de Android Developer.

Principales características que incluye Android Studio:

  •          Soporte para programar aplicaciones para Android Wear (sistema operativo para dispositivos corporales como por ejemplo un reloj).
  •          Herramientas Lint (detecta código no compatible entre arquitecturas diferentes o código confuso que no es capaz de controlar el compilador) para detectar problemas de rendimiento, usabilidad y compatibilidad de versiones.
  •          Utiliza ProGuard para optimizar y reducir el código del proyecto al exportar a APK (muy útil para dispositivos de gama baja con limitaciones de memoria interna).
  •          Integración de la herramienta Gradle encargada de gestionar y automatizar la construcción de proyectos, como pueden ser las tareas de testing, compilación o empaquetado.
  •          Nuevo diseño del editor con soporte para la edición de temas.
  •          Nueva interfaz específica para el desarrollo en Android.
  •          Permite la importación de proyectos realizados en el entorno Eclipse, que a diferencia de Android Studio (Gradle) utiliza ANT.
  •          Posibilita el control de versiones accediendo a un repositorio desde el que poder descargar Mercurial, Git, Github o Subversion.
  •          Alertas en tiempo real de errores sintácticos, compatibilidad o rendimiento antes de compilar la aplicación.
  •          Vista previa en diferentes dispositivos y resoluciones.
  •          Integración con Google Cloud Platform, para el acceso a los diferentes servicios que proporciona Google en la nube.
  •          Editor de diseño que muestra una vista previa de los cambios realizados directamente en el archivo xml.

Requerimientos del Sistema


WindowsMac OSLinux
Microsoft Windows 8/7/Vista/2003 (32 o 64 bit)Mac OS X 10.8.5 o superior, hasta la 10.9 (Mavericks)GNOME o entorno de escritorio KDE
Mínimo de 2 GB de RAM, recomendado 4 GB de RAM
400 MB de espacio en disco
Necesita de al menos 1 GB para Android SDK, emulador de imágenes del sistema, y cachés
Resolución mínima de pantalla de 1280 x 800
Java Development Kit (JDK) 7 o superior
Nota: Para los sistemas Linux será necesaria la biblioteca de C GNU (glibc) 2.11 o posterior. Además para los sistemas Mac OS será necesario ejecutar Android Studio con Java Runtime Environment (JRE) 6 para la renderización optimizada de fuentes.
Comparativa entre Android Studio y ADT Eclipse

Para una mayor comprensión de las diferencias y novedades que presenta Android Studio con respecto al IDE Eclipse, y más concretamente con el ADT para Android, se propone la siguiente tabla comparativa entre ambas opciones: 

Características
Android Studio
ADT
Sistema de construcción
Gradle
ANT
Construcción y gestión de proyectos basado en Maven (herramienta de software para la gestión y construcción de proyectos Java, similar a Apache ANT, pero su modelo es más simple ya que está basado en XML)
Si
No (es necesario instalar un plugin auxiliar)
Construir variantes y generación de múltiples APK (muy útil para Android Wear)
Si
No
Refactorización y completado avanzado de código Android
Si
No
Diseño del editor gráfico
Si
Si
Firma APK y gestión de almacén de claves
Si
Si
Soporte para NDK (Native Development Kit: herramientas para implementar código nativo escrito en C y C++)
Próximas versiones
Si
Soporte para Google Cloud Platform
Si
No
Vista en tiempo real de renderizado de layouts
Si
No
Nuevos módulos en proyecto
Si
No
Editor de navegación
Si
No
Generador de assets
Si
No
Datos de ejemplo en diseño de layout (sin renderizar en tiempo de ejecución)
Si
No
Visualización de recursos desde editor de código
Si (a la izquierda de la línea de asignación del recurso)
No

En la tabla anterior se pueden apreciar una serie de características que permiten comparar ambos entornos, aunque sería necesario tener en cuenta otros aspectos que puedan facilitarnos la tarea de decidir si cambiar o no de IDE:

Ventajas uso Android Studio:

·  

·         Android Studio permite la creación de nuevos módulos dentro de un mismo proyecto, sin necesidad de estar cambiando de espacio de trabajo para el manejo de proyectos, algo habitual en Eclipse.
·         Con la simple descarga de Android Studio se disponen de todas las herramientas necesarias para el desarrollo de aplicaciones para la plataforma Android.
·         Su nueva forma de construir los paquetes .apk, mediante el uso de Gradle, proporciona una serie de ventajas más acorde a un proyecto Java:
·         Facilita la distribución de código, y por lo tanto el trabajo en equipo.
·         Reutilización de código y recursos.
·         Permite compilar desde línea de comandos, para aquellas situaciones en las que no esté disponible un entorno de desarrollo.
·         Mayor facilidad para la creación de diferentes versiones de la misma aplicación, que proporciona numerosas ventajas como puede ser la creación de una versión de pago y otra gratuita, o por ejemplo diferentes dispositivos o almacén de datos.


http://academiaandroid.com/


No hay comentarios:

Publicar un comentario