viernes, 30 de marzo de 2012

[MODELADO Y SIMULACIÓN] Sistemas caóticos

Diagrama de Bifurcación:

Un diagrama de bifurcación de un sistema dinámico es una estratificación de su espacio de parámetros inducida por la equivalencia topológica, junto con los retratos de fase representativos de cada estrato. Las soluciones estables suelen representarse mediante líneas continuas, mientras que las soluciones inestables se representan con líneas punteadas.

Código en python
import math
max = 480
a = open("datos.txt", "w")

xa = 2.9
xb = 4.0
maxit = 250

for i in range(max):
    r = xa + (xb - xa) * float(i) / (max - 1)
    x = 0.5
    for j in range(maxit):
        x = r * x * (1 - x)
     a.write(str(x)+"\n")
a.close

Código gnuplot
set term postscript eps color 30
set key outside Right
set size 2, 1.5
set output "simugeom.eps"
set pointsize 1
plot "datos.txt" with points lt 2



Billar dinámico:

(Este ejemplo lo pongo por que me pareció divertido)

Un billar dinámico es un sistema dinámico en el cual una partícula alterna entre movimiento rectilíneo y reflexiones especulares en un contorno o frontera.

Los billares capturan toda la complejidad de los sistemas hamiltonianos, desde integrabilidad a movimiento caótico, sin las dificultades de integrar las ecuaciones de movimiento para determinar su mapa de Poincaré.

Código en python

import math
import random
from PIL import Image, ImageDraw
imgx = 480
imgy = 320
image = Image.new("RGB", (imgx, imgy))
draw = ImageDraw.Draw(image)

# Only 1 ball is used!
maxSteps = 20000 # of steps of ball motion (in constant speed)

n = random.randint(1, 7) # of circular obstacles
crMax = int(min(imgx - 1, imgy - 1) / 4) # max circle radius
crMin = 10 # min circle radius

# create circular obstacle(s)
cxList = []
cyList = []
crList = []
for i in range(n):
    while(True): # circle(s) must not overlap
        cr = random.randint(crMin, crMax) # circle radius
        cx = random.randint(cr, imgx - 1 - cr) # circle center x
        cy = random.randint(cr, imgy - 1 - cr) # circle center y
        flag = True
        if i > 0:
            for j in range(i):
                if math.hypot(cx - cxList[j], cy - cyList[j]) < cr + crList[j]:
                    flag = False
                    break
        if flag == True:
            break
    draw.ellipse((cx - cr, cy - cr, cx + cr, cy + cr))
    cxList.append(cx)
    cyList.append(cy)
    crList.append(cr)

# initial location of the ball must be outside of the circle(s)
while(True):
    x = float(random.randint(0, imgx - 1))
    y = float(random.randint(0, imgy - 1))
    flag = False
    for i in range(n):
        if math.hypot(x - cxList[i], y - cyList[i]) <= crList[i]:
            flag = True
            break
    if flag == False:
        break

# initial direction of the ball
a = 2.0 * math.pi * random.random()
s = math.sin(a)
c = math.cos(a)

counter = 0
j=0

for i in range(maxSteps):
    counter = counter +1
    if counter == 15:
        j=j+1
        image.save(str(j)+".png", "PNG")
        counter = 0
    image.putpixel((int(x), int(y)), (255, 255, 255))
    xnew = x + c
    ynew = y + s
    
    # reflection from the walls
    if xnew < 0 or xnew > imgx - 1:
        c = -c
        xnew = x
    if ynew < 0 or ynew > imgy - 1:
        s = -s
        ynew = y
    
    # reflection from the circle(s)
    for i in range(n):
        if math.hypot(xnew - cxList[i], ynew - cyList[i]) <= crList[i]:
            # angle of the circle point
            ca = math.atan2(ynew - cyList[i], xnew - cxList[i])
            # reversed collision angle of the ball
            rca = math.atan2(-s, -c)
            # reflection angle of the ball
            rab = rca + (ca - rca) * 2
            s = math.sin(rab)
            c = math.cos(rab)
            xnew = x
            ynew = y
    
    x = xnew
    y = ynew
