jueves, 18 de febrero de 2016

Entorno de aplicaciones de dispositivos moviles (TABLA).

Entorno de aplicaciones de dispositivos moviles.
Nombre
Características
Ventajas
Desventajas

Eclipse
Dispone de un Editor de texto con un analizador sintactico. La compilación es en tiempo real. Tiene pruebas unitarias con JUnit, control de versiones con CVS, integración con Ant, asistentes (wizards) para creación de proyectos, clases, tests, etc., y refactorización.
Asimismo, a través de "plugins" libremente disponibles es posible añadir control de versiones con Subversion. E integración con Hibernate.

-El entorno de desarrollo integrado (IDE) de Eclipse emplea módulos (en inglés plug-in) para proporcionar toda su funcionalidad al frente de la Plataforma de Cliente rico, a diferencia de otros
entornos monolíticos donde las funcionalidades están todas incluidas, las necesite el usuario o
no.

-Este mecanismo de módulos es una plataforma ligera para componentes de software. Adicionalmente a permitirle a Eclipse extenderse usando otros lenguajes de programación como son C/C++ y Python, permite
a Eclipse trabajar con lenguajes para procesado de texto como LaTeX, aplicaciones en red como Telnet.





*Su principalmente inconveniente, común a otros IDEs en mayor o menor medida, en el consumo de recursos del sistema.

*También que carece de mucho soporte para webapps  (.war, jsp y servlets) tal y como lo hace netbeans. (los plugins por lo general no son ni tan potentes ni tan sencillos como el módulo que en Netbeans viene preinstalado).
Xcode
La tecnología para distribuir el proceso de construcción a partir de código fuente entre varios ordenadores, utilizando Bonjour.
Xcode es el entorno de desarrollo integrado (IDE, en sus siglas en inglés) de Apple Inc. y se suministra gratuitamente junto con Mac 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 C, C++, Objective-C, Objective-C++, Java y AppleScript mediante una amplia gama de modelos de programación, incluyendo, pero no limitado a Cocoa, Carbón y Java. Otras compañías han añadido soporte para GNU Pascal,1 Free Pascal,2 Ada y Perl.3
- Compilación de múltiples lenguajes.
- Es de apple xD!
- Tiene simulación virtual IOS
- Insepección de código ("en tiempo real")
- Es gratuito.
-Está diseñado sólo para Mac.
- No hay mucha información sobre su uso.
- Es un poco extenso en herramientas, es bueno para cuando se sabe usar*
.

Carbide.C++
Es una herramienta para el desarrollo de software en lenguaje C++ destinado a dispositivos que funcionan bajo Symbian OS. Se usa tanto para desarrollar los teléfonos que incorporan dicho OS como para las aplicaciones que ejecutan estos.<br />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. Reemplazó a CodeWarrior como primer entorno de desarrollo para Symbian OS.<br />Desde la versión 2.0, Carbide.c++ es gratuito y se ofrece en tres versiones (Developer, Professional, y OEM).1<br />3<br />
-Lenguaje de programación orientado a objetos.
-Lenguaje muy didáctico, gracias a este lenguaje puedes aprender muchos otros lenguajes con gran facilidad, como C#, Java, Visual Basic, Javascript, PHP, entre otros.
- Es muy potente en lo que se refiere a creación de sistemas complejos, un lenguaje muy robusto.
- Permite elaborar aplicaciones sencillas como un "Hello World!" hasta sistemas operativos y mucho más, todo eso dependiendo del manejo del lenguaje.
- Actualmente, puede compilar y ejecutar código de C, ya viene con librerías para realizar esta labor.
- Es un lenguaje muy empleado, existen muchos tutoriales en línea, libros, códigos fuentes abiertos... hay material de sobra y basta para aprender lo necesario y mucho más con este lenguaje.
- Existen muchos algoritmos cuyo pseudocódigo se encuentra ya desarrollado en C++, de manera que puedes tomarlo y amoldarlo a tu solución (porque el que veas un fragmento de código no asegura que sea correcto al 100%).
- Uso de DLLs (librerías dinámicas) muy complejo. Java y .Net han evolucionado estos conceptos manipulando las DLLs mediante los frameworks que proveen. En cambio, en C++ el desarrollador debe encargarse de cargar y liberar de memoria estas librerías, y correr los riesgos por el manejo de esta memoria.
- Elaborar un sistema en C++ es como construir un rascacielos: tiene buen soporte y es robusto, pero si existen errores en los pisos inferiores toda la parte superior se viene abajo terriblemente.
- Manejo de punteros y memoria respecto a ello. Claro, esta también es una gran ventaja porque permite un mejor control de la memoria y una buena administración de recursos de computadora, pero la inexperiencia de los desarrolladores o la pérdida de costumbre con este tipo de variables (sobre todo cuando son dobles o triples punteros, inclusive de mayor orden) los lleva al desastre.
- No es recomendable para desarrollo de páginas Web.
- Existen muchos entornos de programación para C++
.
NetBeans.
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 PHPPack, soporta PHP 5.

