jueves, 18 de febrero de 2016

Arquitectura Android

 Como ya se ha mencionado, Android es una plataforma para dispositivos móviles que contiene una pila de software donde se incluye un sistema operativo, middleware y aplicaciones básicas para el usuario. 


        En las siguientes líneas se dará una visión global por capas de cuál es la arquitectura empleada en Android. Cada una de estas capas utiliza servicios ofrecidos por las anteriores, y ofrece a su vez los suyos propios a las capas de niveles superiores, tal como muestra la siguiente figura:




  •  Aplicaciones: Este nivel contiene, tanto las incluidas por defecto de Android como aquellas que el usuario vaya añadiendo posteriormente, ya sean de terceras empresas o de su propio desarrollo. Todas estas aplicaciones utilizan los servicios, las API y librerías de los niveles anteriores.
  • Framework de Aplicaciones: Representa fundamentalmente el conjunto de herramientas de desarrollo de cualquier aplicación. Toda aplicación que se desarrolle para Android, ya sean las propias del dispositivo, las desarrolladas por Google o terceras compañías, o incluso las que el propio usuario cree, utilizan el mismo conjunto de API y el mismo "framework", representado por este nivel.
        Entre las API más importantes ubicadas aquí, se pueden encontrar las siguientes:
·         Activity Manager: Conjunto de API que gestiona el ciclo de vida de las aplicaciones en Android.
·        Window ManagerGestiona las ventanas de las aplicaciones y utiliza la librería Surface Manager.
·        Telephone Manager: Incluye todas las API vinculadas a las funcionalidades propias del teléfono (llamadas, mensajes, etc.).
·        Content Provider: Permite a cualquier aplicación compartir sus datos con las demás aplicaciones de Android. Por ejemplo, gracias a esta API la información de contactos, agenda, mensajes, etc. será accesible para otras aplicaciones.
·        View System: Proporciona un gran número de elementos para poder construir interfaces de usuario (GUI), como listas, mosaicos, botones, "check-boxes", tamaño de ventanas, control de las interfaces mediante teclado, etc. Incluye también algunas vistas estándar para las funcionalidades más frecuentes.
                  ·          Location Manager: Posibilita a las aplicaciones la obtención de información de localización y                                     posicionamiento.
·         Notification Manager: Mediante el cual las aplicaciones, usando un mismo formato, comunican al usuario eventos que ocurran durante su ejecución: una llamada entrante, un mensaje recibido, conexión Wi-Fi disponible, ubicación en un punto determinado, etc. Si llevan asociada alguna acción, en Android denominada Intent, (por ejemplo, atender una llamada recibida) ésta se activa mediante un simple clic.
·         XMPP Service: Colección de API para utilizar este protocolo de intercambio de mensajes basado en XML.
  • Librerías: La siguiente capa se corresponde con las librerías utilizadas por Android. Éstas han sido escritas utilizando C/C++ y proporcionan a Android la mayor parte de sus capacidades más características. Junto al núcleo basado en Linux, estas librerías constituyen el corazón de Android.

  •  Entre las librerías más importantes ubicadas aquí, se pueden encontrar las siguientes:
  • ·Librería libc: Incluye todas las cabeceras y funciones según el estándar del lenguaje C. Todas las demás librerías se definen en este lenguaje.
  • ·Librería Surface Manager: Es la encargada de componer los diferentes elementos de navegación de pantalla. Gestiona también las ventanas pertenecientes a las distintas aplicaciones activas en cada momento.
  • ·OpenGL/SL y SGL: Representan las librerías gráficas y, por tanto, sustentan la capacidad gráfica de Android. OpenGL/SL maneja gráficos en 3D y permite utilizar, en caso de que esté disponible en el propio dispositivo móvil, el hardware encargado de proporcionar gráficos 3D. Por otro lado, SGL proporciona gráficos en 2D, por lo que será la librería más habitualmente utilizada por la mayoría de las aplicaciones. Una característica importante de la capacidad gráfica de Android es que es posible desarrollar aplicaciones que combinen gráficos en 3D y 2D.
  • ·Librería Media Libraries: Proporciona todos los códecs necesarios para el contenido multimedia soportado en Android (vídeo, audio, imágenes estáticas y animadas, etc.)
  • ·FreeType: Permite trabajar de forma rápida  y sencilla con distintos tipos de fuentes.
  • ·Librería SSL: Posibilita la utilización de dicho protocolo para establecer comunicaciones seguras.
  • ·Librería SQLiteCreación y gestión de bases de datos relacionales. 
  • ·Librería WebKit: Proporciona un motor para las aplicaciones de tipo navegador y forma el núcleo del actual navegador incluido por defecto en la plataforma Android.
  • Tiempo de ejecución de AndroidAl mismo nivel que las librerias de Android se sitúa el entorno de ejecución. Éste lo constituyen las Core Libraries, que son librerias con mulititud de clases Java y la máquina vistual Dalvik.
  • Núcleo LinuxAndroid utiliza el núcleo de Linux 2.6 como una capa de abstracción para el hardware disponible en los dispositivos móviles. Esta capa contiene los drivers necesarios para que cualquier componente hardware pueda ser utilizado mediante las llamadas correspondientes. Siempre que un fabricante incluye un nuevo elemento de hardware, lo primero que se debe realizar para que pueda ser utilizado desde Android es crear las librerias de control o drivers necesarios dentro de este kernel de Linux embebido en el propio Android.

