miércoles, 29 de abril de 2015

PROGRAMACION ORIENTADA A OBJETOS

  Gottfried Wilheml von Leibniz (1646-1716), quien aprendió matemáticas de forma autodidacta (método no aconsejable en programación) construyó una máquina similar a la de Pascal, aunque algo más compleja, podía dividir, multiplicar y resolver raíces cuadradas.
Pero quien realmente influyó en el diseño de los primeros computadores fue Charles Babbage (1793-1871). Con la colaboración de la hija de Lord Byron, Lady Ada Countess of Lovelace (1815-1852), a la que debe su nombre el lenguaje ADA creado por el DoD (Departamento de defensa de Estados Unidos) en los años 70. Babbage diseñó y construyó la "máquina diferencial" para el cálculo de polinomios. Más tarde diseñó la "máquina analitica" de propósito general, capaz de resolver cualquier operación matemática. Murió sin poder terminarla, debido al escepticismo de sus patrocinadores y a que la tecnología de la época no era lo suficientemente avanzada. Un equipo del Museo de las Ciencias de Londres, en 1991, consiguió construir la máquina analítica de Babbage, totalmente funcional, siguiendo sus dibujos y especificaciones.
Máquina diferencial de Babbage

Un hito importante en la historia de la informática fueron las tarjetas perforadas como medio para "alimentar" los computadores. Lady Ada Lovelace propuso la utilización de las tarjetas perforadas en la máquina de Babbage. Para que se enteren todos esos machistas desaprensivos, el primer programador/a fue una mujer. En 1880 el censo en Estados Unidos tardó más de 7 años en realizarse. Es obvio que los datos no eran muy actualizados. Un asistente de la oficina del censo llamado Herman Hollerit (1860-1929) desarrolló un sistema para automatizar la pesada tarea del censo. Mediante tarjetas perforadas y un sistema de circuitos eléctricos, capaz de leer unas 60 tarjetas por minuto realizó el censo de 1890 en 3 años ahorrando tiempo y dinero. Más tarde fundó la Tabulating Machine Company y en 1924 tras alguna que otra fusión nació la Internacional Bussines Machines, IBM. ¿ Os suena ?
Atanasoff Berry Computer (ABC)