-La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de software llamadosmódulos.
-NetBeans es un IDE de código abierto.
-Es multiplataforma: Debido a que fue desarrollado en Java puede ser instalado y utilizado en cualquier Sistema Operativo (Windows, Mac OS, Linux, etc).
-Es un entorno de desarrollo completo y profesional.
-Está escrito en Java. Aunque puede ser utilizado para cualquier otro lenguaje de programación (C, C++, Ruby, PHP, etc).
-Soporta el desarrollo de todos los tipos de aplicación Java (J2SE, web, EJB, y aplicaciones).
-Puede expandirse su funcionalidad a través de la instalación de plugins.

-El problema o e contra es que consume muchos recursos.
-Comparación de otros compiladores es que el proceso de compilación es un tanto mas engorroso
ya que hay que ubicar perfectamente proyecto, paquete y al final la clase y la clase en donde se
encuentra el método main.

Java
 
-Simple-.Basado en el lenguaje C++ pero donde se eliminan muchas de las características OOP que se utilizan esporádicamente y que creaban frecuentes problemas a los programadores. Esta eliminación de causas de error y problemas de mantenimiento facilita y reduce el coste del desarrollo de software.
-Orientado al objeto-.Java da buen soporte a las técnicas de desarrollo OOP y en resumen a la reutilización de componentes de software.
-Distribuido-.Java se ha diseñado para trabajar en ambiente de redes y contienen una gran biblioteca de clases para la utilización del protocolo TCP/IP, incluyendo HTTP y FTP. El código Java se puede manipular a través de recursos URL con la misma facilidad que C y C++ utilizan recursos locales (archivos).
-Interpretado-.El compilador Java traduce cada fichero fuente de clases a código de bytes (Bytecode), que puede ser interpretado por todas las máquinas que den soporte a un visualizador de que funcione con Java. Este Bytecode no es especifico de una máquina determinada, por lo que no se compila y enlaza como en el ciclo clásico, sino que se interpreta.
-Sólido-.El código Java no se quiebra fácilmente ante errores de programación. Así el relaje que existe en la declaración y manejo de tipos en C y C++ se torna en restricciones en Java, donde no es posible la conversión forzada (cast) de enteros en punteros y no ofrece soporte a los punteros que permitan saltarse reglas de manejo de tipos. Así en Java no es posible escribir en áreas arbitrarias de memoria ni realizar operaciones que corrompan el código. En resumen se eliminan muchas de las posibilidades de "trucos" que ofrecía el C y C++.
-Seguro-.Como Java suele funcionar en ambiente de redes el tema de seguridad debe interesar en sobremanera. Las mismas características antes descritas que evitan la corrupción de código evitan su manipulación. Actualmente se esta trabajando en encriptar el código.
-Arquitectura neutral-.El compilador crea códigos de byte (Bytecode) que se envía al visualizador solicitado y se interpreta en la máquina que posee un interprete de Java o dispone de un visualizador que funciona con Java.
-Portable-.Al ser de arquitectura neutral es altamente portable, pero esta característica puede verse de otra manera: Los tipos estándares (int, float ...) están igualmente implementados en todas las máquinas por lo que las operaciones aritméticas funcionaran igual en todas las máquinas.
-Alto desempeño-.Al ser código interpretado, la ejecución no es tan rápida como el código compilado para una plataforma particular. El compilador Java suele ofrecer la posibilidad de compilar Bytecode en código máquina de determinadas plataformas, y según Sun este código resultar de una eficacia similar a compilaciones de C y C++.
-Multihilos-. Java puede aplicarse a la realización de aplicaciones en las que ocurra más de una cosa a la vez. Java, apoyándose en un sistema de gestión de eventos basado en el paradigma de condición y monitores C.A.R. permite apoyar la conducta en tiempo real e interactiva en programas
-Dinámico-.Al contrario que C++ que exige se compile de nuevo la aplicación al cambiar una clase madre Java utiliza un sistema de interfaces que permite aligerar esta dependencia. Como resultado, los programas Java pueden permitir nuevos métodos y variables en un objeto de biblioteca sin afectar a los objetos dependientes.