martes, 16 de febrero de 2016

Entorno de trabajo para aplicaciones moviles



Eclipse es una plataforma de software compuesto por un conjunto de herramientas de programación decódigo abierto multiplataforma para desarrollar lo que el proyecto llama "Aplicaciones de Cliente Enriquecido", opuesto a las aplicaciones "Cliente-liviano" basadas en navegadores. Esta plataforma, típicamente ha sido usada para desarrollar entornos de desarrollo integrados (del inglés IDE), como el IDE de Java llamado Java Development Toolkit (JDT) y el compilador (ECJ) que se entrega como parte de Eclipse (y que son usados también para desarrollar el mismo Eclipse). Sin embargo, también se puede usar para otros tipos de aplicaciones cliente, como BitTorrent o Azureus.
Eclipse es también una comunidad de usuarios, extendiendo constantemente las áreas de aplicación cubiertas. Un ejemplo es el recientemente creado Eclipse Modeling Project, cubriendo casi todas las áreas de Model Driven Engineering.
Eclipse fue desarrollado originalmente por IBM como el sucesor de su familia de herramientas para VisualAge. Eclipse es ahora desarrollado por la Fundación Eclipse, una organización independiente sin ánimo de lucro que fomenta una comunidad de código abierto y un conjunto de productos complementarios, capacidades y servicios.
Eclipse fue liberado originalmente bajo la Common Public License, pero después fue re-licenciado bajo laEclipse Public License. La Free Software Foundation ha dicho que ambas licencias son licencias de software libre, pero son incompatibles con Licencia pública general de GNU (GNU GPL).3



Xcode es el entorno de desarrollo integrado (IDE, en sus siglas en inglés) de Apple Inc. y se suministra gratuitamente junto conMac OS X. Xcode trabaja conjuntamente con Interface Builder, una herencia de NeXT, una herramienta gráfica para la creación de interfaces de usuario.
Xcode incluye la colección de compiladores del proyecto GNU (GCC), y puede compilar código CC++SwiftObjective-C, Objective-C++, Java y AppleScript mediante una amplia gama de modelos de programación, incluyendo, pero no limitado aCocoaCarbón y Java. Otras compañías han añadido soporte para GNU Pascal,1 Free Pascal,2 Ada y Perl.3
Entre las características más apreciadas de Xcode está la tecnología para distribuir el proceso de construcción a partir de código fuente entre varios ordenadores, utilizando Bonjour.


Carbide.c++ es una herramienta para el desarrollo de software en lenguaje C++ destinado a dispositivos que funcionan bajoSymbian OS. Se usa tanto para desarrollar los teléfonos que incorporan dicho OS como para las aplicaciones que ejecutan estos.
Está formada por una familia de IDEs desarrollada por Nokia, basada en Eclipse, al que se han incorporado plug-ins para el desarrollo de Symbian OS. Reeemplazó a CodeWarrior como primer entorno de desarrollo para Symbian OS.
Desde la versión 2.0, Carbide.c++ es gratuito y se ofrece en tres versiones (Developer, Professional, y OEM).1




