jueves, 29 de agosto de 2013

JAVA


ARQUITECTURA JAVA

La especificación Java define no sólo un lenguaje de alto nivel, sino también la máquina a bajo nivel y el conjunto de instrucciones que puede ejecutar. Se puede hacer una comparación con la máquina de Código P (P-Code) que se usó en el desarrollo del Pascal en la década de los 80.
Los proveedores tienen libertad para escoger como implantar la arquitectura, pudiendo realizarse usando microprocesadores Java (se desarrollaron algunos hace unos años), o bien mediante una máquina virtual (por software). Existen máquinas virtuales para la mayoría de los entornos vigentes hoy día (Windows, MacOS, Linux, los diversos UNIX).
Además del motor de ejecución, la especificación describe también otros comportamientos como el arranque, la carga y el apagado.

 Lenguajes de desarrollo y bibliotecas

En la mayoría de los sistemas operativos actuales, se ofrece una cantidad de código para simplificar la tarea de programación. Este código toma la forma, normalmente, de un conjunto de bibliotecas dinámicas que las aplicaciones pueden llamar cuando lo necesiten. Pero la Plataforma Java está pensada para ser independiente del sistema operativo subyacente, por lo que las aplicaciones no pueden apoyarse en funciones dependientes de cada sistema en concreto. Lo que hace la Plataforma Java, es ofrecer un conjunto de bibliotecas estándar, que contiene mucha de las funciones reutilizables disponibles en los sistemas operativos actuales.
Las bibliotecas de Java tienen tres propósitos dentro de la Plataforma Java. Al igual que otras bibliotecas estándar, ofrecen al programador un conjunto bien definido de funciones para realizar tareas comunes, como manejar listas de elementos u operar de forma sofisticada sobre cadenas de caracteres. Además, las bibliotecas proporcionan una interfaz abstracta para tareas que son altamente dependientes del hardware de la plataforma destino y de su sistema operativo. Tareas tales como manejo de las funciones de red o acceso a ficheros, suelen depender fuertemente de la funcionalidad nativa de la plataforma destino. En el caso concreto anterior, las bibliotecas java.net y java.io implementan el código nativo internamente, y ofrecen una interfaz estándar para que aplicaciones Java puedan ejecutar tales funciones. Finalmente, no todas las plataformas soportan todas las funciones que una aplicación Java espera. En estos casos, las bibliotecas bien pueden emular esas funciones usando lo que esté disponible, o bien ofrecer un mecanismo para comprobar si una funcionalidad concreta está presente.

iOS

Arquitectura iOS


La arquitectura iOS está basada en capas, donde las capas más altas contienen los servicios y tecnologías más importantes para el desarrollo de aplicaciones, y las capas más bajas controlan los servicios básicos.

  • Cocoa Touch
Cocoa Touch es la capa más importante para el desarrollo de aplicaciones iOS. Posee un conjunto de Frameworks que proporciona el API de Cocoa para desarrollar aplicaciones.
Se podría decir que Cocoa Touch proviene de Cocoa, la API ya existente en la plataforma MAC.

Esta capa está formada por dos Frameworks fundamentales:
  • UIKit: contiene todas las clases que se necesitan para el desarrollo de una interfaz de  usuario
  • Foundation Framework: define las clases básicas, acceso y manejo de objetos, servicios del sistema operativo

  • Media
Provee los servicios de gráficos y multimedia a la capa superior.
  • Core Services
Contiene los sevicios fundamentales del sistema que usan todas las aplicaciones
  • Core OS
Contiene las características de bajo nivel: ficheros del sistema, manejo de memoria, seguridad, drivers del dispositivo.
                                 Sistema operativo que utiliza

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. Tenía el 26% de cuota de mercado de sistemas operativos móviles vendidos en el último cuatrimestre de 2010, detrás de Google Android y Nokia Symbian. En mayo de 2010 en los Estados Unidos, tenía el 59% de consumo de datos móviles (incluyendo el iPod Touch y el iPad).

