Arquitectura
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: 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.
Sistema operativo que utiliza
Android es un sistema operativo basado en Linux para dispositivos móviles, como teléfonos inteligentes y tablets. Fue desarrollado inicialmente por Android Inc., una firma comprada por Google en el 2005.[] Es el principal producto de la Open Handset Alliance, un conglomerado de fabricantes y desarrolladores de hardware, software y operadores de servicio.
Android tiene una gran comunidad de desarrolladores escribiendo aplicaciones para extender la funcionalidad de los dispositivos. A la fecha, existen cerca de 200.000 aplicaciones disponibles para Android. Android Market es la tienda de aplicaciones en línea administrada por Google, aunque existe la posibilidad de obtener software externamente. Los programas están escritos en el lenguaje de programación Java.[
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 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 Glibc. 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++.
Lenguajes de Interfaces de servicios
La Interfaz de usuario de
iOS se basa en el concepto de manipulación mediante gestos multitáctiles. Los
elementos de la interfaz se componen por deslizadores, interruptores y botones.
La respuesta es inmediata y se provee de una interfaz fluida. La interacción
con el sistema operativo se realiza mediante gestos como deslizar, tocar y
pellizcar. Acelerómetros y Giroscopios internos son utilizados por algunas
aplicaciones para responder a movimientos y gestos, como sacudir el aparato (en
campos de texto es usado para deshacer y rehacer) o rotarlo (se suele usar para
cambiar de posición vertical a modo paisaje).
La home screen o pantalla
principal (llamada “SpringBoard”) es donde se ubican los iconos de Aplicaciones
y el Dock en la parte inferior de la pantalla donde se pueden anclar
aplicaciones de uso frecuente, aparece al desbloquear el dispositivo o
presionar el botón de inicio. La pantalla tiene una barra de estado en la parte
superior para mostrar datos, tales como la hora, el nivel de batería, y la
intensidad de la señal.
Multitarea
Antes de iOS 4, la
multitarea estaba reservada para aplicaciones por defecto del sistema. A Apple
le preocupaba los problemas de batería y rendimiento si se permitiese correr
varias aplicaciones de terceros al mismo tiempo. A partir de iOS 4,
dispositivos de 3era generación y posteriores soportan el uso de 7 API’s para
multitarea, específicamente:
Audio en segundo plano
Voz IP
Localización en segundo
plano
Notificaciones push
Noficiaciones locales
Completado de tareas
Cambio rápido de
aplicaciones
Sin embargo, no consiste en
una verdadera multitarea, pues las aplicaciones ajenas al SO, quedan congeladas
en segundo plano no recibiendo un sólo ciclo de reloj del procesador.
Lenguajes de desarrollo y bibliotecas
Ante la necesidad de obtener servicios web usando C/C++ como
lenguaje de
programación y una
distribución GNU/Linux como
sistema operativo, con el
objetivo de aplicar una Arquitectura Orientada a Servicios a un software desarrollado íntegramente en dicho lenguaje.
En
Internet se habla mucho de GSI, WS-Addressing y/o WS-Security como plugins o toolkits que usan la
biblioteca gSOAP. No se hablará de ellos en este artículo pues nos centraremos en otras herramientas.
Este
proceso de desarrollo mayormente se lleva a cabo en la consola o terminal. El presente
trabajo ofrece una solución a este problema encontrado usando la configuración del IDE Eclipse. Además
muestra una forma más fácil para el envío y recepción de de
archivos. Para esto se produjo una experimentación científica basada en la reutilización de las funcionalidades que ofrece diferentes IDE y
algoritmos encontrados en Internet.
Emuladores con los que cuenta linux
Super Nintendo:
-Zsnes: El clásico zsnes, no necesita
presentación. La mayoría de las veces funciona tan bien como en Windows (aunque
hay que activar el filtro bilinear, que no viene activado por defecto).
-Snes9x: Otro clásico emulador de snes. A veces
zsnes no logra funcionar bien, por lo que este emulador es una excelente opción
en esos casos (además de tener el mismo rendimiento que zsnes). Hay diversas
interfaces gráficas para este emulador, personalmente recomiendo snes9x-gtk
(que debe estar en los repositorios de cualquier distribución), que resulta ser
una interfaz muy completa y que por ser gtk se integra bien en el escritorio.
Sega Genesis:
-Gens: Uno de los mejores emuladores para esta
consola, tanto para linux como para windows. El único inconveniente es que no
cuenta con versión de 64 bits, por lo que suele dar problemas con esta
estructura.
-Kega-Fusion: Otro excelente emulador con muchas
opciones, además es compatible con Sega Master-System. El rendimiento es bueno,
aunque suele no funcionar bien en ciertas distribuciones.
-Gens: El más simple, pero tiene todo lo
necesario. No tiene interfaz gráfica (aunque hay una gtk, pero no muy buena),
por lo que su uso puede resultar algo más engorroso, sin embargo es
recomendable por su buen rendimiento.
Nintendo 64:
-Project 64 (wine): Lamentablemente el mejor
emulador para 64 no está para linux, pero al menos con wine funciona bastante
bien.
-Mupen 64: El mejor emulador nativo para 64,
cercano al rendimiento del project. Es un poco más engorroso de usar, pero
funciona bien. Tiene diversas interfaces gráficas como cutemupen (qt), wxmupen
y mupen64py.
PSX:
-ePSXe: El clásico de PSX, conocido por su buen
rendimiento. Es una opción recomendable si ya se conoce este emulador (por su
engorrosa configuración). No logra tener el mismo rendimiento que en windows,
además de que no fueron lanzadas las últimas versiones de este emulador para
linux.
-PCSX: La opción más recomendada, muy similar a
ePSXe (con el mismo sistema de plugins) pero mejor portado a linux. El proyecto
fue descontinuado, pero luego salió PCSX-reloaded, una versión más robusta y
simple, por lo tanto la más recomendada.
-pSX: Un emulador simple y no basado en plugins,
sólo hay que poner el juego y jugar. Tiene un excelente rendimiento y es muy
fácil de usar, sin embargo al no contar con un sistema de plugins es mucho
menos personalizable, por lo que no se podrá mejorar la calidad de imagen
(aumentar la resolución), entre otras cosas.
Gameboy Advance:
-VBA-M: VisualBoy Advance, no hay más donde
elegir. VBA-M es una versión mejorada del original y la que mejor funciona en
linux (la versión original tiene un rendimiento pobre).
Aún así muchas veces no logra funcionar como uno espera, por lo que
es buena opción emular el VBA de windows con Wine.