Las computadoras de hoy en día se sustentan en la lógica matemática basada en unsistema binario. Dicho sistema se implementa sobre dispositivos electrónicos que permiten, o no, pasar la corriente, con lo que se consiguen los 2 estados binarios: 0 y 1. A mediados del siglo XX, cuando se empezaron a construir las primeras computadoras digitales, se utilizaban tubos de vacío para implementar los 2 estados binarios, pero ¿ cómo aparecieron estos conceptos ? Alan Mathison Turing (1912-1954) diseñó una calculadora universal para resolver cualquier problema, la "máquina de Turing". Tuvo mucha influencia en el desarrollo de la lógica matemática. En 1937 hizo una de sus primeras contribuciones a la lógica matemática y en 1943 plasmó sus ideas en una computadora que utilizaba tubos de vacío. George Boole (1815-1864) también contribuyó al algebra binaria y a los sistemas de circuitos de computadora, de hecho, en su honor fue bautizada el álgebra booleana.
La primera computadora digital electrónica patentada fue obra de John Vincent Atanasoff (1903-1995). Conocedor de las inventos de Pascal y Babbage, y ayudado por Clifford Berry (1918-1963), construyó el Atanasoff Berry Computer (ABC). El ABC se desarrolló entre 1937 y 1942. Consistía en una calculadora electrónica que utilizaba tubos de vacío y estaba basada en el sistema binario (sistema numérico en el que se combinan los valores verdadero y falso, o 0 y 1).
Entre 1939 y 1944, Howard Aiken (1900-1973) de la universidad de Harvard en colaboración con IBM desarrolló el Mark 1. Era una computadora electromecánica de 16 metros de largo y más de dos de alto. Tenía 700.000 elementos móviles y varios centenares de kilómetros de cables. Podía realizar las cuatro operaciones básicas y trabajar con información almacenada en forma de tablas.
Por desgracia, los avances tecnológicos suelen producirse gracias a los militares que se aprovechan de la ciencia para perfeccionar sus armas. En la Moore School de la Universidad de Pensilvania se estaba trabajando en un proyecto militar para realizar unas tablas de tiro para armas balísticas. Los cálculos eran enormes y se tardaban semanas en realizarlos. Parece ser que John W. Mauchly (1907-1980), quien dirigía el departamento de física del Ursine College de Filadelfia vivió en casa de Atanasoff durante cuatro días a partir del 13 de Junio de 1941, lo que seguramente aprovechó para conocer las ideas de Atanasoff.
Junto a John Presper Eckert (1919-1995), Mauchly desarrolló una computadora electrónica completamente operacional a gran escala, para acelerar los complicados cálculos del proyecto militar de la universidad Moore. Se terminó en 1946 y se llamó Electronic Numerical Integrator And Computer (ENIAC). El ENIAC tenía 18.000 tubos electrónicos integrados en un volumen de 84 metros cúbicos. Pesaba unas 30 toneladas y consumía alrededor de 100.000 vatios. Su capacidad de cálculo era de 5.000 operaciones por segundo, aunque tenía que programarse manualmente conectándola a 3 tableros que contenían más de 6000 interruptores. Cargar un programa podía ser una tarea de varios días. El calor dispado por semejante monstruo debía ser importante, y se necesitaba una instalación de aire acondicionado. En definitiva, un ordenador portátil... más o menos.
Puede que no os suene, pero quien conozca de "los entresijos de la informática" seguro que considera importante nombrar a Johann Ludwig Von Neumann (1903-1957), genio de las matemáticas, quien tuvo el honor de asistir a las clases de Albert Einstein en la universidad de Berlín. Autor de trabajos de lógica simbólica, matemática pura y aplicada, física y tecnología, publicó un artículo acerca del almacenamiento de los programas, en 1945. Proponía que los programas se guardaran en memoria al igual que los datos, en forma binaria. Esto tuvo como consecuencia el aumento de velocidad de los cálculos y la ausencia de errores producidos por fallos mecánicos al programar la máquina mediante cables.
En cuanto a la aparición de los lenguajes de programación, el archiconocido COBOL, que tantos problemas causó con el "efecto 2000", fue el primer lenguaje en el que no había que programar directamente en código binario, y fue Grace Murray Hoper en 1952, una oficial de la Marina de Estados Unidos desarrolló el primer compilador, un programa que puede traducir enunciados parecidos al inglés en un código binario comprensible para la maquina llamado COBOL (COmmon Business-Oriented Languaje).
A partir de ahí, los avances han sido vertiginosos.
  • La utilización del transistor en las computadoras en 1958, sustituyendo los tubos de vacío
  • La aparición del circuito integrado de mano de Jack Kilby, también en 1958
  • La miniaturización de un circuito electrónico en un chip de silicio en 1961
  • El primer microprocesador, el 4004 de Intel, en 1971
  • Gary Kildall crea el sistema operativo CP/M en 1973
  • IBM comercializa el primer PC en 1980
Recordando a los primeros tiempos del ENIAC, con enormes computadores, en 1998 se terminó el proyecto Blue Pacific. La "maquinita" tiene la nada despreciable cantidad de 5856 procesadores que en conjunto tienen una velocidad de 3'9 teraflops, 2'6 Terabytes de memoria, ocupa 2400 metros cuadrados y tiene un peso de 47 toneladas. Se utiliza para la simulación de explosiones nucleares, y "ha salido" por unos 13000 millones de pesetas... baratito.
Hay muchos más personajes que intervienen en la historia y que han realizado grandes aportaciones, pero no es cuestión de extenderse.


El Objeto

   El objeto es la entidad en torno a la cual gira la POO. Un objeto es un ejemplar concreto de una clase, como por ejemplo el curso de metodología de la programación es un curso concreto dentro de todos los tipos de cursos que pueden existir. Un objeto pertenece a una clase, por lo tanto dispondrá de los atributos (datos) y operaciones (métodos) de la clase a la que pertenece. Un objeto responde al comportamiento definido por las operaciones de la clase a la que pertenece. Es decir, si la clase coche dispone del atributo color y del método arrancar, un coche concreto tendrá un color, y podrá arrancar, exclusivamente.