Primero: No debes volver a escribir el código si quieres ejecutar el programa en otra máquina. Un solo código funciona para todos los browsers compatibles con Java o donde se tenga una Máquina Virtual de Java (Mac's, PC's, Sun's, etc).

Segundo: Java es un lenguaje de programación orientado a objetos, y tiene todos los beneficios que ofrece esta metodología de programación (más adelante doy una pequeña introducción a la filosofía de objetos).


Tercero: Un browser compatible con Java deberá ejecutar cualquier programa hecho en Java, esto ahorra a los usuarios tener que estar insertando "plug-ins" y demás programas que a veces nos quitan tiempo y espacio en disco.

Cuarto: Java es un lenguaje y por lo tanto puede hacer todas las cosas que puede hacer un lenguaje de programación: Cálculos matemáticos, procesadores de palabras, bases de datos, aplicaciones gráficas, animaciones, sonido, hojas de cálculo, etc.

Quinto: Si lo que me interesa son las páginas de Web, ya no tienen que ser estáticas, se le pueden poner toda clase de elementos multimedia y permiten un alto nivel de interactividad, sin tener que gastar en paquetes carísimos de multimedia.
-Hay diferentes tipos de soporte técnico para la misma herramienta, por lo que el análisis de la mejor opción se dificulta
-Para manejo a bajo nivel deben usarse métodos nativos, lo que limita la portabilidad.

-El diseño de interfaces gráficas con awt y swing no es simple.o Existen herramientas como el JBuilder que permiten generar interfaces gráficas de manera sencilla, pero tienen un costo adicional.
- Puede ser que no haya JDBC para bases de datos poco comerciales.

-Algunas herramientas tienen un costo adicional.

martes, 16 de febrero de 2016

Arquitectura del sistema operativo android.


Android es un sistema operativo creado para ser independiente de cualquier tipo de arquitectura de hardware en los dispositivos móviles. Esta característica hace que sea tan atractivo ante los fabricantes y desarrolladores.
Adicionalmente su portabilidad, flexibilidad yseguridad les da ese toque de simpatía a las personas interesadas en los sistemas de código abierto.
La arquitectura de Android debe ser estudiada antes de comenzar a programar. Por tal motivo, en este artículo veremos cómo está constituido el interior de Android. Estudiaremos sus características de operación en tiempo real y en queformato de archivo se encapsula una aplicación Android.
 

El diagrama indica que la estructura de Android se encuentra construida sobre el Kernel de Linux. Luego hay una capa de Librerías relacionadas con una estructura administradora en Tiempo de ejecución. En el siguiente nivel encontramos un Framework de apoyo para construcción de aplicaciones y posteriormente vemos a la capa de Aplicaciones.

Kernel de Linux:  ¿Qué es Android?, el núcleo del sistema operativo Android está basado en el kernel de Linux versión 2.6, similar al que puede incluir cualquier distribución de Linux, como Ubuntu, solo que adaptado a las características del hardware en el que se ejecutará Android, es decir, para dispositivos móviles.
El núcleo actúa como una capa de abstracción entre el hardware y el resto de las capas de la arquitectura. El desarrollador no accede directamente a esta capa, sino que debe utilizar las librerías disponibles en capas superiores. De esta forma también nos evitamos el hecho de quebrarnos la cabeza para conocer las características precisas de cada teléfono. Si necesitamos hacer uso de la cámara, el sistema operativo se encarga de utilizar la que incluya el teléfono, sea cual sea. Para cada elemento de hardware del teléfono existe un controlador (o driver) dentro del kernel que permite utilizarlo desde el software.
El kernel también se encarga de gestionar los diferentes recursos del teléfono (energía, memoria, etc.) y del sistema operativo en sí: procesos, elementos de comunicación (networking), etc.

 Librerías: La siguiente capa que se sitúa justo sobre el kernel la componen las bibliotecas nativas de Android, también llamadas librerías. Están escritas en C o C++ y compiladas para la arquitectura hardware específica del teléfono. Estas normalmente están hechas por el fabricante, quien también se encarga de instalarlas en el dispositivo antes de ponerlo a la venta. El objetivo de las librerías es proporcionar funcionalidad a las aplicaciones para tareas que se repiten con frecuencia, evitando tener que codificarlas cada vez y garantizando que se llevan a cabo de la forma “más eficiente”.
Entre las librerías incluidas habitualmente encontramos OpenGL (motor gráfico), Bibliotecas multimedia (formatos de audio, imagen y video), Webkit (navegador), SSL (cifrado de comunicaciones), FreeType (fuentes de texto), SQLite (base de datos), entre otras.

 Entorno de ejecución: Como podemos apreciar en el diagrama, el entorno de ejecución de Android no se considera una capa en sí mismo, dado que también está formado por librerías. Aquí encontramos las librerías con las funcionalidades habituales de Java así como otras específicas de Android.
El componente principal del entorno de ejecución de Android es la máquina virtual Dalvik. Las aplicaciones se codifican en Java y son compiladas en un formato específico para que esta máquina virtual las ejecute. La ventaja de esto es que las aplicaciones se compilan una única vez y de esta forma estarán listas para distribuirse con la total garantía de que podrán ejecutarse en cualquier dispositivo Android que disponga de la versión mínima del sistema operativo que requiera la aplicación.
Cabe aclarar que Dalvik es una variación de la máquina virtual de Java, por lo que no es compatible con el bytecode Java. Java se usa únicamente como lenguaje de programación, y los ejecutables que se generan con el SDK de Android tienen la extensión .dex que es específico para Dalvik, y por ello no podemos correr aplicaciones Java en Android ni viceversa.

 Framework de aplicaciones: La siguiente capa está formada por todas las clases y servicios que utilizan directamente las aplicaciones para realizar sus funciones. La mayoría de los componentes de esta capa son librerías Java que acceden a los recursos de las capas anteriores a través de la máquina virtual Dalvik. Siguiendo el diagrama encontramos:

  1. Activity Manager: Se encarga de administrar la pila de actividades de nuestra aplicación así como su ciclo de vida.
  2. Windows Manager: Se encarga de organizar lo que se mostrará en pantalla. Básicamente crea las superficies en la pantalla que posteriormente pasarán a ser ocupadas por las actividades.
  3. Content Provider: Esta librería es muy interesante porque crea una capa que encapsula los datos que se compartirán entre aplicaciones para tener control sobre cómo se accede a la información.
  4. Views: En Android, las vistas los elementos que nos ayudarán a construir las interfaces de usuario: botones, cuadros de texto, listas y hasta elementos más avanzados como un navegador web o un visor de Google Maps.
  5. Notification Manager: Engloba los servicios para notificar al usuario cuando algo requiera su atención mostrando alertas en la barra de estado. Un dato importante es que esta biblioteca también permite jugar con sonidos, activar el vibrador o utilizar los LEDs del teléfono en caso de tenerlos.
  6. Package Manager: Esta biblioteca permite obtener información sobre los paquetes instalados en el dispositivo Android, además de gestionar la instalación de nuevos paquetes. Con paquete nos referimos a la forma en que se distribuyen las aplicaciones Android, estos contienen el archivo .apk, que a su vez incluyen los archivos .dex con todos los recursos y archivos adicionales que necesite la aplicación, para facilitar su descarga e instalación.
  7. Telephony Manager: Con esta librería podremos realizar llamadas o enviar y recibir SMS/MMS, aunque no permite reemplazar o eliminar la actividad que se muestra cuando una llamada está en curso.
  8. Resource Manager: Con esta librería podremos gestionar todos los elementos que forman parte de la aplicación y que están fuera del código, es decir, cadenas de texto traducidas a diferentes idiomas, imágenes, sonidos o layouts. En un post relacionado a la estructura de un proyecto Android veremos esto más a fondo.
  9. Location Manager: Permite determinar la posición geográfica del dispositivo Android mediante GPS o redes disponibles y trabajar con mapas.
  10. Sensor Manager: Nos permite manipular los elementos de hardware del teléfono como el acelerómetro, giroscopio, sensor de luminosidad, sensor de campo magnético, brújula, sensor de presión, sensor de proximidad, sensor de temperatura, etc.
  11. Cámara: Con esta librería podemos hacer uso de la(s)  cámara(s) del dispositivo para tomar fotografías o para grabar vídeo.
  12. Multimedia: Permiten reproducir y visualizar audio, vídeo e imágenes en el dispositivo.
 Aplicaciones: En la última capa se incluyen todas las aplicaciones del dispositivo, tanto las que tienen interfaz de usuario como las que no, las nativas (programadas en C o C++) y las administradas (programadas en Java), las que vienen preinstaladas en el dispositivo y aquellas que el usuario ha instalado.
En esta capa encontramos también la aplicación principal del sistema: Inicio (Home) o lanzador (launcher), porque es la que permite ejecutar otras aplicaciones mediante una lista y mostrando diferentes escritorios donde se pueden colocar accesos directos a aplicaciones o incluso widgets, que son también aplicaciones de esta capa.

 

Entornos principales de trabajo para aplicacines moviles.

Entornos principales de trabajo para aplicacines moviles.

Eclipse

Eclipse es un programa informático compuesto por un conjunto de herramientas de programación de código abierto multiplataforma para desarrollar lo que el proyecto llama "Aplicaciones de Cliente Enriquecido", opuesto a las aplicaciones "Cliente-liviano" basadas en navegadores. 



XCODE
Es el entorno de desarrollo integrado (IDE, en sus siglas en inglés) de Apple Inc. y se suministra gratuitamente junto con Mac 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 .


Carbide.C++
Es una herramienta para el desarrollo de software en lenguaje C++ destinado a dispositivos que funcionan bajo Symbian 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. 


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. 

JAVA
Es un lenguaje de programación de propósito general, concurrente, orientado a objetos y basado en clases 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.



jueves, 11 de febrero de 2016

Sistema operativos libres.

Sistema operativos libres.
El Software Libre es un tipo particular de software que le permite al usuario el ejercicio de cuatro libertades básicas: 

0. Ejecutarlo con cualquier propósito 
1. Estudiar como funciona y adaptarlo a sus necesidades 
2. Distribuir copias 
3. Mejorarlo, y liberar esas mejoras al publico 

Con la única restricción del copyleft (o sea, cualquiera que redistribuya el software, con o sin cambios, debe dar las mismas libertades que antes), y con el requisito de permitir el acceso al código fuente (imprescindible para ejercer las libertades 1 y 3) 

Ubicación del Software Libre en las distintas

 clasificaciones .

1. De acuerdo al costo de adquisición: el Software Libre puede ser de las dos clases, es decir, de costo cero o de costo mayor que cero. Lo que lo diferencia del Software Propietario es que su costo es independiente del numero de computadoras que se poseen. Por ejemplo, en el caso del Sistema Operativo Microsoft Windows 3.1/95/98/Me/NT/2000/XP por cada computadora en que lo instale debo pagar una licencia. En cambio, si utilizo en Sistema Operativo GNU/Linux (en cualquiera de sus distribuciones, como Red Hat, Mandrake, Debian, Ututo) debo pagar una sola licencia (no obstante, algunas licencias no tienes costo). 
2. De acuerdo a la apertura del código fuente: el Software Libre siempre es "open source", es decir, de código fuente abierto, ya que dijimos que el acceso al código fuente es necesario para el ejercicio de las libertades 1 y 3 arriba descriptas. El ser "open source" implica una serie de ventajas que serán descriptas en la sección "Ventajas del Software Libre". 
3. De acuerdo a su protección: el Software Libre siempre esta protegido con licencias, y mas específicamente, con licencias de copyleft. ¿Por que no de dominio publico? Porque de ese modo cualquiera puede adueñarse de el, por ejemplo, adquiere un Software Libre, lo modifica, lo compila y lo distribuye con código cerrado. ¿Por que no con Copyright? Porque de esa manera alguien le puede agregar alguna restricción, por lo tanto no va a seguir siendo Software Libre. 

Explicación de las libertades básicas del Software 

Libre .

Libertad Cero: "usar el programa con cualquier propósito". Es decir, el ejercicio de esta libertad implica que lo podemos utilizar con cualquier fin, ya sea educativo, cultural, comercial, político, social, etc. Esta libertad deriva de que hay ciertas licencias que restringen el uso del software a un determinado propósito, o que prohíben su uso para determinadas actividades. 

Libertad Uno: "Estudiar como funciona el programa, y adaptarlo a sus necesidades". Significa que podemos estudiar su funcionamiento (al tener acceso al código fuente) lo que nos va a permitir, entre otras cosas: descubrir funciones ocultas, averiguar como realiza determinada tarea, descubrir que otras posibilidades tiene, que es lo que le falta para hacer algo, etc. El adaptar el programa a mis necesidades implica que puedo suprimirle partes que no me interesan, agregarle partes que considero importantes, copiarle una parte que realiza una tarea y adicionarla a otro programa, etc. 

Libertad Dos: "Distribuir copias". Quiere decir que soy libre de redistribuir el programa, ya sea gratis o con algún costo, ya sea por email, FTP o en CD, ya sea a una persona o a varias, ya sea a un vecino o a una persona que vive en otro país, etc. 

Libertad Tres: "Mejorar el programa, y liberar las mejoras al publico". Tengo la libertad de hacer mejor el programa, o sea que puedo: hacer menores los requerimientos de hardware para funcionar, que tenga mayores prestaciones, que ocupe menos espacio, que tenga menos errores, etc. El poder liberar las mejoras al publico quiere decir que si yo le realizo una mejora que permita un requerimiento menor de hardware, o que haga que ocupe menos espacio, soy libre de poder redistribuir ese programa mejorado, o simplemente proponer la mejora en un lugar publico (un foro de noticias, una lista de correo, un sitio Web, un FTP, un canal de Chat).

Sistema operativo comerciales.

sistema operativo comerciales.

Los sistemas operativos comerciales son los de paga, es decir tienes que tener una licencia legal del sistema operativo que hayas adquirido. Veamos algunos ejemplos: de la familia de Windows y todos comerciales entre otros están Windows 95, Windows 98, Windows Me, Windows 2000 Profesional, Windows Nt, Windows Server, Windows Xp profesional y Home, Windows Vista Basic, Premium, Bussines, Ultimate, y Ms dos entre otro Otro sistema operativo comercial es Mac os, utilizado por las computadoras Mac. Todos los anteriores son ejemplos de sistemas operativos comerciales ya que se pagó por ellos. En la Mayoría de las computadoras de marca ya viene instalado, pero el precio de la PC viene incluido el cobro del sistema operativo. Un sistema operativo no comercial es Linux por ejemplo, no es comercial ya que no se paga una licencia por obtenerlo. A su vez Linux tiene diferentes versiones de su sistema operativo que también se les suele llamar sistemas operativos libres.



Procesadores de los dispositivos moviles.

Procesadores de los dispositovos moviles.
Apple A5X

Los teléfonos móviles son un objeto de deseo cada vez más universal y ya no hay que ser apasionado de la tecnología para interesarse por qué pantalla, procesador o sistema operativo cargan

El acercamiento a los smartphones con el ánimo de tomar una decisión de compra que no se base únicamente en el precio, pasa por conocer cómo están construidos. Vistos desde fuera, todos los terminales son parecidos: tienen una pantalla, iconos en el escritorio, algunos teclado, funcionan con una batería… Pero hay otras características que no se ven tanto, y que empiezan a cobrar relevancia a medida que la tecnología progresa. Son las relacionadas con «las tripas» de los dispositivos móviles, sobre todo de los smartphones, pero también se aplica a las tabletas y por extensión a los Ultrabooks y portátiles.
En los primeros teléfonos inteligentes, ya fueran Android, Symbian, BlackBerry, Windows Mobile o iOS, el procesador o las tecnologías aceleradoras de gráficos empleadas en su construcción apenas sí suscitaban interés. La tecnología se ocultaba tras la mera funcionalidad. Además, la escasez de terminales, junto con la falta de información que se tenía de los primeros procesadores ARM y de los pocos fabricantes que los firmaban, contribuían a ocultar los detalles tecnológicos.

El interés por los procesadores en movilidad.


A medida que el negocio de la movilidad ha ido cobrando forma y el ecosistema de aplicaciones y servicios creciendo, la tecnología va ofreciendo más y más posibilidades tanto para los desarrolladores de aplicaciones como para los de sistemas operativos. Un teléfono móvil no se aleja demasiado (conceptualmente hablando) de un portátil o de un ordenador. Funciona gracias a que hay un sistema operativo que se ejecuta sobre una plataforma de hardware compuesta por un procesador (CPU), un acelerador gráfico (GPU), memoria, comunicaciones, la pantalla y una interfaz con métodos para la entrada de datos mediante teclado o usando los dedos o la voz. Pero, a diferencia de los sistemas de sobremesa, donde muchos de estos componentes están perfectamente diferenciados, en los móviles lo que se hace es integrarlos todos en los SoC (System On a Chip).
Al principio eran populares los feature phones, que no permitían la descarga de aplicaciones, sino que dependían de las que tuviera preinstaladas el propio sistema operativo cerrado,o de las que el fabricante incluyera con carácter excepcional posteriormente. Ya entonces se empezaba a hablar del procesador como elemento diferenciador, con ejemplos como el Samsung Jet. Con Apple, con el iPhone original, la llegada de su tienda de aplicaciones en 2008 y meses después la de Google, todo cambió: las aplicaciones precisaban de un buen hardware para funcionar, por supuesto. Su evolución ha atraído la atención de los principales fabricantes de procesadores; desde Intel hasta NVIDIA, pasando por Qualcomm, Samsung, Texas Instruments o Apple, entre otros.
Apple iPhone 5 mapas

¿Por qué ARM?


La arquitectura de los procesadores móviles existentes, con el permiso de Intel y su procesador Atom Z2460 con arquitectura x86, es ARM. ARM ofrece tanto los juegos de instrucciones necesarios para programar aplicaciones como diseños de referencia para fabricar los procesadores capaces de trabajar con ellos. Las instrucciones tienen un equivalente en operaciones lógicas y aritméticas, que a su vez tienen su «representación» electrónica realizable mediante circuitos digitales. Una compañía interesada en ofrecer soluciones CPU basadas en ARM puede licenciar tanto las instrucciones como el diseño de referencia, o diseñar desde cero la electrónica capaz de trabajar con ellas.
Durante la historia de ARM, ha habido diferentes arquitecturas caracterizadas por el juego de instrucciones. ARMv1, ARMv2, hasta llegar a ARMv7 con la vista puesta en ARMv8. Para cada arquitectura, ha habido diferentes diseños de referencia. Por ejemplo, para ARMv6 se tenía el diseño de referencia ARM11. Y para los actuales ARMv7 son populares los ARM Cortex A9 a la espera de los Cortex A15.
Compañías como Apple, Qualcomm o NVIDIA, en alguno de sus proyectos futuros, no usan estos diseños de referencia y, por tanto, sus procesadores no se pueden categorizar como Cortex A9 ni A15, aunque sus características estarán en línea con las de los futuros Cortex A15. Por ejemplo, el procesador Samsung Exynos 4412 de cuatro núcleos que usa el Galaxy S3 es ARMv7 Cortex A9, así como el Tegra 3 de NVIDIA, también quad core, es Cortex A9.
NVIDIA Tegra 3
Los procesadores de Intel se han encontrado con un problema al enfrentarse a este entorno: la eficiencia de la arquitectura x86. Intel ha ido bajando el voltaje y la frecuencia de sus CPUs para optimizar el consumo; pero, su problema es que, para obtener un procesador con un consumo tan bajo como para ser instalable en un móvil, tiene que bajar tanto la frecuencia que el rendimiento cae hasta niveles paupérrimos. Así, si una CPU x86 consume 100 W, puedes intuir que su rendimiento será elevado. Si consume 17 W, su rendimiento será varios órdenes de magnitud menor; y, si consume 2 W, el rendimiento será tan bajo que no valdrá ni para un móvil. Tras muchos años de trabajo, parece que los Atom empleados en la plataforma Med­field para móviles consiguen estar a la altura y ya hay terminales Android que usan el Atom Z2460 como procesador.
ARM, por su parte, usa un juego de instrucciones (ISA) reducido, más simple que el de x86. Es una arquitectura RISC (Reduced Instruction Set Computer) frente a la CISC de Intel o AMD (Complex Instruction Set Computer). Es una arquitectura más eficiente, que ha crecido en rendimiento gracias a mejoras en el diseño de los micros. Por ejemplo, Intel tuvo que eliminar la parte Out of Order (OoO) en el Atom para ajustarlo a las exigencias de consumo de los móviles, pero en ARM se ha conseguido implementar esta característica que hace que el rendimiento mejore entre un 15 y un 30 por ciento.
En la tabla de benchmarks puedes ver que los últimos procesadores ARM alcanzan rendimientos cercanos o superiores a los de Intel con consumos menores.

Gráficas y comunicaciones.

Otro de los elementos diferenciadores de los smartphones es el acelerador gráfico integrado en el SoC. Entre los desarrolladores de tecnologías gráficas para móviles están la propia ARM con los procesadores Mali; PowerVR, con los SGX; NVIDIA, con sus GeForce; o Qualcomm, con los Adreno, con la tecnología adquirida a ATI Imageon. Así, Texas Instruments, Intel o Apple emplean la tecnología de PowerVR, mientras que Samsung utiliza Mali.
Tabla microprocesadores gráficos
A diferencia de los aceleradores gráficos para equipos de sobremesa, los que usan lo móviles son compatibles con OpenGL y no con DirectX. Así, los programadores de aplicaciones usan OpenGL para crear los efectos gráficos y mover las geometrías de los juegos y aplicaciones tanto en 2D como 3D. Hay una relación directa entre la resolución de pantalla y la capacidad que tiene que tener el procesador gráfico, con casos como el del iPad3 de Apple que tuvo que instalar un modelo de 16 núcleos aceleradores para satisfacer los requerimientos de su pantalla Retina 3.
Estén integradas o no en el SoC, en un smart­phone las tecnologías de comunicación son esenciales. Qualcomm ofrece soluciones excelentes tanto integradas en los chips como independientes. Con la llegada de LTE empiezan a complicarse las cosas. Las palabras clave para quien busque el máximo aprovechamiento de las comunicaciones son precisamente LTE, DC-HSPA (HSPA dual carrier), así como WiFi de doble banda (2,4 GHz y 5 GHz) o Bluetooth 4.0 LE (Low Energy). NFC, si está disponible, es otra tecnología que entra dentro de las deseables de cara a futuros desarrollos tecnológicos.
De todos modos, recuerda que la limitación en el caso de las comunicaciones móviles suele venir dada por parte del contrato o del operador más que por la tecnología. La máxima velocidad que permite una tecnología dada generalmente solo se puede conseguir con modalidades de contrato que suponen un desembolso elevado al mes.

¿Qué CPU móvil elegir?

HTC One S
Si tienes pensado elegir un móvil de gama alta o media por encima de los 350 euros en el mercado libre, no deberías tener problema para obtener un hardware solvente. Si es de gama alta, no deberías preocuparte por el apartado del rendimiento ni ahora ni en un par de años. Para las gamas medias, asegúrate de que tengas un procesador Cortex A9 de dos núcleos. El procesador gráfico será del mismo rango de rendimiento. En unos meses, deberás buscar Cortex A15 como referencia o bien una arquitectura a medida como la de Qualcomm con Krait, equivalente a Cortex A15.
En los móviles de gamas media-baja o baja, no esperes nada espectacular. Tendrás procesadores como los ARM11 o Cortex A8, donde ya es probable que encuentres problemas para actualizar el sistema operativo a las últimas versiones o para instalar algunas aplicaciones especialmente exigentes. Por supuesto, no es un inconveniente abrumador, salvo que busques lo más de los más. En cuanto a velocidades, para el momento actual, velocidades entre 1 GHz y 1,5 GHz son correctas.
Si hubiera que resumir, en el momento presente, para estar cómodo con el móvil, no deberías aspirar a menos de un doble núcleo Cortex A9 o Qualcomm Krait (por ejemplo, el HTC One S usar el doble núcleo Krait a 1,5 GHz). El iPhone 5 usa su propia A6 y Texas Instruments no es ya demasiado fácil de encontrar en móviles, aunque hasta que no llegue TI OMAP5 no parece que hay una oferta amplia. Con un modelo de cuatro núcleos no tendrás problemas, pero recuerda que no obtendrás una experiencia de uso dos veces mejor que la de los dual core.
En cuanto a los gráficos, si eliges un procesador solvente, los gráficos serán solventes. Eso sí, si buscas un hardware acelerado concreto, se reducen las opciones para elegir la CPU al estar ambos componentes integrados en el mismo chip físico.

¿Qué pasa con LTE?

A pesar de que LTE es una característica que genera un notable entusiasmo, hay que decir que por el mero hecho de que un terminal tenga esta tecnología no va a navegar más rápido ni conectarse a más velocidad. Las redes LTE no están demasiado extendidas aún, y no estarán disponibles de forma generalizada o comercial hasta dentro de bastantes meses. Así que mejor que no bases la compra exclusivamente en que tu próximo móvil tenga o no tenga LTE. Además, hay que ver qué tarifas tienen las conexiones 4G. De momento HSPA+ ofrece hasta 21 Mbps. Y con DC-HSPA+ puedes llegar hasta más de 40 Mbps de velocidad. Suficientes para cada casi todas las aplicaciones.

¿Se notan los cuatro núcleos?

Cuando un fabricante habla de que su móvil estrella tiene un corazón de cuatro núcleos, es fácil pensar que podremos usarlo casi como un ordenador. Pero no. Android, iOS, BlackBerry OS o Windows Phone no son sistemas operativos pensados para multitarea. Sí que hay aplicaciones que se benefician de los cuatro núcleos, pero ni siquiera en los benchmarks sintéticos es fácil obtener diferencias que respondan linealmente al incremento de núcleos.
Por otro lado, hay veces que la arquitectura del procesador influye más que el número de núcleos. Cuando veas que un procesador tal es Cortex A9 y otro es Cortex A8, lo más probable es que el Cortex A9 sea preferible incluso para un número de núcleos menor. El ejemplo más reciente lo tienes con los Qualcomm Snapdragon MSM8260A, un dual core 1,5 GHz Krait capaz de sacar los colores a un quad core Tegra 3 de NVIDIA Cortex A9. La clave en este caso está en que el Qualcomm usa la arquitectura Krait en sus núcleos, que es equivalente a los futuros Cortex A15, los cuales sucederán a los Cortex A9.
Si te fijas en los móviles de 100–200 euros, su procesador no es ni siquiera Cortex A. Son ARM11 pertenecientes a una generación anterior incluso a los actuales procesadores en los terminales más representativos del mercado.

Tabla de características y rendimientos.

Tabla microprocesadores gráficos

Conclusiones de las pruebas.

Los benchmarks realizados sobre diferentes plataformas muestran que los últimos procesadores móviles basados en ARM empiezan a ser competitivos frente a los de consumo más reducidos de Intel, como los Atom o los Core i3 de bajo voltaje. En concreto, los procesadores Atom se quedan por detrás en muchos casos y el Core i3 del Ultrabook Sony Vaio no destaca tampoco de forma clara frente a los ARM. Eso sí, en la parte de los procesadores de sobremesa de alto rendimiento, las diferencias son abismales.
Comparando móviles con móviles, vemos que el número de núcleos tiene una importancia marginal. Si bien en algunas pruebas sí que supone una ventaja, en algunas otras, los procesadores de doble núcleo son tan competitivos como los de cuatro. Especialmente si, como es el caso de Qualcomm, el micro incorpora las más avanzadas arquitecturas más allá de Cortex A9. El caso de iPhone 5 es otro ejemplo de cómo un procesador de doble núcleo puede estar cerca en rendimiento a otro de cuatro. Al final, sí es cierto que tanto el Exynos quad core, como el Qualcomm Snapdragon Pro de cuatro núcleos se llevan casi todos los méritos. Tegra 3, de NVIDIA, empieza a mostrar síntomas de necesitar una actualización. Para 2013 se espera el sucesor de Tegra 3 Kal-El, con nombre clave Wayne, con ARM Cortex A15 y un núcleo gráfico que será compatible con Di­rectX 11, así como OpenGL y PhysX. Seguirá teniendo el diseño de cuatro núcleos más uno adicional para las tareas que no requieran un rendimiento elevado.
Estos resultados corroboran la idea de no elegir necesariamente un móvil por tener cuatro núcleos. Lo cual deja margen para centrarse en otras cualidades tecnológicas de los smartphones: pantalla, sistema operativo, comunicaciones, cámara, teclado, batería. Eso sí, siempre y cuando no te den gato por liebre vendiéndote un terminal aparentemente bueno que no incorpore una CPU a la altura.
En el apartado de los benchmarks, aún se echa de menos que aparezcan programas más representativos de usos reales y tangibles. El problema es que en el móvil no se llevan a cabo tareas que demanden tanto tiempo como las del PC, por lo que es más complicado definir pruebas de rendimiento que reflejen la experiencia de uso diaria y cotidiana. Estas pruebas permiten identificar un mal procesador o un buen procesador, pero no dan una idea diferenciada de la experiencia de uso final.