Lenguajes de Interfaces de servicios

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 acelerometros 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.1.3) ocupa más o menos 770 megabytes, variando por modelo.

Lenguajes de desarrollo y bibliotecas

El Xcode permite trabajar con ficheros Java (.java),  C/C++ (.h,.c,.cpp), Objetive-C (.h,.m) y Objetive-C++ (.h,.mm,.M), pero la plataforma iPhone iOS usa el lenguaje Objetive-C para el desarrollo de aplicaciones.

Objetive-C es un lenguaje orientado a objetos que se define como un conjunto pequeño pero poderoso de extensiones para el lenguaje estándar ANSI C. Esta basado en uno de los primeros lenguajes orientados a objetos: Smaltalk.

Ejemplo
El programa clásico "Hola Mundo" en Objetive-C


Se trata de un lenguaje muy dinámico, ya que muchas decisiones se toman en tiempo de ejecución. Define clases, interfaces, métodos, propiedades y protocolos.

Consta de tres tipos de ficheros: ficheros de cabecera (.h), fichero de implementación del código en Objetive-C(.m) y fichero con el mismo código en C++ por si se quiere hacer una referencia a código anterior (.mm).


 Base de datos que soporta


Muchas aplicaciones para iOS necesitan guardar datos según vamos haciendo uso de ella o ya cuentan con unabase de datos inicial a la que se irán haciendo consultas. Existen varias formas de guardar información en iOS: CoreData, NSUserDefaults, bases de datos SQLite, etc. Si utilizamos bases de datos SQLite, consultar, insertar, actualizar o borrar datos se puede convertir en una tarea bastante engorrosa, “arcaica” y propensa a errores.



Emuladores con los que cuenta


iMAME un emulador de iSO.



LINUX




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

En el amplio mundo del desarrollo de software a veces no contamos con herramientas o tenemos que adaptarnos a otras tecnologías y metodologías para darle solución a nuestros problemas. La creación de los servicios web no es la excepción y mucho menos cuando se va a migrar un software hacia una Arquitectura Orientada a Servicios.
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.

miércoles, 28 de agosto de 2013

SYMBIAN



ARQUITECTURA:


   
Presenta una arquitectura por capaz, el objetivo principal de esta arquitectura es la      organización jerárquica del sistema operativo.


 Capa arquitectura kernel: En realidad la arquitectura correcta es la microkernel. El microkernel se encarga de lo mínimo necesario para que el sistema operativo opere correctamente,es decir, el microkernel se encarga del gestionamiento de la planificación, comunicación de procesos y otras elementales, los otros servicios como gestionamiento de la memoria , etc (que se encargaba basicamente el kernel) ahora se ejecuntan como procesos. La ventaja de esta arquitectura microkernel es que cuando ocurre un fallo en el sistema, este fallo solo afecta al proceso, aplicación o módulo donde ocurrió el fallo y no afecta a todo el sistema. Es de mucha utilidad en los smartphones pues estos tienes diversas aplicaciones que molestarían a los usuarios si al fallar una aplicacion su teléfono móvil se colgara o perdiera comunicación.


      Capa de servicio base: Constituye el núcleo de symbian y está formada por las librerías de usuario, el microkernel y los controladores de dispositivos (drivers).

       Capa de servicios del Sistema Operativo: Son los servicios principales del sistema. Entre ellos destacan el servicio de comunicacion, que proporciona el marco de trabajo y los servicios del sistema para las comunicaciones y el establecimiento de conexiones de red.También esta el servicio de mensajería que proporciona el soporte para los protocolos de envío y recepción de SMS,MMS, correo electronico,etc. El servicio de telefonía y otros.

        Capa de servicios de aplicación: Se encuentra Java Me, que es un conjunto de interfaces de programación de aplicación para que las diferentes empresas que producen equipos que soportan este sistema operativo puedan modificar las aplicaciones a los requisitos de sus equipos creando así diversas plataformas del sistema operativo.

        Capa de Framework: Es la capa que permite la interacción entre el usuario y la plataforma del sistema.