Cuando encontre el código originalmente generaba una imagen al finalizar el programa, pero lo modifique para que generara una imagen cada 15 iteraciones y de esa manera observar como se desarrolla.

Para generar imagenes se utiliza la libreria PIL y para generar un video de una secuencia de imagenes se utiliza el comando "ffmpeg -f image2 -i imagen%d.png video.mpeg" donde %d es la numeración de imagenes, ejemplo: imagen1.png, imagen2.png, etc.

Este es el resultado de 1333 png's generados:

jueves, 29 de marzo de 2012

[MODELADO Y SIMULACIÓN] Procesos estocásticos discretos y contínuos

Para mi ejemplo decidí hablar sobre la probabilidad de pase un camión de cierta ruta entre las 6:00 y 6:30.

Estableciendo el experimento, hay una persona esperando el camion de la ruta 213 cuyo porcentaje de probabilidad de que pase es de 30%. ¿Cuál es la probabilidad de que el primer camión que pase sea de la ruta 213?

Para saber la distribución a la que pertenece este problema, analizaré las distribuciones disponibles.

Distribuciones Discretas: 


Son aquellas cuya función de probabilidad toma valores positivos en un conjunto finito o infinito para x:
Lo anterior representa la suma de todas las probabilidades desde -∞ hasta el valor de x.

Las distintas distribuciones mas importantes de la anterior son:

Distribución binomial
Distribución binomial negativa
Distribución Poisson
Distribución geométrica
Distribución hipergeométrica
Distribución de Bernoulli

entre otras derivadas de las anteriores.

Distribuciones Continuas:

Son las que su variable toma cualquier valor dentro de un intervalo existente. Está dada por la integral de la función densidad:
Las más conocidas son:

Distribución ji cuadrado
Distribución exponencial
Distribución t de Student
Distribución normal

Experimento:

Se puede decir del planteamiento que la distribución que sigue es discreta.

La probabilidad de éxito es de 0.3, y la de fracaso de 0.7 y puesto que solo tenemos de 6:00 a 6:30 para  tomar el camión, necesitamos que el primero sea el 213.

La formula para esto es:
donde:


P (X=x) = función de densidad, de la variable aleatoria con distribución geométrica.

X = Numero de experimentos hasta que aparece el 1er éxito.

p = probabilidad de éxito

q = probabilidad de fracaso (1 - p)

Para el porblema tenemos que;

X = 1

p = 0.3

q = 0.7