Estructura de un objeto
Un objeto se puede ver como una "cápsula" de datos y algoritmos que trabajan sobre esos datos. Un objeto no puede acceder directamente a sus datos (atributos). Los atributos son sólo accesibles desde la implementación de los métodos de una clase. Un objeto no puede "manipular" sus propios datos, para ello están los métodos de la clase de dicho objeto: el comportamiento (métodos) de un objeto puede variar el valor (estado) de sus datos (atributos). Por ejemplo, nunca debemos hacer lo siguiente: miCoche.color := 'rojo'. Para esto definiremos métodos que actualicen el valor de los atributos de un objeto, por ejemplo: miCoche.ponerColor('rojo').
En la POO, un objeto no es algo "eterno", se instancian (crean) y se destruyen. Una vez que se haya instanciado un objeto puede recibir mensajes. Los objetos pueden instanciarse de forma estática o de forma dinámica (recordar estos conceptos de capítulos anteriores). Un objeto estático comienza su existencia una vez es declarado (instanciación de objetos estáticos), sin embargo, un objeto dinámico no comienza su existencia al ser declarado, sino al recibir un espacio de memoria (instanciación dinámica de objetos). Por ejemplo:
Códido
Los objetos "se declararán" como atributos de las clases, en las claúsulas var de los métodos o en la lista de parámetros de los métodos. El único objeto que debe ser "declarado" en el programa principal será el de la clase raíz de toda la jerarquía de clases (por cuestiones del lenguaje Pascal orientado a objetos). Los objetos estáticos existen durante la ejecución del programa. Los objetos dinámicos existen mientras no sean destruidos (liberación de la memoria del objeto), mediante la sentencia dispose.
Tras ser instanciado, un objeto consta de los atributos de la clase a la que pertenece, y puede recibir mensajes. Dicho objeto determinará a qué método de su clase corresponde dicho mensaje. Un objeto no podrá recibir mensajes correspondientes a métodos de una clase a la qe no pertenezca. Por ejemplo:
Un objeto sólo puede recibir mensajes de métodos de su clase

La Clase

  Una clase es una descripción de datos y operaciones que describen el comportamiento de cierto tipo de elementos. Por lo tanto, para que pueda haber objetos, antes deben haberse definido las clases a las que pertenecerán dichos objetos. No tiene sentido un objeto sin una clase, ya que el objeto tiene los atributos de la clase a la que pertenece, y recibe mensajes correspondientes a métodos de la clase a la que pertenece.
Una clase se divide en una parte pública y en una parte privada. El nombre de la clase debe ser único. Antes de continuar, recordar cómo era una librería (UNIT) en Pascal. Tiene una parte donde se declaran las cabeceras de los subprogramas (ineterface) que prodrán usarse desde los ficheros que usen la librería, y otra parte donde se implementan dichos subprogramas (implementation).
Parte pública
Describe a qué operaciones responden los objetos de una clase (cómo se comportan los objetos). En esta parte de la clase se declaran las cabeceras de los métodos de la clase que podrán ser "invocados" por los objetos. Es decir, si un método se declara en la parte pública, podrá ser "invocado" por un objeto de dicha clase, de lo contrario no podrá ser "invocado" por un objeto. Es la parte "visible" de la clase, la interfaz de la clase.
Parte privada
Describe los datos de la clase y cómo las operaciones manipulan dichos datos. Esta parte de la clase es donde se oculta (encapsula) la información de la clase: datos e implementación de métodos declarados o no en la parte pública de la clase. Es una parte "no visible", cada objeto de una determinada clase tiene sus atributos (datos) y sus métodos.


Lenguajes Orientados a Objetos

Simula (1967) es aceptado como el primer lenguaje que posee las características principales de un lenguaje orientado a objetos. Fue creado para hacer programas de simulación, en donde los "objetos" son la representación de la información más importante. Smalltalk (1972 a 1980) es posiblemente el ejemplo canónico, y con el que gran parte de la teoría de la programación orientada a objetos se ha desarrollado.
Entre los lenguajes orientados a objetos se destacan los siguientes:
Muchos de estos lenguajes de programación no son puramente orientados a objetos, sino que son híbridos que combinan la POO con otros paradigmas.
Al igual que C++ otros lenguajes, como OOCOBOLOOLISPOOPROLOG y Object REXX, han sido creados añadiendo extensiones orientadas a objetos a un lenguaje de programación clásico.
Un nuevo paso en la abstracción de paradigmas de programación es la Programación Orientada a Aspectos (POA). Aunque es todavía una metodología en estado de maduración, cada vez atrae a más investigadores e incluso proyectos comerciales en todo el mundo.