Symbian OS

Es un sistema operativo abierto y estándar para dispositivos de telefonía móvil. Symbian OS es actualmente un sistema operativo multitarea de 32 bits basado en ROM con una arquitectura de micro-kernel altamente modular que ofrece numerosas APIs (Application Programming Interfaces) para el desarrollo de aplicaciones de comunicaciones y soporta los principales estándares de la industria inalámbrica
WAP, XHTML, J2ME, MIDP, MMS, Bluetooth,GPRS, CDMA, SyncML, IPv6, IPsec, etc.
Para la programación de aplicaciones se pueden utilizar distintos lenguajes: Visual Basic,Java, OPL y C++. Siendo este último el lenguaje nativo de Symbian y el que proporciona acceso a
un mayor número de funcionalidades.Existen diferentes SDKs (Software Development Kit) para el desarrollo. El SDK proporciona las herramientas y la documentación necesarias para el desarrollo de aplicaciones en Symbian y un emulador del terminal móvil para PC. Los distintos SDKs están ligados a diferentes plataformas. Cada una de estas plataformas
proporciona una interfaz de usuario y un conjunto de aplicaciones del sistema para mensajería, telefonía, multimedia, agenda y otras tareas, que permite a los diferentes fabricantes personalizar sus entornos de desarrollo. Estas aplicaciones hacen uso de los motores de aplicación genéricos proporcionados por Symbian OS. Las principales plataformas existentes son UIQ, Nokia Serie 60 y Nokia Communicator.

 Lenguajes de Interfaces de servicios


Existen diversos interfaces de usuario que se pueden acoplar a maquinas que ejecutan Symbian: el UIQ y los Series 40, 60 y 80.

El UIQ lo incorporan algunos telefonos de Ericsson y es eminentemente visual, no habiendose desarrollado, por el momento, ninguna aplicaciòn que facilite su uso por parte de ciegos y deficientes visuales.


Los interfaces Series 40, 60 y 80 se pueden ser utilizados por nosotros. El 40 esta anticuado, aunque lo usen aun algunos telefonos. El 80 se ha incorporado en unos modelos de telefonos mas cercanos a PDAs, por tamaño y funcionalidades. Solo nos queda, pues, el Series 60, que es el que mas seguidores ha tenido entre los ciegos y deficientes visuales de habla hispana por poder ejecutar el revisor de pantalla TALKS.




Lenguajes de Desarrollo y bibliotecas



  •  C++
  • Java
  •  Python, Ruby
  •  Flash Lite
  • OPL
  • PIPS






 Bases de datos que soporta Symbian

Aunque las aplicaciones nativas hayan muerto, muchas empresas parece que opinan lo contrario, y hace poco Adobe decidía unirse al consorcio que apoya SQLite, junto a Mozilla y Nokia. SQLite es un motor de bases de datos SQL de dominio público y multi-plataforma, que puede utilizarse en el desarrollo de aplicaciones con menos de 200 Kb.sin duda SQLite es el estándar gratuito de bases de datos.





Emuladores con los que cuenta


Emuladores Vampent: He creado dos carpetas dentro del  , PREFP1+FP1 Y FP2
ya que algunos emuladores de Vampent no estan corriendo en algunos celulares con Symbian S60 v3 FP2
como el de Gameboy  y advance asi que he añadido las versiones que si SON compatibles y el Emulador VBOY no esta HACK**** para esta VERSION pero si INCLUYE EL SERIAL en el cual tienen que ingresar su IMEI y les dara el serial



Vampent:

Vnes: Emulador de Nintendo 



Vsun o VsunPlus: Emulador de Supernintendo



Vbag: Emulador de GAME BOY ADVANCE



Vboy: Emulador de Gameboy/Gameboy Color