NetBeans es un entorno de desarrollo integrado libre, hecho principalmente para el lenguaje de programación Java. Existe además un número importante de módulos para extenderlo. NetBeans IDE2 es un producto libre y gratuito sin restricciones de uso.
NetBeans es un proyecto de código abierto de gran éxito con una gran base de usuarios, una comunidad en constante crecimiento, y con cerca de 100 socios en todo el mundo. Sun MicroSystems fundó el proyecto de código abierto NetBeans en junio de 2000 y continúa siendo el patrocinador principal de los proyectos (Actualmente Sun Microsystems es administrado por Oracle Corporation).
La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de softwarellamados módulos. Un módulo es un archivo Java que contiene clases de java escritas para interactuar con las APIs de NetBeans y un archivo especial (manifest file) que lo identifica como módulo. Las aplicaciones construidas a partir de módulos pueden ser extendidas agregándole nuevos módulos. Debido a que los módulos pueden ser desarrollados independientemente, las aplicaciones basadas en la plataforma NetBeans pueden ser extendidas fácilmente por otros desarrolladores de software.
El NetBeans IDE soporta el desarrollo de todos los tipos de aplicación Java (J2SE, web, EJB y aplicaciones móviles). Entre sus características se encuentra un sistema de proyectos basado en Ant, control de versiones y refactoring.
NetBeans IDE 6.5.2, la cual fue publicada el 19 de noviembre de 2008, extiende las características existentes del Java EE (incluyendo Soporte a Persistencia, EJB 3 y JAX-WS). Adicionalmente, el NetBeans Enterprise Pack soporta el desarrollo de Aplicaciones empresariales con Java EE 5, incluyendo herramientas de desarrollo visuales de SOA, herramientas de esquemas XML, orientación a web servicies (for BPEL), y modelado UML. El NetBeans C/C++ Pack soporta proyectos de C/C++, mientras el PHP Pack, soporta PHP 5.
Modularidad. Todas las funciones del IDE son provistas por módulos. Cada módulo provee una función bien definida, tales como el soporte de Java, edición, o soporte para el sistema de control de versiones. NetBeans contiene todos los módulos necesarios para el desarrollo de aplicaciones Java en una sola descarga, permitiéndole al usuario comenzar a trabajar inmediatamente.
Sun StudioSun Java Studio Enterprise, y Sun Java Studio Creator de Sun Microsystems han sido todos basados en el IDE NetBeans.
Desde julio de 2006, NetBeans IDE es licenciado bajo la Common Development and Distribution License (CDDL), una licencia basada en la Mozilla Public License (MPL). En octubre de 2007, Sun anunció que NetBeans desde entonces se ofrecerá bajo licenciamiento dual de Licencia CDDL y la GPL versión 2.




Java es un lenguaje de programación de propósito generalconcurrenteorientado a objetos que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso, particularmente para aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios reportados.1 2
El lenguaje de programación Java fue originalmente desarrollado por James Gosling de Sun Microsystems (la cual fue adquirida por la compañía Oracle) y publicado en 1995 como un componente fundamental de la plataforma Java de Sun Microsystems. Su sintaxis deriva en gran medida de C y C++, pero tiene menos utilidades de bajo nivel que cualquiera de ellos. Las aplicaciones de Java son generalmente compiladas a bytecode (clase Java) que puede ejecutarse en cualquier máquina virtual Java (JVM) sin importar la arquitectura de la computadora subyacente.
La compañía Sun desarrolló la implementación de referencia original para los compiladores de Java, máquinas virtuales, ylibrerías de clases en 1991 y las publicó por primera vez en 1995. A partir de mayo de 2007, en cumplimiento con las especificaciones del Proceso de la Comunidad Java, Sun volvió a licenciar la mayoría de sus tecnologías de Java bajo laLicencia Pública General de GNU. Otros también han desarrollado implementaciones alternas a estas tecnologías de Sun, tales como el Compilador de Java de GNU y el GNU Classpath.








Sistemas operativos libres

SISTEMAS OPERATIVOS LIBRES


Software Libre se refiere a la libertad de los usuarios de utilizar, copiar, distribuir, estudiar, cambiar y mejorar el software. Más concretamente se refiere a las cuatro libertades de los usuarios de software:
1) La libertad de utilizar el programa, con cualquier propósito. 
2) La libertad de estudiar como funciona el programa, y adaptarlo a sus necesidades
3) La libertad de distribuir copias de manera que se puede ayudar al vecino. 
4) La libertad de mejorar el programa, y liberar las mejoras al público de tal manera que toda la comunidad se beneficie.El acceso al código fuente es una precondición para que se cumplan todas estas libertades.

SISTEMA OPERATIVO
CARACTERISTICA
IMAGEN


                    

                      AROS