JAVA Y ALGO MAS...

    Sun Microsystems compañia adquirida por Oracle en el 2009, inicialmente fue llamado “Oak” hasta 1995 cuando se renombro a Java, luego en 1998 con la versión 1.2 se le empezo a llamar Java2 o J2SE hasta finales del 2006 cuando Sun dejo el nombre en Java SE nombre que tiene hasta la actualidad.
Java es un lenguaje de programación orientado a objetos (POO) concebido por unos Ingenieros de
Java es uno de los lenguajes de programación más importantes debido a su portabilidad ya que tiene la posibilidad de poder crear o diseñar software para todo tipo de aplicaciones (Locales, intranet o internet) y poder ser ejecutado en diferentes plataformas de ahí uno de los axiomas de Java “write once, run anywhere” , que se refiere a que se pudiera usar para crear software incorporado en distintos electrodomésticos como lo son un tostador o un control remoto. Esto es gracias a que al compilar el código java genera un código conocido como Bytecode que son instrucciones las cuales puede interpretar una Maquina Virtual (JVM) que es encargada de ejecutarlo, claro para implementarlo en electrodomésticos como mencione estos correrían en versiones más compactas de la Maquina Virtual según el caso.
Estas características son las que llevaron a que el venerable C++ pudiera evolucionar en lo que Microsoft desarrollo como C# el cual toma las mejores características de C++ y las mencionadas de Java logrando un lenguaje de programación más puro y con mayor control pero de eso ya hablare en otra ocasión.
Algude las palabras con las que podemos definir Java son:

  • Simple
  • Seguro
  • Portátil
  • Orientado a Objetos
  • Robusto
  • Multihilo
  • Arquitectura Neutral
  • Interpretado
  • Alto Rendimiento
  • Distribuido
  • Dinámico

EMULADORES

   Un emulador es un software que permite ejecutar programas o videojuegos en una plataforma (sea una arquitectura de hardware o un sistema operativo) diferente de aquella para la cual fueron escritos originalmente. A diferencia de un simulador, que solo trata de reproducir el comportamiento del programa, un emulador trata de modelar de forma precisa el dispositivo de manera que este funcione como si estuviese siendo usado en el aparato original.Un uso popular de los emuladores es el de imitar la experiencia de los videojuegos de máquinas recreativas o videoconsolas en computadoras personales, o el poder ser jugados en otras videoconsolas. La emulación de videojuegos de sistemas antiguos (abandonware) en las modernas computadoras personales y videoconsolas de hoy día resulta generalmente más cómoda y práctico que en los dispositivos originales. Sin embargo, puede ser requerido a los creadores de emuladores una licencia de software para escribir programas originales que dupliquen la funcionabilidad de la ROM y BIOS del hardware original, lo que comúnmente se conoce como high-level emulation o emulación de alto nivel.

 
El Nokia Mobile Browser Simulator

 Forma parte de Nokia Mobile Internet Toolkit. NMIT sería un conjunto de editores para la creación de diversos tipos de contenidos de Internet para móviles y la previsualización de estos contenidos en diferentes SDKs para móviles.
Nokia Mobile Browser Simulator (NMB) es un Navegador de desarrollo para navegar por contenidos de internet para móviles (a través de una conexión WAP) y contenido en archivos locales.Soporta las características del contenido que se produce con el Nokia Mobile Internet Toolkit 4.0 y puede ser utilizado para mostrar contenido xHTML y WML, así como mensajes Push. 

La SDK de Android
Incluye un emulador, este emulador mimetiza todas las características de hardware y software del dispositivo móvil.Una de las ventajas de este emulador sería que proporciona una interfaz en la que podemos ver nuestra aplicación corriendo con otra serie de aplicaciones android. El emulador para Android soporta AVD (Android Virtual Device), y permite especificar la versión del sistema operativo, características del dispositivo, con el emulador podemos también simular interrupciones en la aplicación (equivalente a un sms o una llamada).


Emulador para iPhone 
Para la plataforma iPhone la oferta de emuladores es limitada, de estos recomendamos MobiOne.MobiOne es un IDE y emulador de pago para iPhone, ofrece:
  • Un editor y depurador para JavaScript, CSS3 y HTML5
  • Plantillas para iPhone Web Apps
  • Soporte para geolocalización
  • Switcher para los User Agent
  • Diseñador visual para hacer maquetas Web para móviles
  • Soporte para Phone Gap


  Emulador para Blackberry