P(X=1) = [(0.3^(1-1)] (0.7) = 1(.0.7) = 0.7

Utilizando el código de clase surge la siguiente gráfica:



El problema puede seguir una distribución continua poniendo pequeños intervalos, en este caso utilizando la exponencial.


Modificando el código de clase a este:

function exp(q, filename)
  p = 1 - q;
  output = fopen(filename, "w");
  prob = 1;
  k = 1;
  lam = 1;
  while (prob > 0.0)
    prob = lam * e ** (-lam * k);
    #prob = q**(k-1) * p;
    k++;
    fprintf(output, "%d %f\n", k, prob);
    lam = lam ;
  endwhile
  fclose(output);
endfunction

[DISTRIBUIDOS Y PARALELOS] Contribution

In this week I found a distribuited programming language called Orca. Link to the wiki.

Also I read about replication and consistency last 2 days.

jueves, 1 de marzo de 2012

[DISPOSITIVOS MÓVILES] J2ME

La plataforma Java Micro Edition (Java ME), o anteriormente Java 2 Micro Edition (J2ME), es una especificación de un subconjunto de la plataforma Java orientada a proveer una colección certificada de APIs de desarrollo de software para dispositivos con recursos restringidos.
Un poco de historia detras de J2ME

La plataforma J2ME es una familia de especificaciones que definen varias versiones minimizadas de la plataforma Java 2; estas versiones minimizadas pueden ser usadas para programar en dispositivos electrónicos; desde teléfonos celulares, en PDAs, hasta en tarjetas inteligentes, etc. Estos dispositivos presentan en común que no disponen de abundante memoria ni mucha potencia en el procesamiento, ni tampoco necesitan de todo el soporte que brinda el J2SE, (la plataforma estándar de Java usada en sistemas de escritorio y servidor).

Al principio de los 90, Sun Microsystems creó un nuevo lenguaje de programación llamado Oak como parte de un proyecto de investigación para construir productos electrónicos que dependan principalmente del software.

A pesar de que Oak era un lenguaje fuerte, no se desarrolló como la empresa esperaba, ningún dispositivo  basado en Oak salió al mercado.

Con la llegada del internet al público y el uso más constante de nuevos navegadores, Sun Microsystems encontró una oportunidad y renombró su lenguaje Oak a Java, desarrolló un navegador HotJava multiplataforma. Despues se introdujeron los Java applets.

En un par de años, las capacidades multiplataforma del lenguaje de programación Java y su potencia como plataforma de desarrollo para aplicaciones que podían ser escritas una vez y ejecutadas en diversos sistemas Windows y Unix, había despertado el interés de usuarios finales, porque vieron en ella una manera de reducir los costos del desarrollo de software.

Irónicamente, mientras Sun Microsystems estaba desarrollando Java para Internet y para la programación comercial, la demanda empezó a crecer en los dispositivos pequeños e incluso en tarjetas inteligentes, retornando Java a sus raíces.

Sun Microsystems respondió a esta demanda creando varias plataformas Java con funcionalidades reducidas, cada una hecha a la medida de un segmento vertical y específico del mercado.

Estas plataformas reducidas están todas basadas en el JDK 1.1, el predecesor de la plataforma Java 2, y cada una tiene una estrategia diferente al problema de reducir la plataforma para acomodarla a los recursos disponibles. Por lo tanto, cada una de estas plataformas de funcionalidad reducida representan una solución ad hoc al problema. Por ello es que aparece la plataforma J2ME, para reemplazar todas esas plataformas reducidas basadas en el JDK 1.1 y crear una sola solución basada en Java 2.

J2ME

J2ME es la versión de Java orientada a los dispositivos móviles. Debido a que los dispositivos móviles tienen una potencia de cálculo baja e interfaces de usuario pobres, es necesaria una versión específica de Java destinada a estos dispositivos, ya que el resto de versiones de Java, J2SE o J2EE, no encajan dentro de este esquema. J2ME es por tanto, una versión “reducida” de J2SE.

La mayoría de las aplicaciones J2ME para móviles son generalmente minijuegos, poco menos de la mitad se tratan de aplicaciones de utilidad laboral. sin embargo, siendo que se trata de aplicaciones para dispositivos de bajo rendimiento, cualquier aplicación J2ME reduce drásticamente la duración de batería, así como se puede notar mucha lentitud.



Generalmente los dispositivos que utilizan esta tecnología son llamados moviles java, y comprenden las generaciones 1G, 2G y parte de la 3G de móviles, aunque de estos últimos la mayoría pretende implementar sus propias tecnologías, o versiones de su maquina virtual de Java. Un ejemplo son los dispositivos Android, que aunque se programan en Java, estos tienen su propio interprete (Dalvik).

Existen emuldores de la plataforma J2ME para distintos sitemas operativos como Linux, Windows y Android, que permiten hacer tests de las aplicaciones, o bien para instalarlas como apps nativas que corren bajo el emulador.

MicroEmulator es un emulador para las tipicas J2ME implementado en Java SE, independiente de la plataforma, ya sea Linux, Windows, Mac OS X, inclusive Android.

Configuraciones

J2ME presenta dos configuraciones: CLDC y CDC. La primera se dedica a dispositivos con estrictas limitaciones de memoria, capacidad de cálculo, consumo y conectividad de red. Por otro lado, CDC se encarga de dispositivos con más potencia.


Generalmente las configuraciones CLDC son destinadas para dispositivos con las siguientes características.

  • De 160 a 512 Kbytes de memoria disponible para el entorno de Java.
  • Un procesador de 16 o 32 bits.
  • Consumo de energía bajo (generalmente utilizan baterías).
  • Permiten algún tipo de conectividad a una red (lo normal, es una conexión intermitente, con un ancho de banda bajo -sobre 9600 bps- y a menudo inalámbrica.
La configuración CDC se ha desarrollado para dispositivos con 2 MB o más de memoria disponible para la plataforma, incluyendo RAM y memoria flash o ROM. Estos dispositivos requieren todas las características y funcionalidades de la JVM e incluyen teléfonos móviles de última generación, asistentes personales (PDAs), terminales de punto de venta (TPVs), etc y permiten tanto redes con conexión intermitente o de alta velocidad, sin cablear (wireless) o cableadas. 

La CDC incorpora el perfil Foundation (Foundation Profile), aunque están disponibles los perfiles Personal y Personal Basis para aplicación que requieren una interfaz gráfica de usuario compleja o Web. 

La plataforma CDC para J2ME incorpora:

  • Una máquina virtual Java (Java Virtual Machine, JVM) completa compatible con J2SE 1.3.1.
  • Las bibliotecas de clase y APIs mínimas para que el sistema funcione.
  • Soporte completo para carga de clases, gestión de subprocesos (threads) y mecanismos de seguridad.
La mayoría de las aplicaciones J2ME no interactúan con el móvil, se ejecutan como una cosa aparte de lo que el sistema operativo ofrece, aveces tomando algunas cosas prestadas como el tipo de fuente o el estilo de la interfaz gráfica, pero nunca tomando funciones importantes del sistema operativo como la capacidad de cambiar una configuración predeterminada del móvil, ya que estas aplicaciones no cuentan con los permisos necesarios. De esta manera, si el dispositivo no cuenta con la capacidad de reproducir un mp3 por falta de los codecs, una aplicacion destinada a reproducir estos archivos simplemente no funcionaría.

Por el contrario, estas aplicaciones brindan de funciones no disponibles en móviles antiguos, como la capacidad de identificar y decodificar códigos QR, o edición de imágenes vía móvil, siempre y cuando estas nuevas funciones no involucren configuraciones predeterminadas.

Con la llegada de las nuevas tecnologías móviles, estas aplicaciones están quedando atrás, ya que la demanda está más orientada hacia los nuevos dispositivos, sinembargo, Oracle sigue dando soporte a estas plataformas, ya que no solo se encuentran en móviles, podemos encontrarlas en otros dispositivos que como se mencionaba, esta plataforma se centra en cualquier dispositivo con recursos restringidos.

[DISPOSITIVOS MÓVILES] Antecedentes

Motorola

Fundada en 1928 en Chicago, por Paul V. Galvin y su hermano Joseph cuando adquieren el negocio del eliminador de baterías, por quiebra de la Stewart Battery Co., y crean la Galvin Manufacturing Corporation con solo cinco empleados y un patrimonio de 565 dólares en efectivo, 750 dólares en herramientas y un diseño para el primer producto de la compañía: un eliminador de batería.

Al final de los años 1960 Motorola comienza a trabajar en el desarrollo de la telefonía móvil. Quince años y 150 millones de dólares después, lanza el Motorola DynaTAC, primer teléfono móvil del mundo. Desde entonces la compañía es, a la par con Nokia uno de los líderes del mercado, pese a los fuertes altibajos sufridos. Además comercializa equipos para la infraestructura de las redes de comunicaciones.


En 1996 Motorola volvió a deslumbrar al mundo lanzando el primer terminal estilo concha, su diseño fue inspirado en el intercomunicador que utilizaban los protagonistas de Star Trek: el StarTAC.


Una de sus mayores innovaciones fue la posibilidad de transmitir audio en streaming, y los usuarios tenían preferencia por su tamaño y peso ligero. Con los sucesivos modelos llegaron los SMS y el sistema vibrador. Su “última aparición pública” fue en el 2000, aunque algún directivo de la compañía, con obvias tendencias “retro“, lo revivió en el 2004, claro que añadiéndole funcionalidades acordes a la época, como pantalla LCD y libro de contactos entre otras.


En abril de 2006, Motorola vendió su línea de producción de productos para el automóvil a la empresa Continental, procediendo con la política de potenciación del sector de la telefonía móvil.

El 15 de agosto de 2011, Google compra Motorola Mobility por 12.500 millones de dólares.


Ericsson

Ericsson (Telefonaktiebolaget L.M. Ericsson) es una compañía multinacional de origen sueco dedicada a ofrecer equipos y soluciones de telecomunicaciones, principalmente en los campos de la telefonía, la telefonía móvil las comunicaciones multimedia e internet.

En los años 1990 Ericsson se convirtió en el fabricante líder de teléfonos celulares. Si bien todavía mantiene un liderazgo en los equipos de conmutación telefónica, principalmente en la tecnología GSM; la fabricación de terminales (teléfonos) móviles quedó en manos de una nueva compañía: Sony Ericsson, creada en asociación con Sony.

Nokia

Nokia es una empresa transnacional y es el primer fabricante de teléfonos móviles del mundo, además de una de las principales empresas del sector de las telecomunicaciones.


El involucramiento de la empresa en el ramo de las telecomunicaciones se produjo en 1960, con la creación del departamento de electrónica de la compañía de cables. En 1962, el consorcio se abocó a las radio-transmisiones. La incursión en el sector fue muy afortunada para la empresa, porque en ese tiempo la tecnología de los semiconductores estaba saliendo de los laboratorios para aplicarse a la industria en el mundo real.

Hacia 1967 fue introducido el sistema de modulación de códigos por pulsos, el cual incrementó sustancialmente la capacidad de los cables telefónicos. Dos años después, el Grupo Nokia se convirtió en la primera empresa en introducir el sistema de pulsos y se colocó a la vanguardia de sus competidores.


Una de las innovaciones tecnológicas más importantes ha sido la digitalización de los servicios de telecomunicaciones. Hacia los setenta, la mayor parte de la telefonía era electromecánica, con conmutadores analógicos y no existía un consenso en torno al empleo de la tecnología digital. Fue aquí donde el Grupo Nokia corrió el riesgo de incursionar en el terreno de la digitalización y creó el sistema DX 200, que se convirtió en la plataforma de los conmutadores y que a la fecha sigue siendo la base de la telefonía fija y móvil del consorcio finlandés.


En el mercado finlandés las redes de telefonía local fueron establecidas hacia 1980 y ninguna de ellas adquiría su equipo de proveedores nacionales. Al incorporarse a la dinámica de las telecomunicaciones, Nokia hubo de responder a los requerimientos de sus clientes, lo cual llevó a la empresa a innovar en sus productos y servicios.

En 1984 fue introducido al mercado el Mobira Talkman, que fue el primer teléfono transportable. Tuvo una notable demanda en los mercados nórdicos y ello llevó a Nokia a tener nuevos clientes, incluyendo los estadounidenses y los británicos. La necesidad de contar con teléfonos de más fácil manejo y transportación, derivó en innovaciones tecnológicas que fueron muy notorias en los tamaños y el peso de los mismos. El Mobria Talkman tenia un peso menor a los 5 kilogramos.


En el 87' se produce el modelo Mobria Cityman de tan solo 800 gramos.


En el 97' se introduce el famoso Nokia 3310 de 146 gramos.


En 1998, Bill Gates se puso en contacto con el presidente de Nokia para plantearle la conveniencia de crear un sistema operativo conjunto entre Nokia y Microsoft, destinado a dominar el mundo de la telefonía como lo había hecho Windows con el de los PC. El proyecto nunca se inició y Nokia lideró un grupo de empresas formado además por Motorola, Panasonic, Sony Ericsson, Psion y Siemens del cual nació Symbian OS. No fue hasta el 2011 que Nokia realiza una alianza con Microsoft y deja de lado el sistema operativo Symbian que sería reemplazado por el Windows Phone 7. Este sería uno de los hechos más importantes de la empresa, ya que Symbian estaba implementado desde que empezó el mercado con celulares.



Symbian



Symbian es un sistema operativo que fue producto de la alianza de varias empresas de telefonía móvil, entre las que se encuentran Nokia, Sony Ericsson, Psion, Samsung, Siemens, Arima, Benq, Fujitsu, Lenovo, LG, Motorola, Mitsubishi Electric, Panasonic, Sharp, etc. Sus orígenes provienen de su antepasado EPOC32, utilizado en PDA's y Handhelds de PSION.




Symbian posee ciertas características que influyen de manera determinante en el desarrollo de aplicaciones. Primero, Symbian es un SO basado en ROM, no siempre ha habido posibilidades de grabar datos en la memoria del teléfono, aunque ahora generalmente se disponga de memorias flash. Segundo, ha sido diseñado para ahorrar batería.

Symbian esta basado en un micro kernel. Una mínima porción del sistema tiene privilegios de kernel, el resto se ejecuta con privilegios de usuario, en modo de servidores. Una de las tareas del kernel es manejar las interrupciones y prioridades. En Symbian, cada aplicación corre en sus propios procesos y tiene acceso solo a su propio espacio de memoria. Este diseño hace que las aplicaciones para Symbian sean orientadas a “single threads” y no múltiples.

Sin embargo no todo iba a ser inconvenientes. El sistema posee componentes que permiten el diseño de aplicaciones multiplataforma, esto es diferentes tamaños de pantalla, color, resolución, teclados, etc. La mayoría de estos componentes han sido diseñados en C++.

Todas características permiten que los aparatos con Symbian puedan estar en funcionamiento constante sin necesidad de ser peseteado, preservando la información del usuario y funcionando correctamente (probado en laboratorio). Aunque esto ultimo se esta comprometiendo debido a la complejidad de los últimos aparatos con Symbian y a la multitud de programas externos al SO.


En 2003 Motorola vendió el 13% de su participación a Nokia, lo cual hizo que se quedara con el 32,2% de la compañía. Más tarde, sin embargo, después de no tener el éxito esperado con sus terminales "Linux-Like", volvió al mundo del Symbian comprándole el 50% a Sony Ericsson. El 24 de junio de 2008, Nokia decidió comprar Symbian, adquiriendo el 52% restante de las acciones de la compañía, tras un acuerdo con el resto de socios. El objetivo era establecer la Fundación Symbian y convertir este sistema operativo en una plataforma abierta.

Las primeras versiones tuvieron el defecto fatal de que se colgaban después de mandar algunos cientos de SMS’s.

Symbian argumenta que las aplicaciones y contenido así como la figura del desarrollador están mas protegidas que nunca, algunos otro pelean que el requerimiento de que cada app sea firmada y por lo tanto aprobada viola los derechos de el usuario final,el usuario del teléfono, y limita la cantidad de software gratuito disponible para el público. El nuevo modelo binario ARM EABi significa que los desarrolladores necesitan retrabajar sus apps y la seguridad los hace recodificarlos.



UIQ


UIQ es una plataforma para terminales móviles desarrollada por UIQ Technology basada en Symbian. Se caracteriza por agregar soporte para pantallas táctiles.

Se usa principalmente en smartphones de Sony Ericsson, Motorola y en menor medida en teléfonos de las marcas BenQ y Arima.



En 1998, Ericsson Mobile Communications, crea un departamento de desarrollo llamado, Mobile Applications Lab, este nombre cambiaría al independizarse como compañía en 1999 para Symbian AB, su trabajo estaba enfocado en el desarrollo de una interfaz táctil para terminales. En febrero de 2000 se presentó Quartz 6.0.

En febrero de 2002 la compañía pasó a llamarse UIQ Technology AB, y comenzó a denominarse al producto como UIQ.

En febrero de 2004 se anuncia el UIQ v3.0 en el 3GSM

En febrero de 2007, Sony Ericsson compró la totalidad de la UIQ, , y apostó fuertemente por la misma, siendo su principal usuario. En octubre de 2007, Motorola compró el 50% de la misma y en el que ya se basaban sus dispositivos RIZR Z8.

En marzo de 2008 se lanza la versión 3.3.

Con la creación de la Fundación Symbian en el otoño de 2008, comenzó a verse el final de UIQ, ya que la Plataforma S60 fue la elección para la interfaz de usuario de la Fundación Symbian. UIQ contribuirá con sus desarrollos a la fundación. Patrick Olson de Sony Ericsson anunció oficialmente el 21 de octubre de 2008 en el Smartphone Show 2008 de Londres que “UIQ no lo logró”, no atrajo a los operadores, fabricantes ni consumidores para que no cayese.

Debido a la compra por parte de Nokia del 100% de Symbian antes de finalizar el año 2008, Motorola dejará de desarrollar teléfonos con Symbian UIQ para apoyar a las plataformas Android y Windows Mobile.

En enero de 2009, la compañía UIQ anunció su bancarrota.


BlackBerry


Research in Motion Limited (RIM), una compañia Canadiense con base en Waterloo, Ontario, Canada y fundada por Mike Lizaridis y Jim Balsillie, es quien le da vida a lo que hoy en dia conocemos como BlackBerry.

A pesar de que los equipos BlackBerry están en el mercado desde 1996 no fue hasta principios de los años 2000 que empezaron a tener popularidad. En aquel momento a Research in Motion le tomó 5 años llegar al millón de usuarios, luego 10 meses llegar al segundo millón. El tercer millón llego 6 meses luego para Mayo de 2005. Un año más tarde habían llegado a los 5 millones. Para el 2007 ya totalizaban 14 millones de usuarios. El pasado 30 de mayo de 2009, RIM anunció un total de 28.5 millones de usuarios.

La primera BlackBerry, que en aquel entonces no fue llamada así, fue un prototipo hecho para los empleados de RIM. Rápidamente vieron el potencial y la aceptación de los usuarios y la empresa dio un giro completo. A esta unidad se le conoció como el modelo 900 Inter@ctive Pager. Este modelo era Flip, tenia una tapa que se levantaba para mostar el teclado y la pantalla. Esta unidad fue lanzada en Septiembre de 1996 pero su tamaño y alto costo no dió los frutos esperados.



En Abril 11, 2000, lanzan el primer modelo con forma de beeper.


La próxima línea de equipos BlackBerry, la Serie 957 comenzó con un diseño bastante parecido al que conocemos hoy en día. Un look mas PDA con una pantalla mucho más grande. Estas unidades tenian baterias de litio recargables, memoria de 4MB / 8MB Flash y 512KB / 1MB de SRAM. Este modelo fue el primero en incorporar la capacidad de tener hasta 10 cuentas de email configuradas en un mismo equipo.

Hasta este momento, estas unidades trabajaban en una red conocida como Mobitex.

Una nueva variación, más delgada y estilizada fue lanzada en Noviembre 2005, en este punto ya existían otros modelos de Smartphone en el mercado y todo se había vuelto más competitivo.


Para el 2007, la eliminación del Trackwheel y la llegada de el nuevo Trackball causó sensación en algunos y desilusión en otros que ya estaban acostumbrados a trabajar con el Trackwheel a la derecha de sus equipos, esto era una rueda que podías mover hacia arriba o hacia abajo y la presionabas, el botón de escape estaba justo debajo de ella.

Llegó el Curve, el cual introdujo la cámara por primera vez y fue cuando se vio a RIM entrando de lleno al mercado del consumidor común y corriente. Es en este momento que se incluyen otras opciones como el WiFi, la capacidad de utilizar el equipo para sincronizar y escuchar música, memoria externa entre otras cosas.


Lo más reciente dentro de la evolución de estos equipos es la inclusión en todos los modelos futuros de lo que será el reemplazo de el famoso Trackball o Perla, el Trackpad.


En Agosto 12 de 2010 nos llega el nuevo miembro de la familia BlackBerry, el BlackBerry Torch, una nueva serie con Teclado deslizante y Pantalla Touchscreen, pero no vino solo. Este nuevo dispositivo viene acompañado del nuevo sistema operativo BlackBerry 6 el cual incluye varios elementos de entretenimiento, convirtiendo así a esta unidad como una apta para el trabajo así como para la diversión.