es un sistema operativo gratuito y portable cuyo propósito es conseguir una implementación en código abierto de los APIs del AmigaOS 3.1. Diseñado para ser portable y flexible, es binariamente compatible con AmigaOS en procesadores 68k y compatible a nivel de código fuente en otros procesadores




COSMOS
Cosmos es un sistema operativo de código abierto escrito en C#. Incluye el compilador IL2CPU para convertir código de .Net en instrucciones nativas. El sistema operativo es compilado en un binario. fue lanzada en agosto de 2010









Darwin BSD
Es el sistema que subyace en Mac OS X, cuya primera versión final salió en el año 2001 para funcionar en computadorasMacintosh.
Integra el micronúcleo Machy servicios de sistema operativo de tipo UNIXbasados en BSD4.4 (en particular FreeBSD) que proporcionan una estabilidad y un rendimiento mayor que el de versiones anteriores de Mac OS. proporciona al Mac OS X prestaciones modernas, como la memoria protegida, la multitarea por desalojo o expulsiva, la gestión avanzada de memoria.
















eCOS
eCos es un sistema operativode tipo embebido que funciona sobre varias arquitecturas, entre ellas x86PowerPC,  MIPS o ARM.
Sobre su desarrollo se encuentra una potente empresa dedicada a Linuxcomo lo es Red Hat. Es libre y gratuito.











FreeBSD
FreeBSD es un sistema operativolibre para computadorasbasado en las CPUde arquitectura Intel, incluyendo procesadores Intel 80386Intel 80486(versiones SX y DX), y Pentium. También funciona en procesadores compatibles con Intel como AMD y Cyrix









FreeDos
FreeDOS es un proyecto que aspira a crear un sistema operativo libre que sea totalmente compatible con las aplicaciones y los controladores de MS-DOS.
El programa ya ha alcanzado un alto grado de madurez y tiene algunas características que no existían en MS-DOS. Algunos comandos de FreeDOS son idénticos o mejores que sus equivalentes de MS-DOS, pero aún faltan algunos del sistema operativo original













Haiku
Inspirado por BeOS (Be Operating System), Haiku aspira a convertirse en un sistema rápido, eficiente, fácil de usar y fácil de aprender, sin descuidar su potencia para los usuarios de todos los niveles. Su arquitectura de núcleo avanzada ofrece capacidad para múltiples procesadores, un alto rendimiento,




KolibriOS
KolibriOS (también conocido como KOS o Kolibri) es un sistema operativo libre con un núcleo monolíticoanticipativo en tiempo real escrito para PC con arquitectura x86 de 32 bits. Puede funcionar con tan sólo 8MB de memoria RAM




PC-BSD
PC-BSD es un sistema operativoorientado a los escritorios y basado en FreeBSD. Su objetivo radica en la facilidad de uso y de instalación gráfica gracias a un programa que instala y configura automáticamente un escritorio con KDE por defecto








Fedora
Fedora (AFI/fəˈdɔrə/) es una distribución Linuxpara propósitos generales basada en RPM, que se mantiene gracias a una comunidad internacional de ingenieros, diseñadores gráficos y usuarios que informan de fallos y prueban nuevas tecnologías. Cuenta con el respaldo y la promoción de Red Hat. La última versión es Fedora 15, puesta a disposición del público el 24 de mayo del 2011.




GNU/Linux
GNU/Linux es uno de los términos empleados para referirse a la combinación del núcleo o kernellibre similar a Unixdenominado Linux, que es usado con herramientas de sistema GNU. Su desarrollo es uno de los ejemplos más prominentes de software libre; todo su código fuente puede ser utilizado, modificado y redistribuido libremente



openSUSE
openSUSE es el nombre de la distribución y proyecto libre auspiciado por Novell y AMD[3]para el desarrollo y mantenimiento de un sistema operativo basado en Linux. Después de adquirir SUSE Linux en enero de 2004










Ubuntu
Ubuntu es un sistema operativo[6]mantenido por Canonical y la comunidad de desarrolladores. Utiliza un núcleo Linux, y su origen está basado en Debian. Ubuntu está orientado en el usuario promedio. En su última versión, Ubuntu soporta oficialmente dos arquitecturas de hardware en computadoras personales y servidores: x86 y AMD64 (x86-64); siendo la versión 6.10 la última que oficialmente soportó la arquitectura PowerPC, después de lo cual es solo soportada por la comunidad. Sin embargo, extraoficialmente, Ubuntu ha sido portado a tres arquitecturas más: SPARCIA-64 y PlayStation 3.

Resultado de imagen para ubuntu sistema operativo