Para BlackBerry existe una amplia oferta de emuladores destacando BlackBerry Smartphone Simulator. La funcionalidad incluye la misma interacción del usuario de un dispositivo real (incluida la rueda o bola de desplazamiento y el teclado), las mismas aplicaciones y las mismas características, como los mensajes de correo electrónico, el teléfono y el explorador de Internet. BlackBerry Smartphone Simulator también sirve como plataforma sobre la que ejecutar aplicaciones: establecer conexiones de red, almacenar datos y gestionar mensajes de correo electrónico. Con BlackBerry Smartphone Simulator para realizar pruebas, se pueden BlackBerry MDS Simulator y BlackBerry Email Simulator, y que también estarían disponibles para este fin.

Emulador para Windows Mobile 

Un emulador de dispositivos Windows Mobile con prácticamente las mismas funciones que cualquier Terminal del mercado con este sistema. Además se integra las con Visual Studio aunque no os obligatorio. El módulo Cellular Emulator que nos permite emular un teléfono realizando, por ejemplo, llamadas al teléfono del 

LENGUAJES DE PROGRAMACION PARA EL DESARROLLO DE APPS

   Los lenguajes de programación para los dispositivos móviles dependen en gran parte del dispositivo en el que se quiera trabajar, sin embargo tienen en común que se puede crear sistemas visuales robustos con mayor facilidad independientemente del lenguaje de programación que se esté aplicando, por supuesto dicho lenguaje debe soportar la metodología de programación con la que trabaja el dispositivo en particular.

Java

Para dispositivos móviles la versión de Java en la que se programa es J2ME (JavaMicro Edition).
Lenguaje de C++ 
Una de las herramientas que se utilizan para la programación de móviles basadas en el lenguaje de C++ es Carbide.c++ la cual trabaja en la plataforma de Symbian.
 Lenguaje de C# 
Para desarrollar aplicaciones en dispositivos móviles a través de este lenguaje de programación se puede utilizar la herramienta de Visual C# que trabaja con un IDE para diseñar las ventanas de la aplicación.
 Objective – C   
Este lenguaje de programación está basado en C y a diferencia de C++ es un súper conjunto del lenguaje C, ya que agrega a la sintaxis de C la manera de enviar mensajes enSmall-Talk y de definir e implementar objetos.
  
.NET 
Es un Framework (estructura de soporte para organizar y desarrollar software) de Microsoft que permite un rápido desarrollo de aplicaciones.
Python 
Este lenguaje de programación orientado a objetos es utilizado para dispositivos móviles tales como Symbian, Palm, teléfonos inteligentes de Nokia, etc., también se puede emplear en otras plataformas tales como Windows, Linux/Unix, Mac OS X, OS/2 y también ha sido portado para maquinas virtuales de Java y .Net, distribuido bajo la licencia de código abierto OSI lo hace libre en su uso.
PHP 
(Procesador de Hipertexto) es un lenguaje orientado para script de servidores, diseñado para sitios web dinámicos y el desarrollo de aplicaciones. Se puede integrar directamente en un documento fuente HTML en lugar de un archivo externo, el cual ha hecho que sea un lenguaje de programación popular para los desarrolladores web. PHP corre más de 200 millones de sitios web, incluyendo WordPress, Digg y Facebook.
 HTML5 
(HyperText Markup Language, versión 5) es la quinta revisión importante del lenguaje básico de la World Wide Web, HTML. HTML5 especifica dos variantes de sintaxis para HTML: un «clásico» HTML (text/html), la variante conocida como HTML5 y una variante XHTML conocida como sintaxis XHTML5 que deberá ser servida como XML. Esta es la primera vez que HTML y XHTML se han desarrollado en paralelo.

