Download Contenidos Generales
Document related concepts
no text concepts found
Transcript
Desarrollo de aplicaciones Android – Introducción v1.0 Contenidos Generales Introducción Gran cantidad de avances pueden verse estos días en el campo de los smartphones. A medida que el número de usuarios aumenta día a día, las instalaciones y activaciones de nuevos smartphones también están aumentando. A partir de los teléfonos simples que se hicieron simplemente para hacer y recibir llamadas. Ahora tenemos teléfonos que incluso pueden tener acceso a GPS (Global Positioning System), GPRS (General Packet Radio Service), WiFi, NFC (Near Field Communication) y muchas otras características interesantes y avanzadas que ni siquiera puedes imaginar. Así que en complicado mundo móvil. Android es una de esas plataformas de sistemas operativos que hizo fácil para los fabricantes a diseñar los teléfonos de primera categoría. De la misma manera que Windows, Linux y Mac. Son sistemas operativos para computadoras, Android también es un sistema operativo. Básicamente fue desarrollado por una empresa que luego fue comprada por Google. Google mejoró el sistema operativo y la convirtió en una plataforma de código abierto. Fue adaptado ampliamente a lo largo del mundo. Como es de código abierto que es tan popular entre los smartphones. Android OS también se puede utilizar en Tablet PC. Un beneficio de ser una plataforma de código abierto, es que Android puede ser utilizado por cualquier fabricante de teléfonos y tablets en el mundo. A diferencia de otros sistemas operativos para teléfonos móviles y tablets como iOS (sistema operativo de Apple para iPhone, iPad y otros iDevices.). Symbian es propiedad de Nokia y viene sólo en los teléfonos Nokia y Windows Phone, es de Microsoft. Android puede ser utilizado por cualquier fabricante. Con respecto a los fabricantes de teléfonos, actualmente Samsung es el mayor fabricante de teléfonos Android y tablets. LG, HTC, Sony, son otros principales fabricantes de teléfonos Android y tablets. Android es desarrollado y liberado (puesto a disposición para su instalación) a partir de versiones. Desde la primer versión, 1.0 en adelante (2.0, 3.0, etc. son versiones más recientes), y Google nombra estas versiones con nombres de comida. 1 / 12 Desarrollo de aplicaciones Android – Introducción v1.0 Que es Android? Android es un sistema operativo móvil basado en Linux, que junto con aplicaciones middleware está enfocado para ser utilizado en dispositivos móviles como teléfonos inteligentes, tablets, Google TV y otros dispositivos. Es desarrollado por la Open Handset Alliance, la cual es liderada por Google. Este sistema por lo general maneja aplicaciones descargadas desde Google Play, aunque pueden ser instaladas por otros medios. Fue desarrollado inicialmente por Android Inc., una firma comprada por Google en 2005. Tiene una gran comunidad de desarrolladores escribiendo aplicaciones para extender la funcionalidad de los dispositivos. A la fecha, se han sobrepasado las 700.000 aplicaciones (de las cuales, dos tercios son gratuitas) disponibles para la tienda de aplicaciones oficial de Android Google Play, sin tener en cuenta aplicaciones de otras tiendas no oficiales para Android. Los programas que se ejecutan en Android están escritos en el lenguaje de programación Java. El anuncio del sistema Android se realizó el 5 de noviembre de 2007 junto con la creación de la Open Handset Alliance, Google liberó la mayoría del código de Android bajo la licencia Apache, una licencia libre y de código abierto. La estructura del sistema operativo Android se compone de aplicaciones que se ejecutan en un framework Java de aplicaciones orientadas a objetos sobre el núcleo de las bibliotecas de Java en una máquina virtual Dalvik con compilación en tiempo de ejecución. Las bibliotecas escritas en lenguaje C incluyen un administrador de interfaz gráfica (surface manager), un framework OpenCore, una base de datos relacional SQLite, una Interfaz de programación de API gráfica OpenGL ES 2.0 3D, un motor de renderizado WebKit, un motor gráfico SGL, SSL y una biblioteca estándar de C Bionic. El sistema operativo está compuesto por 12 millones de líneas de código, incluyendo 3 millones de líneas de XML, 2.8 millones de líneas de lenguaje C, 2.1 millones de líneas de Java y 1.75 millones de líneas de C++. Características y especificaciones actuales (4.2): Diseño de dispositivo La plataforma es adaptable a pantallas de mayor resolución, VGA, biblioteca de gráficos 2D, biblioteca de gráficos 3D basada en las especificaciones de la OpenGL ES 2.0 y diseño de teléfonos tradicionales. Almacenamiento SQLite, una base de datos liviana, que es usada para propósitos de almacenamiento de datos. Conectividad Android soporta las siguientes tecnologías de conectividad: GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, HSDPA, HSPA+ y WiMAX. Mensajería SMS y MMS son formas de mensajería, incluyendo mensajería de texto y ahora la Android Cloud to Device Messaging Framework (C2DM) es parte del servicio de Push Messaging de Android. El navegador web incluido en Android está basado en el motor de renderizado de código Navegador web abierto WebKit, emparejado con el motor JavaScript V8 de Google Chrome. El navegador por defecto de Ice Cream Sandwich obtiene una puntuación de 100/100 en el test Acid3. Aunque la mayoría de las aplicaciones están escritas en Java, no hay una máquina virtual Java en la plataforma. El bytecode Java no es ejecutado, sino que primero se compila en un ejecutable Dalvik y corre en la Máquina Virtual Dalvik. Dalvik es una máquina virtual especializada, diseñada Soporte de Java específicamente para Android y optimizada para dispositivos móviles que funcionan con batería y que tienen memoria y procesador limitados. El soporte para J2ME puede ser agregado mediante aplicaciones de terceros como el J2ME MIDP Runner. 2 / 12 Desarrollo de aplicaciones Android – Introducción v1.0 Soporte multimedia Android soporta los siguientes formatos multimedia: WebM, H.263, H.264 (en 3GP o MP4), MPEG-4 SP, AMR, AMR-WB (en un contenedor 3GP), AAC, HE-AAC (en contenedores MP4 o 3GP), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF y BMP. Soporte para streaming Streaming RTP/RTSP (3GPP PSS, ISMA), descarga progresiva de HTML (HTML5 <video> tag). Adobe Flash Streaming (RTMP) es soportado mediante el Adobe Flash Player. Se planea el soporte de Microsoft Smooth Streaming con el port de Silverlight a Android. Adobe Flash HTTP Dynamic Streaming estará disponible mediante una actualización de Adobe Flash Player. Soporte para hardware adicional Android soporta cámaras de fotos, de vídeo, pantallas táctiles, GPS, acelerómetros, giroscopios, magnetómetros, sensores de proximidad y de presión, sensores de luz, gamepad, termómetro, aceleración por GPU 2D y 3D. Entorno de desarrollo 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 (actualmente 3.4, 3.5 o 3.6) usando el plugin de Herramientas de Desarrollo de Android. Google Play Google Play es un catálogo de aplicaciones gratuitas o de pago en el que pueden ser descargadas e instaladas en dispositivos Android sin la necesidad de un PC. Multi-táctil Android tiene soporte nativo para pantallas capacitivas con soporte multi-táctil que inicialmente hicieron su aparición en dispositivos como el HTC Hero. La funcionalidad fue originalmente desactivada a nivel de kernel (posiblemente para evitar infringir patentes de otras compañías). Más tarde, Google publicó una actualización para el Nexus One y el Motorola Droid que activa el soporte multi-táctil de forma nativa. Bluetooth El soporte para A2DF y AVRCP fue agregado en la versión 1.5, el envío de archivos (OPP) y la exploración del directorio telefónico fueron agregados en la versión 2.0 y el marcado por voz junto con el envío de contactos entre teléfonos lo fueron en la versión 2.2 Video llamada Android soporta video llamada a través de Google Talk desde su versión HoneyComb. Multitarea Multitarea real de aplicaciones está disponible, es decir, las aplicaciones que no estén ejecutándose en primer plano reciben ciclos de reloj, a diferencia de otros sistemas de la competencia en la que la multitarea es congelada (Como por ejemplo iOS, en el que la multitarea se limita a servicios internos del sistema y no a aplicaciones externas). Características basadas en voz La búsqueda en Google a través de voz está disponible como "Entrada de Búsqueda" desde la versión inicial del sistema. Tethering Android soporta tethering, que permite al teléfono ser usado como un punto de acceso alámbrico o inalámbrico (todos los teléfonos desde la versión 2.2, no oficial en teléfonos con versión 1.6 o inferiores mediante aplicaciones disponibles en Google Play. Para permitir a un PC usar la conexión de datos del móvil android se podría requerir la instalación de software adicional. 3 / 12 Desarrollo de aplicaciones Android – Introducción v1.0 Arquitectura Android Estos son los componentes principales del sistema operativo de Android (cada sección se describe en detalle): Aplicaciones: las aplicaciones base incluyen un cliente de correo electrónico, programa de SMS, calendario, mapas, navegador, contactos y otros. Todas las aplicaciones están escritas en lenguaje de programación Java. Marco de trabajo de aplicaciones (Framework): los desarrolladores tienen acceso completo a los mismos APIs del framework usados por las aplicaciones base. La arquitectura está diseñada para simplificar la reutilización de componentes; cualquier aplicación puede publicar sus capacidades y cualquier otra aplicación puede luego hacer uso de esas capacidades (sujeto a reglas de seguridad del framework). Este mismo mecanismo permite que los componentes sean reemplazados por el usuario. Bibliotecas: Android incluye un conjunto de bibliotecas de C/C++ usadas por varios componentes del sistema. Estas características se exponen a los desarrolladores a través del marco de trabajo (framework) de aplicaciones de Android; algunas son: System C library (implementación biblioteca C estándar), bibliotecas de medios, bibliotecas de gráficos, 3D y SQLite, entre otras. Runtime de Android: Android incluye un set de bibliotecas base que proporcionan la mayor parte de las funciones disponibles en las bibliotecas base del lenguaje Java. Cada aplicación Android corre su propio proceso, con su propia instancia de la máquina virtual Dalvik. Dalvik ha sido escrito de forma que un dispositivo puede correr múltiples máquinas virtuales de forma eficiente. Dalvik ejecuta archivos en el formato Dalvik Executable (.dex), el cual está optimizado para memoria mínima. La Máquina Virtual está basada en registros y corre clases compiladas por el compilador de Java que han sido transformadas al formato .dex por la herramienta incluida "dx". Núcleo Linux: Android depende de Linux para los servicios base del sistema como seguridad, gestión de memoria, gestión de procesos, pila de red y modelo de controladores (drivers). El núcleo también actúa como una capa de abstracción entre el hardware y el resto de la pila de software. 4 / 12 Desarrollo de aplicaciones Android – Introducción v1.0 Versiones de Android El nombre de las versiones Android se obtiene de nombres de postres. La distribución en el mercado de las diferentes versiones de Android obtenido de Google Play (Enero 2013) Nº Plataforma API Level % Traducción en español 1 A Apple Pie 1 Tarta de manzana 1.1 B Banana Bread 2 Pan de plátano 1.5 C Cupcake 3 Magdalena glaseada 1.6 D Donut 4 0.2% Rosquilla 2.1 E Eclair 7 2.4% Pastel francés conocido 2.2 F Froyo (Frozen Yogurt) 8 9.0% Yogur helado 2.3 – 2.3.2 9 0.2% G Gingerbread Pan de jengibre 2.3.3 – 2.3.7 10 47.4% 3.0 11 Honeycomb 3.1 H 12 0.4% Panal de miel (En general Tablets) 3.2 13 1.1% 4.0 - 4.0.2 I 14 Ice Cream Sandwich 29.1% Sándwich de helado 4.0.3 - 4.0.4 I 15 4.1 16 9.0% J Jelly Bean Gomitas dulces 4.2 17 1.2% K Keylime Pie? Tarta de lima 5 / 12 Desarrollo de aplicaciones Android – Introducción v1.0 Máquina Virtual Dalvik Dalvik es la máquina virtual que utiliza la plataforma para dispositivos móviles Android (DalvikVM). Dalvik ha sido diseñada por Dan Bornstein con contribuciones de otros ingenieros de Google. Dalvik está optimizada para requerir poca memoria y está diseñada para permitir ejecutar varias instancias de la máquina virtual simultáneamente, delegando en el sistema operativo subyacente el soporte de aislamiento de procesos, gestión de memoria e hilos. A menudo Dalvik es nombrada como una máquina virtual Java, pero esto no es estrictamente correcto, ya que el bytecode con el que opera no es Java bytecode. Sin embargo, la herramienta dx incluida en el SDK de Android permite transformar los archivos Class de Java compilados por un compilador Java al formato de archivos Dex. Java y la máquina virtual Dalvik Las aplicaciones de Android utilizan el lenguaje Java para su programación, pero no usa la máquina virtual de Java (JVM) oficial de Oracle para interpretar el código generado, sino una versión modificada “específicamente” para dispositivos móviles, mejorando su eficiencia a la hora de ejecutar los procesos. Hay que decir que esta máquina virtual corre por encima de un kernel Linux 2.6, el cuál le permite, entre otras cosas, delegar las tareas relacionadas con la gestión de hilos y memoria a bajo nivel. También ha sido optimizada para que haya múltiples instancias suyas funcionando con un impacto muy bajo en el rendimiento de la memoria del dispositivo. Este aspecto de usar varias máquinas virtuales se pensó para proteger a las aplicaciones, de forma que el cierre o fallo inesperado de alguna de ellas no afecte de ninguna forma a las demás. Nota: Dalvik fue por elegido por Bornstein en honor a Dalvik, Islandia, un pueblo de pescadores donde vivieron algunos de sus antepasados. ¿Cómo funciona? Al ser una máquina virtual interprete, ejecuta archivos en el formato Dalvik Executable (*.dex), un formato optimizado para el almacenamiento eficiente y ejecución mapeable en memoria. Su objetivo fundamental es el mismo que cualquier máquina virtual, permite que el código sea compilado a un bytecode independiente de la máquina en la que se va a ejecutar, y la máquina virtual interpreta este bytecode a la hora de ejecutar el programa. El hecho de no utilizar la máquina virtual de Java es la necesidad de optimizar al máximo los recursos y enfocar el funcionamiento de los programas hacia un entorno de escasos recursos de memoria, procesador y almacenamiento como es el que se tiene en los teléfonos. El intérprete toma los archivos generados por las clases Java y los combina en uno o más archivos ejecutables Dalvik (.dex), los cuales a su vez son comprimidos en un sólo fichero .apk (Android Package) en el dispositivo. De esta forma, reutiliza la información duplicada por múltiples archivos .class, reduciendo así la necesidad de espacio (sin comprimir) a la mitad de lo que ocuparía un archivo .jar. DalvikVM.equals(Java) = False 6 / 12 Desarrollo de aplicaciones Android – Introducción v1.0 Application Package File (APK) Un archivo con extensión .apk es un paquete para el sistema operativo Android. Este formato es una variante del formato JAR de Java y se usa para distribuir e instalar componentes empaquetados para la plataforma Android para smartphones y tablets. Un archivo .apk normalmente contiene las siguientes carpetas y archivos: META-INF (directory): o MANIFEST.MF: el archive de manifesto o CERT.RSA: El certificado de la aplicación o CERT.SF: Lista de recursos y el SHA-1 digest, por ejemplo: Lib (directory): directorio que contiene código compilado especifico de una capa de software de un procesador, la carpeta se divide en más subcarpetas: o armeabi: código compilado exclusivamente para procesadores basados en ARM o armeabi-v7a: código compilado exclusivamente para procesadores ARMv7 o basados en ARMv7 o x86: código compilado exclusivamente para procesadores x86 o mips: código compilado exclusivamente para procesadores MIPS res (directory): contiene recursos no compilados (los compilados son resources.arsc) AndroidManifest.xml: Un archivo adicional de Android, que describe el nombre, la versión, los permisos de acceso, las referencias a los archivos de biblioteca utilizados. Este archivo puede estar en formato binario XML Android, que puede ser convertido a un archivo XML plano legible, mediante la utilización de herramientas como AXMLPrinter2, apktool, o Androguard. classes.dex: Las clases compiladas en el formato de archivo dex, que es interpretada por la máquina virtual Dalvik resources.arsc: archivo que contiene recursos pre-compilados, por ejemplo archivos XML en formato binario. El Formato APK es básicamente un archivo comprimido ZIP con diferente extensión por lo cual pueden ser abiertos e inspeccionados usando un software de compresor/descompresor de archivos como 7-Zip, Winzip, WinRAR o Ark. El tipo MIME definido para .apk es application/vnd.android.package-archive. 7 / 12 Desarrollo de aplicaciones Android – Introducción v1.0 Google Play Store Google Play Store o sólo “Google Play” (antes llamado Android Market) es una tienda de software en línea desarrollada por Google para los dispositivos Android. Es una aplicación ("app") que está preinstalada en la mayoría de los dispositivos Android y que permite a los usuarios buscar y descargar aplicaciones publicadas por desarrolladores terceros, alojada en Google Play. Los usuarios también pueden buscar y obtener información sobre aplicaciones en esta página web. En enero de 2012, Google Play disponía de más de 500.000 aplicaciones. Su archivo ejecutable se llama “Vending.apk” Aplicaciones y descargas Año Mes Aplicaciones disponibles Descargas hasta la fecha Marzo 2.300 Diciembre 16.000 Marzo 30.000 Abril 38.000 Agosto 80.000 Octubre 38.000 Mayo 200.000 4.500 millones Julio 250.000 6.000 millones Octubre 319.000 Diciembre 380.297 2012 Enero 400.000 2012 Octubre 675.000 2009 2010 2011 1.000 millones 10.000 millones Google Play, competencia y aliados Las tiendas por Internet están cada vez más en alza y más si se trata de tiendas de aplicaciones para los teléfonos móviles. No es de extrañar que las principales plataformas de móviles decidan crear portales donde poder descargar o comprar todas las aplicaciones posibles. Entre estas hablamos de dos de las más importantes, la App Store de Apple y Google Play de Google pero también hay otras como Samsung Apps de Samsung, Ovi Store de Nokia, App Place de Toshiba Market Place, App World de Blackberry, Windows Phone Marketplace de Microsoft, App Store de Amazon, Palm App Catalog y SlideME. El desarrollo de aplicaciones para el iPhone no está siendo de fácil acceso como consecuencia de la política de admisión de aplicaciones de Apple que es muy restrictiva. 8 / 12 Desarrollo de aplicaciones Android – Introducción v1.0 Research In Motion Research In Motion Limited (RIM) NASDAQ: RIMM es una compañía canadiense de dispositivos inalámbricos más conocido como el fabricante y promotor del dispositivo de comunicación de mano BlackBerry. RIM desarrolla su propio software para sus dispositivos, usando C++, C y la tecnología Java. RIM también ha desarrollado y vendido componentes incorporados para la Historia de Research in Motion Antes de la fabricación de los dispositivos Blackberry, RIM trabajó con la empresa RAM Mobile Data y con Ericsson para desarrollar una red de datos inalámbrica llamada Mobitex, con características como paginación dual y sistema inalámbrico de correo electrónico. Algo fundamental en este desarrollo fue la liberación del paginador de datos “Inter@ctive pager 950” cuyo lanzamiento se dio en agosto del año 2000. Con el tamaño de una barra de jabón este dispositivo competiría con Skytel desarrollado por Motorola y que era también un sistema de datos dual o de doble vía. Desde entonces, RIM ha actualizado y lanzado al mercado internacional una gran variedad de dispositivos que se ejecutan sobre redes GSM (Global System for Mobile communications), CDMA (Code Division Multiple Access), iDEN (Integrated Digital Enhanced Network) de Motorola y recientemente redes HSDPA (High Speed Downlink Packet Access o 3.5G), UMTS/3G (Universal Mobile Telecommunications System) y EDGE (Enhanced Data rates for GSM of Evolution). La ubicación de dispositivos como los BlackBerry en el entorno corporativo y el uso compulsivo de su capacidad para el envío y recepción en tiempo real de e-mail le ha ganado el apodo de "Crackberry" ya que los usuarios sienten que no pueden vivir sin estos. BlackBerry OS El SO BlackBerry está claramente orientado a su uso profesional como gestor de correo electrónico y agenda. Desde la cuarta versión se puede sincronizar el dispositivo con el correo electrónico, el calendario, tareas, notas y contactos de Microsoft Exchange Server además es compatible también con Lotus Notes y Novell GroupWise 9 / 12 Desarrollo de aplicaciones Android – Introducción v1.0 IOS iOS es un sistema operativo móvil de la empresa Apple Inc. Originalmente desarrollado para el iPhone (iPhone OS), siendo después usado en dispositivos como el iPod Touch, iPad y el Apple TV. Apple, Inc. no permite la instalación de iOS en hardware de terceros. La interfaz de usuario de iOS está basada en el concepto de manipulación directa, usando gestos multitáctiles. Los elementos de control consisten de deslizadores, interruptores y botones. La respuesta a las órdenes del usuario es inmediata y provee de una interfaz fluida. La interacción con el sistema operativo incluye gestos como deslices, toques, pellizcos, los cuales tienen definiciones diferentes dependiendo del contexto de la interfaz. Se utilizan acelerómetros internos para hacer que algunas aplicaciones respondan a sacudir el dispositivo (por ejemplo, para el comando deshacer) o rotarlo en tres dimensiones (un resultado común es cambiar de modo vertical al apaisado u horizontal). iOS se deriva de Mac OS X, que a su vez está basado en Darwin BSD, y por lo tanto es un sistema operativo Unix. iOS cuenta con cuatro capas de abstracción: la capa del núcleo del sistema operativo, la capa de "Servicios Principales", la capa de "Medios" y la capa de "Cocoa Touch". La versión actual del sistema operativo (iOS 6.0) ocupa más o menos 770 megabytes, variando por modelo Windows Phone Windows Phone es un sistema operativo móvil desarrollado por Microsoft, como sucesor de la plataforma Windows Mobile. A diferencia de su predecesor, está enfocado en el mercado de consumo generalista en lugar del mercado empresarial por lo que carece de muchas funcionalidades que proporcionaba la versión anterior. Microsoft ha decidido no hacer compatible Windows Phone con Windows Mobile por lo que las aplicaciones existentes no funcionan en Windows Phone haciendo necesario desarrollar nuevas aplicaciones. Con Windows Phone, Microsoft ofrece una nueva interfaz de usuario que integra varios servicios en el sistema operativo. Microsoft planeaba un estricto control del hardware que implementaría el sistema operativo, para evitar la fragmentación con la evolución del sistema, pero han reducido los requisitos de hardware de tal forma que puede que eso no sea posible. El 29 de octubre de 2012 se lanzó al mercado Windows Phone 8 solo para nuevos dispositivos, debido a un cambio completo en el kernel que lo hace incompatible con dispositivos basados en la versión anterior. Esta versión incluye nuevas funciones que de acuerdo a Microsoft lo harán competitivo con sistemas operativos como iOS de Apple o Android de Google. Con esta versión comienza la fragmentación de Windows Phone ya que los dispositivos basados en Windows Phone 7 no pueden actualizarse a Windows Phone 8. 10 / 12 Desarrollo de aplicaciones Android – Introducción v1.0 Web OS HP webOS es un sistema operativo multitarea para sistemas embebidos basado en Linux, desarrollado por Palm, Inc., ahora propiedad de Hewlett-Packard Company, el cual fue presentado al público en el Consumer Electronics Show de Las Vegas el 8 de enero de 2009 junto con el Palm Pre. El Palm Pre y webOS fueron lanzados el 6 de junio de 2009. Un segundo dispositivo utilizando este sistema, el Palm Pixi, fue lanzado el 15 de noviembre de 2009. El 18 de agosto de 2011 HP anunció que descontinuará todos los dispositivos con webOS. El día 9 de diciembre de 2011, HP anunció que seguirá dando soporte al sistema operativo, aunque desde ahora será software libre. HP desea que su futuro desarrollo sea transparente y no exista fragmentación. Symbian OS Symbian es un sistema operativo que fue producto de la alianza de varias empresas de telefonía móvil, entre las que se encuentran Nokia, Sony Mobile Communications, Psion, Samsung, Siemens, Arima, Benq, Fujitsu, Lenovo, LG, Motorola, Mitsubishi Electric, Panasonic, Sharp, etc. Sus orígenes provienen de su antepasado EPOC32, utilizado en PDA's y Handhelds de PSION. El objetivo de Symbian fue crear un sistema operativo para terminales móviles que pudiera competir con el de Palm o el Windows Mobile 6.X de Microsoft y ahora Android de Google Inc., iOS de Apple Inc. y BlackBerry de RIM. 11 / 12 Desarrollo de aplicaciones Android – Introducción v1.0 Middleware Middleware es un software que asiste a una aplicación para interactuar o comunicarse con otras aplicaciones, software, redes, hardware y/o sistemas operativos. Éste simplifica el trabajo de los programadores en la compleja tarea de generar las conexiones que son necesarias en los sistemas distribuidos. De esta forma se provee una solución que mejora la calidad de servicio, seguridad, envío de mensajes, directorio de servicio, etc. Funciona como una capa de abstracción de software distribuida, que se sitúa entre las capas de aplicaciones y las capas inferiores (sistema operativo y red). El middleware abstrae de la complejidad y heterogeneidad de las redes de comunicaciones subyacentes, así como de los sistemas operativos y lenguajes de programación, proporcionando una API para la fácil programación y manejo de aplicaciones distribuidas. Dependiendo del problema a resolver y de las funciones necesarias, serán útiles diferentes tipos de servicios de middleware. Por lo general el middleware del lado cliente está implementado por el Sistema Operativo, el cual posee las bibliotecas que ejecutan todas las funcionalidades para la comunicación a través de la red. Open Handset Alliance (OHA) La Open Handset Alliance (OHA) es una alianza comercial de 84 compañías que se dedica a desarrollar estándares abiertos para dispositivos móviles. Algunos de sus miembros son Google, HTC, Dell, Intel, Motorola, Qualcomm, Texas Instruments, Samsung, LG, T-Mobile, Nvidia y Wind River Systems. Near Field Communication Near Field Communication o NFC es la nueva generación de corto alcance de alta tecnología de frecuencia de comunicación inalámbrica que permite el intercambio de datos entre dispositivos construir con esta tecnología. 12 / 12