FRAMEWORK PARA EL DESARROLLO DE APLICACIONES MÓVILES

    La palabra inglesa "framework" (marco de trabajo) define, en términos generales, un conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular que sirve como referencia, para enfrentar y resolver nuevos problemas de índole similar.En el desarrollo de software, un framework o infraestructura digital, es una estructura conceptual y tecnológica de soporte definido, normalmente con artefactos o módulos de software concretos, que puede servir de base para la organización y desarrollo de software. Típicamente, puede incluir soporte de programas, bibliotecas, y un lenguaje interpretado, entre otras herramientas, para así ayudar a desarrollar y unir los diferentes componentes de un proyecto.Representa una arquitectura de software que modela las relaciones generales de las entidades del dominio, y provee una estructura y una especial metodología de trabajo, la cual extiende o utiliza las aplicaciones del dominio.Si estás pensando en desarrollar alguna aplicación para dispositivos móviles, muy de moda actualmente, te presentamos un listado de framework que te pueden ser de gran ayuda para realizar tu trabajo y simplificarte las cosas.



JQuery Mobile es un framework basado en HTML5 optimizado para todas las plataformas de dispositivos móviles, es uno de los más populares y está desarrollado a partir de JQuery y JQuery UI. Su implementación es sencilla y posee amplia documentación, además cuenta con ThemeRoller for Mobile para la creación la temas personalizados aprovechando las ventajas de CSS3.
sencha
Sencha Touch 2 es una framework para el desarrollo de aplicaciones móviles de alto rendimiento basados en HTML5. Este framework incluye soporte para Blackberry 10 e IE 10 y es compatible con iOS, Android, BlackBerry, Windows Phone y otros. Esta desarrollado a partir de la plataforma HTML5 de Sencha, por lo cual se puede emplearSencha Cmd, que es una herramienta de línea comando multiplataforma que permite realizar muchas tareas de manera automática como ser generar un nuevo proyecto.
PhoneJS
PhoneJS es un framework que contiene lo necesario para crear aplicaciones usando HTML5 y Javascript para desarrollar aplicaciones compatibles con los más populares smartphones y tablets. Es compatible para aplicaciones de IOS, Android y WindowsPhone. PhoneJS aprovecha todas las funcionalidades de JQuery y opcionalmente se puede incluir Knockout para el desarrollo de las interfaces de usuario con el modelo MVVM (Model-View-ViewModel).
kendoUI
Kendo UI es un framework para el desarrollo de sitios web con HTML5 y aplicaciones mobiles. Posee widgets basados en JQuery, una simple y consistente interfaz de programación, un framework MVVM, temas y templates. Permite construir aplicaciones que parecen y se usan igual que una aplicación nativa por medio de un simple código de interfaz de usuario usando solo HTML5 y JavaScript.

EMPRESAS O FABRICANTES DE DISPOSITIVOS MOVILES

    Gigantes de la electrónica, añejas y nuevas corporaciones, empresas multinacionales y muchos emprendedores, se han aventurado con mediano o enorme éxito al desarrollo de teléfonos celulares inteligentes en el todo el mundo. En este artículo de investigación presentamos los principales fabricantes de smartphones, su historia, algunas características de sus dispositivos y los móviles mejor evaluados y más buscados de cada una de estas compañías, al inicio del segundo semestre de 2013.

Samsung - Samsung
Samsung. Samsung

 Samsung

Multinacional surcoreana líder en ventas desde el año de 2012. La mayoría de sus teléfonos celulares inteligentes funcionan con el sistema operativo Android, aunque ha probado Windows Phone 8 en dispositivos como el ATIV S. Introdujo el primer chipset de ocho núcleos (Exynos 5 Octa) como procesador de una versión del Samsung Galaxy S4, su principal dispositivo en el inicio del segundo semestre de 2013.  Otros smartphones destacados para ese período: Galaxy SIII, Galaxy SII, Galaxy Note II,Galaxy Note, Galaxy Mega 6.3.



LG - LG
LG. LG

 LG

Aquí tenemos otra corporación de Corea del Sur, la cual inició su tránsito en la telefonía celular en 1996. Escaló posiciones cimeras con el modelo LG Optimus G, número uno de nuestro escalafón anual de los mejores smartphones de 2012, con cuyo dispositivo marcó pauta al dotarlo de 2GB de memoria RAM. Ha trabajado en forma mancomunada con Google para fabricar el Nexus 4. Smartphones destacados segundo semestre 2013Optimus G Pro, Optimus GLucid,Lucid 2, Optimus F7, Nexus 4, serie Optimus Vu.
Sony Mobile - Sony Mobile
Sony Mobile. Sony Mobile

 Sony Mobile

Esta empresa japonesa incursionó por primera vez en la telefonía celular fusionada con la sueca Ericsson, la cual vendió el 50% de sus acciones a Sony, el 27 de octubre de 2011. A partir de ahí ha logrado desarrollar algunos de los mejores móviles del mercado, caracterizados por excelentes cámaras fotográficas, rendimiento y durabilidad. Smartphones destacados segundo semestre 2013: Sony Xperia ZXperia ZL, Xperia TLXperia ion, Xperia S, Xperia ZR, Xperia Advance.



Apple - Apple
Apple. Apple

 Apple

Multinacional estadounidense que después de desarrollar con éxito equipos electrónicos y sus respectivos programas, tomada de la mano de Steve Jobs creó el iPhone, cuyo dispositivo trabaja con laplataforma iOS propio de la empresa. Smartphones destacados segundo semestre 2013: iPhone 5iPhone 4S, iPhone 4, iPhone 3G S, iPhone 3G.
Nokia - Nokia
Nokia. Nokia

 Nokia

Empresa finlandesa que ha hecho historia en el sector de telecomunicaciones, siendo la mayor fabricante y ex líder en ventas. Concretó el primer sistema de telefonía celular móvil (1982) y el primer teléfono transportable (1984). Estableció con otras compañías la plataforma operativa Symbian OS, hasta que logró alianza estratégica con Microsoft (febrero de 2011), para proveer a sus smartphones del sistema operativo Windows Phone. Smartphones destacados segundo semestre 2013: Lumia 925, Lumia 920Lumia 822Lumia 900808 PureViewserie Asha.



Motorola - Motorola
Motorola. Motorola

 Motorola

Compañía estadounidense que tiene, entre otros méritos, el de haber desarrollado el primer teléfono celular del mundo: Motorola DynaTAC, con el cual el ingeniero electrónico Martin Copper realizó la primera llamada precisamente con un celular (3 de abril de 1973). En los últimos años han trabajado en mejorar el rendimiento de la batería de sus dispositivos. El 15 de agosto de 2011, Google anunció la compra de Motorola Mobility. Smartphones destacados segundo semestre 2013: Droid RAZR Maxx HD,  Droid Razr MaxxAtrix HDDROID RAZR MRAZR i XT890, RAZR D1 TV.
HTC - HTC
HTC. HTC

 HTC

Se trata de una corporación taiwanesa (República de China) con ascendente crecimiento. Comenzó a fabricar teléfonos celulares desde 2006, con sistemas operativos Android y Windows Phone. Con su modelo HTTC One presentó nueva tecnología basada en el Ultrapixel para las cámaras fotográficas de sus móviles. Smartphones destacados segundo semestre 2013: OneDroid DNAOne X,Droid Incredible 4G LTEWindows Phone 8X, Butterfly S.

ZTE - ZTE
ZTE. ZTE

 ZTE

Compañía de telecomunicaciones con sede en Shenzhen, China, que figura en el cuarto lugar en cuanto a fabricación de teléfonos celulares en el mundo, desde 2010. En el primer trimestre de 2013, ZTE logró vender 7.883.300 unidades, para incremento del 74% comparado con el mismo trimestre de 2012. Smartphones destacados segundo semestre 2013: Grand SGrand Memo, Grand X2 In, Anthem 4G, Grand Era.
Blackberry - Blackberry
Blackberry. Blackberry

 Blackberry

Inicialmente esta empresa canadiense se llamó Research In Motion Limited (RIM), pero ahora su nombre de operaciones es BlackBerry, el cual identifica la línea de teléfonos celulares que fabrica, caracterizados por su teclado físicoQWERTY y herramientas de seguridad para la utilización de estos dispositivos para el trabajo. Funcionan con sistema operativo propio BlackBerry OS. Estos móviles conservan gran cuota del mercado en América Latina y Europa. Smartphones destacados segundo semestre 2013: Z10Q10, Q5, Curve 9360, Curve 9320, Curve 9220Bold 9930,BlackBerry 9620.
Huawei - Huawei
Huawei. Huawei

 Huawei

Por su gran población, el mercado chino y asiático en general son enormes, razón por la cual encontramos diversas empresas fabricantes de smartphones como Huawei Technologies Co. Ltd., que también se encarga del desarrollo de redes y software. Smartphones destacados segundo semestre 2013:Ascend D2, Ascend P6, Ascend Mate, Honor 2, Ascend G615.