PDA. Un antiguo dispositivo móvil de tipo
Dispositivo móvil (mobile device), también conocido como computadora de bolsillo o computadora de mano (palmtop o handheld), es un tipo de computadora de tamaño pequeño, con capacidades de procesamiento, con conexión a Internet, con memoria, diseñado específicamente para una función, pero que pueden llevar a cabo otras funciones más generales.
Los dispositivos móviles más populares desde comienzos del siglo XXI son sin duda alguna los teléfonos móviles, utilizados diariamente por la gran mayoría de la población. A los primeros smartphones o teléfonos inteligentes se unieron, a fines de la década de 2000, los tablets o tabletas, más grandes, pero esencialmente iguales a aquellos. La entrada y salida de datos se realiza desde entonces generalmente a través de una interfaz de pantalla táctil. Los teléfonos/tabletas y los asistentes digitales personales pueden proporcionar gran parte de la funcionalidad de una computadora portátil/de escritorio, pero de manera más conveniente, además de funciones exclusivas. Los asistentes digitales empresariales pueden proporcionar funciones empresariales adicionales, como la captura de datos integrada a través de códigos de barras, RFID y lectores de tarjetas inteligentes. Para 2010, los dispositivos móviles a menudo contenían sensores como acelerómetros, magnetómetros y giroscopios, que permiten la detección de orientación y movimiento. Los dispositivos móviles pueden proporcionar autenticación de usuario biométrica, como reconocimiento facial o reconocimiento de huellas dactilares.
Tipos [ editar ]
La movilidad de dispositivos se puede ver en el contexto de varias cualidades:[1]
Dimensiones físicas y peso
Si el dispositivo es móvil o algún tipo de host al que está conectado es móvil
¿A qué tipo de dispositivos host se puede vincular?
Cómo se comunican los dispositivos con un host
Cuando se produce la movilidad
Estrictamente hablando, muchos de los llamados dispositivos móviles no son móviles. Es el anfitrión el que es móvil, es decir, un anfitrión humano móvil lleva un dispositivo de teléfono inteligente no móvil. Un ejemplo de un verdadero dispositivo informático móvil , donde el propio dispositivo es móvil, es un robot. Otro ejemplo es un vehículo autónomo. Existen tres formas básicas en las que los dispositivos móviles pueden vincularse físicamente a hosts móviles: acompañados, montados en la superficie o integrados en la estructura de un host, por ejemplo, un controlador integrado integrado en un dispositivo host. Acompañado se refiere a un objeto que está atado sin apretar y que acompaña a un anfitrión móvil, por ejemplo, un teléfono inteligente se puede llevar en un bolso o bolsillo, pero se puede extraviar fácilmente.[1] Por lo tanto, los hosts móviles con dispositivos integrados, como un vehículo autónomo, pueden parecer más grandes que de bolsillo.
Como se indicó anteriormente, el tamaño más común de dispositivo de computación móvil es el tamaño de bolsillo que puede llevarse en la mano, pero también existen otros tamaños para dispositivos móviles. Mark Weiser, conocido como el padre de la computación ubicua, computación en todas partes, se refirió a los tamaños de dispositivos que son del tamaño de una pestaña, una almohadilla y un tablero,[2] donde las pestañas se definen como dispositivos acompañados o portátiles del tamaño de un centímetro, por ejemplo, se definen teléfonos inteligentes, phablets y almohadillas como dispositivos portátiles del tamaño de un decímetro. Si uno cambia la forma de los dispositivos móviles en términos de que no sean planos, también puede tener dispositivos de piel y dispositivos diminutos del tamaño de polvo.[1] El polvo se refiere a dispositivos miniaturizados sin interfaces HCI directas, por ejemplo, sistemas microelectromecánicos (MEMS), que van desde nanómetros hasta micrómetros y milímetros. Véase también Polvo inteligente. Piel: tejidos basados en polímeros conductores y emisores de luz y dispositivos informáticos orgánicos. Estos se pueden formar en superficies de visualización no planas más flexibles y productos como ropa y cortinas, consulte pantalla OLED.
Aunque la movilidad a menudo se considera como sinónimo de tener conectividad inalámbrica, estos términos son diferentes. No todo el acceso a la red por parte de usuarios, aplicaciones y dispositivos móviles debe realizarse a través de redes inalámbricas y viceversa. Los dispositivos de acceso inalámbrico pueden ser estáticos y los usuarios móviles pueden moverse entre puntos de acceso inalámbricos y por cable, como los cibercafés.[1] Algunos dispositivos móviles se pueden usar como dispositivos móviles de Internet para acceder a Internet mientras se está en movimiento, pero no es necesario que lo hagan y muchas funciones o aplicaciones del teléfono siguen operativas incluso cuando están desconectados de Internet .. Lo que hace que el dispositivo móvil sea único en comparación con otras tecnologías es la flexibilidad inherente en el hardware y también en el software. Las aplicaciones flexibles incluyen chat de video, navegación web, sistemas de pago, NFC, grabación de audio, etc.[3] A medida que los dispositivos móviles se vuelvan omnipresentes allí, habrá una proliferación de servicios que incluirán el uso de la nube. Aunque una forma común de dispositivo móvil, un teléfono inteligente, tiene una pantalla, otra forma quizás aún más común de dispositivo informático inteligente, la tarjeta inteligente, por ejemplo, utilizada como tarjeta bancaria o tarjeta de viaje, no tiene pantalla. Este dispositivo móvil a menudo tiene una CPU y memoria, pero necesita conectarse o insertarse en un lector para mostrar su estado o datos internos.
Algunos tipos de dispositivos móviles son:
Teléfono inteligente [ editar ]
Teléfonos inteligentes.
Un teléfono inteligente es una computadora de mano que combina las funciones de un teléfono móvil con las de una computadora (acceder a la web, enviar correos electrónicos y escuchar música)[4]. BlackBerry fue uno de los primeros dispositivos de este tipo, lanzado por el grupo canadiense Research In Motion en 1999 [4]. La llegada de los smartphones ha cambiado los hábitos de uso. Además de las llamadas y los mensajes SMS, los teléfonos inteligentes se utilizan comúnmente para acceder a Internet, enviar correos electrónicos, tomar fotos, consultar el pronóstico del tiempo, jugar o acceder a las redes sociales[5]. Según eMarketer, en 2012, aproximadamente el 55% de la población mundial posee un teléfono móvil, incluidos varios teléfonos inteligentes. El 80% de la población de Europa Occidental y el 65% de la población de América Latina tienen uno. En algunos países el número de suscripciones de telefonía móvil es mayor que el número de habitantes. [5]
En la actualidad, el diseño de los teléfonos inteligentes es muy similar entre ellos: rectangular, con una o dos cámaras (tanto frontal como posterior) y algunos botones (generalmente 3, +volumen, -volumen y un botón para el bloqueo/encendido/apagado del dispositivo) ya que es totalmente táctil.
Tableta táctil [ editar ]
Compaq Tablet PC de de HP , dado a conocer en 2001.
Una tableta con pantalla táctil es una computadora portátil muy liviana sin teclado. El texto se ingresa escrito a mano con un bolígrafo, tocando la pantalla u oralmente. La potencia de cálculo de una tableta es menor que la de una computadora de escritorio. En las tabletas convertibles, la pantalla se puede voltear y, por lo tanto, el dispositivo se puede usar como una computadora portátil. El iPad de Apple es una tableta que ejecuta el mismo software que el iPhone; tiene una pantalla de 10 pulgadas y pesa entre 460 y 650 gramos [4], según el modelo iPad en 2010 [5]. Estos dispositivos están a medio camino entre el teléfono y la computadora personal. En 2013, la mayoría de estos dispositivos están equipados con un sistema operativo de teléfono inteligente y se utilizan para actividades similares a las de una computadora personal [5]. Tras el lanzamiento del iPad, Steve Jobs, su creador, anunció el fin de la era de los ordenadores personales[5].
Seguridad y confidencialidad [ editar ]
Algunos estudios muestran que alrededor de 9% de las aplicaciones "de buena reputación" instaladas en los dispositivos móviles interactúan con sitios web "de muy mala reputación" sin que el portador del dispositivo se percate de ello. Entre los sitios de mala reputación se incluyen portadores de virus (9%), sitios conocidos por manejar información robada (15%), sitios de baja calidad según las evaluaciones de los usuarios (73%) y sitios de contenido no apto para menores (74%).[6] Esos estudios recomiendan instalar únicamente las aplicaciones indispensables en los dispositivos.
Sistemas operativos móviles [ editar ]
Artículo principal: Sistema operativo móvil
Un Sistema operativo móvil o SO móvil es un conjunto de programas de bajo nivel que permite la abstracción de las peculiaridades específico del teléfono móvil y, provee servicios a las aplicaciones móviles, que se ejecutan sobre él. Al igual que los PC que utilizan Windows, Linux o Mac OS, los dispositivos móviles tienen sus sistemas operativos como Android, iOS, entre otros.
Por orden alfabético:
1. Introducción a los dispositivos móviles
Durante los últimos años hemos visto como han ido evolucionando los teléfonos móviles, pasando de ser simplemente teléfonos a ser pequeños ordenadores en los que tenemos disponibles una serie de aplicaciones preinstaladas (mensajería, registro de llamadas, agenda, calculadora, juegos, etc).
Un paso importante en esta evolución ha sido la posibilidad de que estos dispositivos se conecten a Internet. Esto permitirá que accedan a información disponible en la red, a aplicaciones corporativas utilizando algún front-end, o descargar nuevas aplicaciones para nuestro móvil.
De esta forma vemos que se podrán incluir nuevas aplicaciones en cada dispositivo, adecuándose a las necesidades de cada usuario. Estas aplicaciones podrán ser tanto front-ends que nos permitan acceder a aplicaciones de empresa residentes en algún servidor de Internet, como aplicaciones locales para utilizar en nuestro móvil.
Nos interesará contar con un amplio repertorio de aplicaciones disponibles, y con la posibilidad de que las empresas puedan desarrollar fácilmente software para los móviles que se adapte a sus aplicaciones. Por lo tanto surge la necesidad de que los desarrolladores puedan realizar estas aplicaciones de forma rápida y con el menor coste posible, sin tener que conocer los detalles de la especificación de cada modelo concreto de móvil.
Vamos primero a estudiar las distintas eras en la evolución de Internet, según el tipo de dispositivos que se conectan a esta red, para ver el momento en el que se introducen este tipo de dispositivos y la problemática que plantean. A continuación estudiaremos las características de este tipo de dispositivos, y por último analizaremos de forma general las distintas APIs ofrecidas por la plataforma J2ME para la programación de dispositivos móviles.
1.1. Evolución de Internet
Hasta hace poco hemos visto la red Internet como una red en la que se encuentran conectados ordenadores de todo el mundo. Sin embargo, durante los últimos años estamos entrando en una segunda era de Internet, en la que se están conectando a la red diferentes tipos de dispositivos heterogéneos como por ejemplo teléfonos móviles o PDAs.
1.1.1. Primera era: El Internet de los ordenadores
En esta primera era tenemos conectados a Internet ordenadores que cuentan con una interfaz común y una capacidad mínima suficiente. La información que obtenemos de la red se obtiene normalmente en forma de páginas web escritas en HTML, diseñadas para mostrarse en dispositivos gráficos con resoluciones por encima de 640x480 pixels y con monitores de por lo menos 14".
Asumiendo que los clientes cuentan con esta configuración mínima, podemos elaborar páginas que se visualicen correctamente en ellos. Es decir, parte de la capa de presentación residirá en el servidor, ya que estas páginas HTML definirán el formato con el que se mostrará la información. Los navegadores en las máquinas cliente deberán ser capaces de interpretar el código HTML y mostrar en pantalla las páginas web.
1.1.2. Segunda era: El Internet de los dispositivos
Al incorporarse distintos tipos de dispositivos a Internet, cada uno de ellos con interfaces y capacidad totalmente distinta, ya no va a ser posible definir una presentación única en el lado del servidor, ya que ésta no va a poder ser visualizada correctamente por todos los clientes.
Estos dispositivos llevan ordenadores embebidos, en muchos casos con grandes limitaciones en su interfaz y baja capacidad, debido a su reducido tamaño o a la escasa necesidad de incorporar un ordenador mayor que encarecería el producto. Deberán conectarse a Internet utilizando estos ordenadores, por lo que el acceso será distinto dependiendo del dispositivo del que se trate.
Una posible solución es definir un nuevo tipo de documento, adaptado a la reducida interfaz de estos dispositivos. Este es el caso por ejemplo de los documentos WML para los teléfonos móviles WAP. El problema es que si definimos esta presentación en el servidor para todos los móviles, tendremos que definirla de forma que sea compatible con todos los modelos existentes que soporten esta tecnología. Conforme mejoran los modelos de móviles, podríamos visualizar en ellos aplicaciones más ricas, pero el tener que utilizar un formato compatible para todos los móviles nos obligará a definir un documento bastante más pobre que sea soportado por todos ellos.
Por ello en esta segunda era surgen nuevos paradigmas para la programación web. La información se empezará a ofrecer en forma de servicios, en lugar de documentos. Es decir, obtendremos de Internet únicamente la información, pero no la presentación. Por ejemplo, esta información puede estar codificada en lenguaje XML siguiendo un determinado estándar, de forma que cualquier aplicación sea capaz de entenderla, o bien utilizar nuestra propia codificación. De esta forma, cada cliente (móvil) tendrá aplicaciones adaptadas a sus características, que obtendrán de Internet únicamente la información a la que necesitan acceder.
Nos vamos a centrar en la programación de este tipo de aplicaciones para dispositivos móviles. Estas aplicaciones se alojarán y se ejecutarán de forma local en el dispositivo. Será deseable que la API (Interfaz de Programación de Aplicaciones) que ofrezca cada dispositivo para programar en él nos permita utilizar todas las características del mismo, y establecer conexiones de red para obtener la información necesaria de Internet.
1.1.3. Tercera era: El Internet de las cosas
En una futura era de Internet, podrá formar parte de Internet cualquier cosa. Podremos de esta forma tener conectada a la red ropa, productos de alimentación o cualquier otra cosa que incorpore un chip capaz de conectarse y ofrecer información sobre el producto. Con esto se disparará el número de elementos conectados a la red.
Por ejemplo, la tecnología Auto ID consiste en un pequeño chip transmisor (del tamaño de la cabeza de un alfiler) que podrá ser incluido en los artículos. Este chip vendrá a sustituir en el futuro al código de barras, ya que además de ofrecernos toda la información sobre el producto, nos permitirá conocer su localización. Para comunicarse emitirán una señal de radio, que será recibida por un receptor conectado a un ordenador que nos ofrezca la información sobre estas "cosas" conectadas.
De esta forma podremos saber fácilmente si en nuestra tienda tenemos un determinado tipo de productos, o si se han agotado y tenemos que realizar un pedido. También podremos saber si alguien se lleva un producto de nuestra tienda, lo cuál será útil para evitar robos. O incluso ver si en nuestra tienda tenemos productos que hayan caducado, y descubrir dónde están estos productos para poder retirarlos de la venta.
Vemos que esta tecnología tiene multitud de posibles aplicaciones. Como inconveniente, tenemos la presunta violación de la intimidad de los consumidores al poder estos chips ofrecer información sobre los artículos que han adquirido.
1.1.4. Internet como un conjunto de servicios
Hemos visto como en la segunda era de Internet surgen los Servicios Web como alternativa a los documentos web (como las páginas HTML y WML por ejemplo). Podemos definir un servicio como la interfaz que nos da acceso a un módulo de funcionalidad.
Por ejemplo, podemos tener un servicio que nos permita acceder a información sobre cambio de monedas. Este servicio nos ofrecerá una operación cambioVenta(moneda_origen, moneda_destino) que nos devolverá el cambio actual entre dos monedas, para la venta, y otra operación análoga cambioCompra(moneda_origen, moneda_destino) para obtener esta información en el caso de la compra.
Un Servicio Web será un servicio al que podamos acceder mediante protocolos web estándar. Se utilizará lenguaje XML para codificar el mensaje de invocación de las operaciones del servicio, y la respuesta que nos haya devuelto la operación. De esta forma podremos invocar servicios a través de Internet.
Los documentos web mezclan la información y la presentación. Normalmente la información que ofrecen está escrita en lenguaje natural y formateada de forma que los humanos la podamos entender fácilmente. Sin embargo, esto será difícilmente entendible por una aplicación. Los Servicios Web nos ofrecen únicamente la información que nos ha devuelto la operación invocada. Por ello podemos ver estos Servicios Web como la web para aplicaciones, frente a los documentos web que serían la web para humanos. Serán las aplicaciones instaladas en el cliente, que invocan los Servicios Web, las encargadas de dar formato y presentar al usuario la información obtenida.
En la actualidad podemos encontrar algunos Servicios Web ofrecidos por una serie de proveedores. En el futuro Internet será como un gran Sistema Operativo distribuido, en el que haya disponibles un gran número de servicios que puedan ser utilizados por cualquier máquina conectada a la red. De esta forma las aplicaciones se encontrarán distribuidas en Internet, es decir, estarán formadas por módulos que podrán residir en distintos lugares del mundo. La cuestión es quién se hará con el control de este gran Sistema Operativo, ¿Microsoft con .NET o Sun con las tecnologías Java?.
1.2. Características de los dispositivos
Vamos a ver los distintos tipos de dispositivos con ordenadores embebidos que podemos encontrar, así como sus características, para luego centrarnos en los dispositivos móviles de información (Mobile Information Devices, MIDs) que son los que trataremos con mayor detalle.
1.2.1. Tipos de dispositivos
Podemos encontrar distintos dispositivos con ordenadores embebidos que van introduciéndose en nuestros hogares. Por un lado tenemos los teléfonos móviles y las agendas electrónicas o PDAs. Estos dispositivos son conocidos como dispositivos móviles de información (MIDs). Incorporan un reducido Sistema Operativo y una serie de aplicaciones que se ejecutan sobre él (Agenda, Notas, Mensajes, etc) adaptadas a la interfaz de estos dispositivos, de forma que se puedan visualizar correctamente en su pequeña pantalla y que se puedan manejar usando el teclado del teléfono o el puntero del PDA por ejemplo.
A parte de los MIDs encontramos más tipos de dispositivos, cuyo número crecerá conforme pase el tiempo. Tenemos por ejemplo los descodificadores de televisión digital (set top boxes). Las plataformas de televisión digital, tanto por satélite, por cable, o terrestre, ofrecen una serie de servicios accesibles desde estos descodificadores, como por ejemplo servicios de teleguía, juegos, etc. Para ello deberemos tener aplicaciones que se ejecuten en estos dispositivos.
Los electrodomésticos también siguen esta tendencia y ya podemos encontrar por ejemplo frigoríficos o lavadoras con un pequeño computador capaz de conectarse a la red doméstica. La idea es integrar todos estos dispositivos es nuestra red para construir un sistema domótico. Para ello todos los dispositivos que queramos integrar deberán ser capaces de conectarse a la red.
Hablamos de dispositivos conectados para referirnos a cualquier dispositivo capaz de conectarse a la red. Podemos tener distintos tipos de dispositivos conectados, con grandes diferencias de capacidad. Un subgrupo de estos dispositivos conectados son los MIDs de los que hemos hablado previamente.
1.2.2. Dispositivos móviles de información (MIDs)
Vamos a centrarnos en el estudio de los MIDs. Para ello vamos a ver las características de una serie de modelos actuales con lo que podremos hacernos una idea del rango de memoria y los tipos de interfaz con los que vamos a tener que trabajar.
Nokia 8310
-Serie 20
-Similar a 3330
-Sin Java Nokia 3410
-Serie 30 Nokia 6100
-Serie 40
-Similar a 6610, 7210, 7250, 5100, 3300 Nokia 3650
-Serie 60
-Similar a 7650, N-Gage Interfaz 84x48
Monocromo 96x65
Monocromo 128x128
12bits (4096 colores) 176x208
12 bits (4096 colores) Memoria - Heap 164 KB
Shared 150 KB
JAR 50 KB Heap 200 KB
Shared 725 KB
(625 KB en 6610, 7210)
(4,6 MB en 7250)
(4,5 MB en 3300)
JAR 64 KB Heap 1,4 MB
(2,4 MB en N-Gage)
Shared 3,4 MB
(4 MB en 7650, N-Gage)
JAR 4 MB APIs - CLDC 1.0
MIDP 1.0
WMA
Nokia UI
Nokia SMS CLDC 1.0
MIDP 1.0
Nokia UI
WMA (3300) CLDC 1.0
MIDP 1.0
WMA (N-Gage, 3650)
MMAPI (N-Gage, 3650)
Nokia UI
SO Symbian Otros HSCSD
GPRS (8310)
CSD (3330)
WAP 1.2.1 (8310)
WAP 1.1 (3330)
IrDA (8310) CSD
WAP 1.1 HSCSD
GPRS
WAP 1.2.1
USB
IrDA
Cámara (7250) HSCSD
GPRS
WAP 1.2.1
XHTML
Camara (3650, 7650)
Bluetooth
IrDA (3650, 7650)
USB (N-Gage)
SL45i C55
-Similar a M50 SL55
-Similar a M55, S55 Interfaz 101x80
Monocromo 101x64
Monocromo 101x80
12 bits (4096 colores)
(256 colores en S55) Memoria Heap 147 KB
Flex 0,2 MB
JAR 70 KB Heap 150 KB
Flex 0,5 MB
(0,2 MB en M50)
JAR 70 KB Heap 365 KB
(560 KB en M55)
Flex 1,6 MB
(1 MB en S55)
JAR 70 KB APIs MIDP 1.0 MIDP 1.0 MIDP 1.0 Otros WAP 1.1
IrDA GPRS
WAP 1.2.1 GPRS
WAP 1.2.1
IrDA (S55, SL55)
Bluetooth (S55)
Cámara (SL55)
Nokia 9210
-Serie 80
-Comunicador Sharp Zaurus SL-5500 Palm Tungsten HP iPAQ Pocket PC H1930 Interfaz 640x200
12 bits (4096 colores) 240x320
16 bits (65536 colores) 240x320
Color 240x320
Color Memoria 8 MB SD-RAM
18 MB disponibles
14 MB aplicaciones 64 MB RAM 16 MB RAM 64 MB SDRAM APIs PersonalJava
JavaPhone
SO Symbian SO Linux 2.4 SO Palm SO Windows Pocket PC 2003 Professional Otros HSCSD
WAP 1.1
HTML 3.2
IrDA
Cable serie IrDA
USB IrDA
Bluetooth
USB IrDA
USB
Podemos ver que las características de los móviles varían bastante, tanto a nivel de memoria como de interfaz entre los diferentes modelos disponibles. Además, a medida que aparezcan modelos nuevos encontraremos mayor diferencia entre los modelos antiguos y los más recientes. Es difícil realizar una aplicación que se adapte perfectamente al modelo utilizado. Por eso normalmente lo que se hará será realizar distintas versiones de una misma aplicación para distintos conjuntos de móviles con similares características. El coste de hacer una aplicación capaz de adaptarse sería mayor que el de hacer varias versiones de la aplicación, intentando siempre hacerlo de forma que tenga que modificarse la menor cantidad de código posible.
Tenemos además un problema adicional, y es que cada móvil puede tener su propia API. Distintos modelos de móviles, tanto de marcas distintas como de la misma marca, pueden incluir Sistemas Operativos diferentes y por lo tanto una interfaz diferente para programar aplicaciones (API). Esto nos obligará a tener que modificar gran parte del código para portar nuestras aplicaciones a diferentes modelos de móviles. Dado el creciente número de dispositivos disponibles esto será un grave problema ya que será difícil que una aplicación esté disponible para todos los modelos.
Aquí es donde aparece la conveniencia de utilizar tecnologías Java para programar este tipo de dispositivos tan heterogéneos. Sun ha apostado desde hace tiempo por las aplicaciones independientes de la plataforma con su tecnología Java. Esta independencia de la plataforma cobra un gran interés en este caso, en el que tenemos un gran número de dispositivos heterogéneos.
Con la edición Micro Edition de Java 2, se introduce esta plataforma en los dispositivos. De esta forma podremos desarrollar aplicaciones Java que puedan correr en todos los dispositivos que soporten las APIs de J2ME. Al ser estas APIs un estándar, los programas que escribamos en Java que las utilicen serán portables a todos estos dispositivos.
Es más, no será necesario recompilar la aplicación para cada tipo de dispositivo. Las aplicaciones Java corren sobre una máquina virtual Java, que deberá estar instalada en todos los dispositivos que soporten Java. Las aplicaciones Java se compilan a un tipo de código intermedio (conocido como bytecodes) que es capaz de interpretar la máquina virtual. De esta forma, nuestra aplicación una vez compilada podrá ejecutarse en cualquier dispositivo que tenga una máquina virtual Java, ya que esta máquina virtual será capaz de interpretar el código compilado de la aplicación sin necesidad de compilarla otra vez. Incluso si aparece un nuevo modelo de dispositivo con soporte para Java después de que nosotros hayamos publicado una aplicación, esta aplicación funcionará en este modelo.
Es por esta razón que las tecnologías Java se han impuesto en el mercado de programación de dispositivos móviles, teniendo prácticamente todos los modelos de móviles que aparecen en la actualidad soporte para Java.
1.2.3. Redes móviles
Centrándonos en los teléfonos móviles celulares, vamos a ver las distintas generaciones de estos dispositivos según la red de comunicaciones utilizada.
Se denominan celulares porque la zona de cobertura se divide en zonas de menor tamaño llamadas células. Cada célula tendrá un transmisor que se comunicará con los dispositivos dentro del área de dicha célula mediante señales de radio, operando en una determinada banda de frecuencias. Dentro de esta banda de frecuencias, tendremos un determinado número de canales a través de los cuales se podrán comunicar los móviles de dicha zona.
Este número de canales estará limitado por la banda de frecuencias utilizada, lo que limitará el número de usuarios que puedan estar conectados simultáneamente a la red. Al dividir la cobertura en células permitimos que en distintas células se reutilicen las mismas frecuencias, por lo que este número limitará sólo los usuarios conectados dentro de una misma célula, que es un área pequeña donde habrá menos usuarios, y no de toda la zona global de cobertura.
Primera generación (1G): Red analógica
Los primeros teléfonos móviles que aparecieron utilizaban una red analógica para comunicarse. La información analógica se transfiere por ondas de radio sin ninguna codificación, por frecuencia modulada (FM). Este tipo de redes permiten únicamente comunicaciones de voz. Un ejemplo de red analógica es la red TACS, que opera en la banda de frecuencias entorno a los 900MHz. Al ser analógica hace un uso poco eficiente del espectro, por lo que tendremos menos canales disponibles y por lo tanto será más fácil que la red se sature.
Esta es la red analógica que se utiliza en España para telefonía móvil, basada en la Estadounidense AMPS (Advanced Mobile Phone System). En EEUU además de esta podemos encontrar bastantes más tipos de redes analógicas.
Un gran inconveniente de estas redes analógicas es que existen numerosos tipos de redes, y cada país adoptó una distinta. Esto dificulta la itinerancia (o roaming), ya que no posibilita que utilicemos nuestro dispositivo en otros países con redes diferentes.
Segunda generación (2G): Red digital
La segunda generación de móviles consiste en aquellos que utilizan una red digital para comunicarse. En Europa se adoptó como estándar la red GSM (Global System for Mobile communications). Se trata de una red inicialmente diseñada para voz, pero que también puede transferir datos, aunque es más apropiada para voz. Digitaliza tanto la voz como los datos para su transmisión. Esta red es la que ha producido un acercamiento entre la telefonía móvil y la informática.
Se implanta como estándar en Europa y desplaza rápidamente a los analógicos. En una primera fase opera en los 900MHz. Una vez saturada la banda de los 900MHz empieza a funcionar en 1800MHz. Los móviles capaces de funcionar en ambas bandas (dualband) tendrán una mayor cobertura, ya que si una banda esta saturada podrán utilizar la otra. En EEUU se utiliza la banda 1900MHz. Hay móviles tribanda que nos permitirán conectarnos en cualquiera de estas 3 bandas, por lo que con ellos tendremos cobertura en EEUU, Europa y Asia.
Una característica de los dispositivos GSM es que los datos relevantes del usuario se almacenan en una tarjeta de plástico extraíble (SIM, Suscriber Identification Module), lo cual independiza la identificación del usuario (número de teléfono y otros datos) del terminal móvil, permitiendo llevar esta tarjeta de un terminal a otro sin tener que cambiar el número.
Opera por conmutación de circuitos (CSD, Circuit Switched Data), es decir, se establece un circuito permanente de comunicación. Con esta tecnología se consigue una velocidad de 9,6kbps, siendo el tiempo de establecimiento de conexión de unos 10 segundos. Los inconvenientes de esta tecnología son:
Debido a que se establece un circuito de comunicación de forma permanente, se tarifica por tiempo, por lo que se cobrará al usuario el tiempo que esté conectado aunque no esté descargando nada.
Además, tiene una velocidad de transmisión demasiado lenta, lo cuál es bastante negativo para el usuario sobretodo al tarificarse por tiempo de conexión.
Otro inconveniente es que no se trata de una red IP, por lo que el móvil no podrá conectarse directamente a Internet. Tendrá que hacerlo a través de algún intermediario (gateway) que traduzca los protocolos propios de la red móvil a los protocolos TCP/IP de Internet.
Más adelante se desarrolla la tecnología HSCSD (High Speed Circuit Switched Data), que consigue una velocidad de 56Kbps sobre la misma red GSM. Para conseguir esta alta velocidad, esta tecnología utiliza varios canales de comunicación simultáneamente, cada uno de los cuales funciona a una velocidad de 9'6Kbps físicos de forma similar a como se hacía con CSD (se puede conseguir aumentar a 14'4kbps utilizando métodos de compresión por software). Al transmitir por 4 canales se consigue esta mayor velocidad, pero tenemos el gran inconveniente de tener 4 circuitos establecidos de forma permanente, por lo que el coste de la conexión se multiplicará por 4, tarificándose por tiempo de conexión igual que ocurría en el caso anterior. Otro inconveniente es que sigue sin ser compatible con IP.
Paso intermedio (2,5G): GPRS
Hemos visto que con las tecnologías anteriores de portadoras de datos (CSD y HSCSD) tenemos los problemas de la baja velocidad, tarificación por tiempo y el no ser una red IP. Surge aquí la necesidad de implantar un método de transmisión por paquetes que no requiera ocupar un canal de forma permanente, sino que envíe los datos fraccionados en paquetes IP independientes. De esta forma surge GPRS, que se considera como un paso intermedio entre la segunda (2G) y tercera (3G) generación.
GPRS (General Packet Radio Service) es una evolución de las redes GSM y funciona sobre estas mismas redes, por lo que no será necesario realizar una gran inversión en infraestructuras, simplemente se deberá actualizar la red GSM para que soporte la transmisión de paquetes.
Esta tecnología realiza una transmisión inalámbrica de datos basada en paquetes. Puede alcanzar una velocidad de hasta 144kbps teóricamente, aunque en la práctica no suele pasar de los 40Kbps por limitaciones de los dispositivos. La información se fragmenta en paquetes que se envían mediante el protocolo IP por distintos canales de forma independiente y se reconstruye en destino. Al seguir el protocolo IP, podremos acceder a todos los recursos de la red Internet.
Un canal no tendrá que estar dedicado a la comunicación exclusivamente de un punto a otro, es decir, no mantiene una conexión abierta de forma permanente, conecta solo para transmitir datos (paquetes). Por esta razón se aprovecharán mejor los canales de comunicación, ya que sólo se ocupan cuando es necesario y se optimiza así el uso de la red. El tiempo de establecimiento de conexión es de aproximadamente 1 segundo. De esta forma se paga por información transmitida, y no por tiempo de conexión. Esto nos permite que podamos estar siempre conectados a Internet, ya que mientras no se transfieran paquetes no estaremos ocupando los canales de comunicación y por lo tanto no se nos estará cobrando.
Los dispositivos cuentan con varios canales para transmitir (a 10Kbps cada uno), tanto para enviar como para recibir. Por ejemplo podemos tener dispositivos (2+1), con 2 canales para recibir y 1 para enviar, por lo que recibirán datos a 20Kbps y enviarán a 10Kbps. Se pueden tener hasta un máximo de 8 canales. Esto nos permite tener simultaneidad de voz y datos.
Tercera generación (3G): Banda ancha
La tercera generación de telefonía móvil viene con la red UMTS (Universal Mobile Telephony System). Con esta nueva tecnología de radio se pretende buscar un estándar mundial para las redes de telefonía móvil, de forma que podemos movernos a cualquier parte del mundo sin que nuestro móvil deje de funcionar.
Además con ella se pretende dar acceso a servicios multimedia, como videoconferencia, ver la TV a través del móvil, oír música, etc. Para ello esta red proporciona un ancho de banda mucho mayor que las redes de segunda generación, teniendo velocidades de transferencia entre 384kbps y 2Mbps. Al igual que ocurría con GPRS la información se enviará por paquetes, por lo que se cobrará por información transmitida, lo que nos permitirá estar conectados permanentemente.
Esta red tiene el inconveniente de que para implantarla es necesario realizar una fuerte inversión en infraestructuras. Es compatible con GSM y funciona en la frecuencia 2GHz.
1.2.4. Portadores
En la arquitectura de capas de las redes móviles, denominamos capa portadora (bearer) a aquella que se va a utilizar para transferir los datos a través de la red. Distintas tecnologías que podemos utilizar como portadoras para enviar o recibir datos a través de la red son:
CSD : Conmutación de circuitos sobre una red GSM.
: Conmutación de circuitos sobre una red GSM. HSCSD : Conmutación de circuitos de alta velocidad sobre una red GSM.
: Conmutación de circuitos de alta velocidad sobre una red GSM. GPRS : Envío de paquetes a través de una red GSM.
: Envío de paquetes a través de una red GSM. SMS : Mensajes de texto cortos. Se envían por paquetes, limitando su contenido a 140 bytes.
: Mensajes de texto cortos. Se envían por paquetes, limitando su contenido a 140 bytes. MMS: Mensajes multimedia. Permiten incorporar elementos multimedia (audio, imágenes, video) al mensaje.
Debemos distinguir claramente las tecnologías portadoras de las tecnologías para desarrollar aplicaciones. Podemos desarrollar aplicaciones para dispositivos móviles utilizando diferentes tecnologías, y para acceder a una aplicación podremos utilizar diferentes portadores.
1.2.5. Aplicaciones para móviles
Las aplicaciones web normalmente se desarrollan pensando en ser vistas en las pantallas de nuestro PCs, con una resolución de unos 800x600 pixels y navegar en ellas mediante el puntero del ratón. Por lo tanto, estas aplicaciones no se podrán mostrar correctamente en las reducidas pantallas de los dispositivos móviles. Además, en gran parte de los dispositivos móviles (como por ejemplo los teléfonos) no tenemos ningún dispositivo de tipo puntero, por lo que deberemos realizar páginas en las que se pueda navegar fácilmente utilizando el reducido teclado de estos dispositivos.
Han surgido diferentes tecnologías diseñadas para ofrecer contenidos aptos para este tipo de dispositivos. Entre ellas destacamos las siguientes:
WAP (Wireless Application Protocol): Se compone de un conjunto de protocolos que se sitúan por encima de la capa portadora. Puede funcionar sobre cualquier tecnología portadora existente (CSD, HSCSD, GRPS, SMS, UMTS, etc).
Debido a que la red móvil puede no ser una red IP, se introduce un elemento intermediario: el gateway WAP. Este gateway traduce entre el protocolo WSP (perteneciente a WAP) de la red móvil y el protocolo TCP/IP de Internet.
Los documentos web se escriben en lenguaje WML (Wireless Markup Language), que forma parte del protocolo WAP. Se trata de un lenguaje de marcado para definir documentos web que puedan ser visualizados en pantallas pequeñas, usando navegadores WML. Como inconvenientes de este lenguaje encontramos la pobreza de los documentos que podemos generar con él, ya que para asegurarse de funcionar en todos los dispositivos debe ser muy restrictivo, y también el ser un lenguaje totalmente distinto a HTML, que obligará a los desarrolladores a tener que aprender otro lenguaje y escribir desde cero una nueva versión de las aplicaciones.
iMode : Esta tecnología fue lanzada por la empresa NTT en Japón. Para escribir los documentos se utiliza cHTML, un subconjunto del HTML (compacto). En Japón esta tecnología se ofreció desde el principio con una velocidad similar a la de las red GSM, con conexión permanente y tarificando por información transmitida. Se lanzó con gran cantidad de servicios, y cuenta con un gran éxito en Japón. En Europa también se introduce esta tecnología, en este caso sobre GPRS. El inconveniente que tiene es que es propietario, mientras que WAP es abierto.
: Esta tecnología fue lanzada por la empresa NTT en Japón. Para escribir los documentos se utiliza cHTML, un subconjunto del HTML (compacto). En Japón esta tecnología se ofreció desde el principio con una velocidad similar a la de las red GSM, con conexión permanente y tarificando por información transmitida. Se lanzó con gran cantidad de servicios, y cuenta con un gran éxito en Japón. En Europa también se introduce esta tecnología, en este caso sobre GPRS. El inconveniente que tiene es que es propietario, mientras que WAP es abierto. XHTML: Se trata de una versión reducida de lenguaje HTML ideado para crear aplicaciones para dispositivos móviles con interfaces reducidas. Es similar a cHTML, pero a diferencia de este último, se ha desarrollado como estándar
Con estas tecnologías podemos desarrollar aplicaciones web para acceder desde dispositivos móviles. Sin embargo, en este tipo de dispositivos donde muchas veces la conexión es lenta, cara e inestable es conveniente poder trabajar con las aplicaciones de forma local. Además las aplicaciones que instalemos en el dispositivo podrán estar hechas a medida para nuestro modelo de dispositivo concreto y de esta manera adaptarse mejor a las posibilidades que ofrece.
Vamos a ver qué tecnologías podemos utilizar para desarrollar estar aplicaciones. Los dispositivos tendrán instalado un sistema operativo. Existen diferentes sistemas operativos disponibles para este tipo de dispositivos, entre los que destacamos los siguientes:
Windows Pocket PC : Se trata de una versión del sistema operativo Windows de Microsoft para PDAs. Es una evolución de Windows CE, destinado también a este tipo de dispositivos. Windows CE tenía un aspecto similar al Windows 9X, pero no se adaptaba bien a las reducidas interfaces de estos dispositivos. Pocket PC soluciona este problema y tiene un aspecto similar a Windows XP. Una ventaja de Pocket PC es que mantiene la compatibilidad con los sistemas Windows de escritorio, ya que maneja los mismos formatos de ficheros, por lo tanto podremos transferir fácilmente nuestros datos entre PCs y PDAs.
: Se trata de una versión del sistema operativo Windows de Microsoft para PDAs. Es una evolución de Windows CE, destinado también a este tipo de dispositivos. Windows CE tenía un aspecto similar al Windows 9X, pero no se adaptaba bien a las reducidas interfaces de estos dispositivos. Pocket PC soluciona este problema y tiene un aspecto similar a Windows XP. Una ventaja de Pocket PC es que mantiene la compatibilidad con los sistemas Windows de escritorio, ya que maneja los mismos formatos de ficheros, por lo tanto podremos transferir fácilmente nuestros datos entre PCs y PDAs. Palm OS : Sistema operativo para los PDAs Palm. Se adapta mejor a los dispositivos que Windows CE.
: Sistema operativo para los PDAs Palm. Se adapta mejor a los dispositivos que Windows CE. Symbian OS: Se trata de un Sistema Operativo incluido en distintos modelos de móviles, como por ejemplo en la serie 60 de Nokia.
Podemos programar aplicaciones utilizando la API de estos SO, pero estas aplicaciones sólo funcionarán en dispositivos que cuenten con dicho SO. Si además accedemos directamente al hardware del dispositivo en nuestros programas, entonces sólo podemos confiar en que sea compatible con el modelo concreto para el que lo hayamos desarrollado.
Debido al gran número de dispositivos distintos existentes con diferentes sistemas operativos, programar a bajo nivel (es decir, utilizando directamente la API del SO) no será conveniente ya que será muy complicado portar nuestro programas a otros dispositivos distintos. Por ello adquiere especial interés en el campo de la programación de dispositivos móviles el tener aplicaciones independientes de la plataforma.
Para tener esta independencia de la plataforma deberemos tener instalado en los dispositivos un entorno de ejecución que sea capaz de interpretar estas aplicaciones multiplataforma. Existen diferentes tecnologías que nos permitirán crear este tipo de aplicaciones, como son las siguientes:
BREW (Binary Runtime Environment for Wireless): El lenguaje de programación nativo es C/C++. También puede usarse Java y otros lenguajes. El inconveniente de esta tecnología es que es desconocida por los desarrolladores, y que está soportada por un número reducido de dispositivos.
J2ME (Java 2 Micro Edition): Edición de la plataforma Java para dispositivos móviles. Se trata de una versión reducida de Java que nos permitirá ejecutar aplicaciones escritas en este lenguaje en estos dispositivos. Con Java desde el principio se apostó por la multiplataforma, por lo que la filosofía seguida con esta tecnología es muy adecuada a este tipo de dispositivos.
Tiene la ventaja de que existe una gran comunidad de desarrolladores Java, a los que no les costará aprender a programar para estos dispositivos, ya que se usa prácticamente la misma API, y además la mayoría de modelos de móviles que aparecen en el mercado soportan esta tecnología. Podemos encontrar gran número de páginas que nos ofrecen aplicaciones y juegos Java para descargar en nuestros móviles.
1.2.6. Conectividad de los MIDs
Hemos hablado de que estos dispositivos son capaces de conectarse. Vamos a ver las posibles formas de conectar estos dispositivos móviles para obtener datos, aplicaciones o intercambiar cualquier otra información. Una primera forma de conectarlos consiste en establecer una conexión a Internet desde el móvil a través de la red GSM. Sin embargo, esta conexión cuesta dinero, por lo que será interesante tener otros mecanismos de conexión directa de nuestro móvil para poder copiar en él las aplicaciones que estemos desarrollando para hacer pruebas, gestionar nuestros datos, o intercambiar información con otros usuarios.
OTA (Over The Air) : Se conecta directamente a Internet de forma inalámbrica utilizando la red móvil (GSM o en el futuro UMTS). Esto nos permitirá acceder a los recursos que haya en Internet. Por ejemplo, podemos publicar nuestras aplicaciones en una página WML y descargarlas desde ahí para instalarlas en el móvil. El inconveniente de este método es que el tiempo de conexión tiene un coste elevado.
: Se conecta directamente a Internet de forma inalámbrica utilizando la red móvil (GSM o en el futuro UMTS). Esto nos permitirá acceder a los recursos que haya en Internet. Por ejemplo, podemos publicar nuestras aplicaciones en una página WML y descargarlas desde ahí para instalarlas en el móvil. El inconveniente de este método es que el tiempo de conexión tiene un coste elevado. Cable serie/USB : Algunos dispositivos permiten ser conectados a un PC mediante cable serie o USB. Con ello podremos copiar los datos del móvil al PC, o al revés. De este forma podremos subir nuestras aplicaciones al móvil para probarlas. El problema es que tendremos que conectar el móvil físicamente mediante un cable.
: Algunos dispositivos permiten ser conectados a un PC mediante cable serie o USB. Con ello podremos copiar los datos del móvil al PC, o al revés. De este forma podremos subir nuestras aplicaciones al móvil para probarlas. El problema es que tendremos que conectar el móvil físicamente mediante un cable. Infrarrojos (IrDA) : Un gran número de modelos nos permiten establecer conexiones vía infrarrojos. Podemos de esta manera conectar varios dispositivos entre si, o bien conectarlos con un PC. Para ello el PC deberá contar con puerto de infrarrojos. Muchos portátiles incorporan este puerto, o también podemos añadir este puerto a cualquier otro ordenador por ejemplo a través de interfaz USB. Tenemos la ventaja de que podemos conectar todo tipo de dispositivos que cuenten con este puerto, y además no es necesario contar con un cable físico. El inconveniente es que los dispositivos deberán verse entre si para poder comunicarse por infrarrojos.
: Un gran número de modelos nos permiten establecer conexiones vía infrarrojos. Podemos de esta manera conectar varios dispositivos entre si, o bien conectarlos con un PC. Para ello el PC deberá contar con puerto de infrarrojos. Muchos portátiles incorporan este puerto, o también podemos añadir este puerto a cualquier otro ordenador por ejemplo a través de interfaz USB. Tenemos la ventaja de que podemos conectar todo tipo de dispositivos que cuenten con este puerto, y además no es necesario contar con un cable físico. El inconveniente es que los dispositivos deberán verse entre si para poder comunicarse por infrarrojos. Bluetooth: Bluetooth es una tecnología que nos permite conectar distintos tipos de dispositivos utilizando ondas de radio para comunicarse. Podremos de esta forma conectar distintos dispositivos bluetooth entre ellos. Podemos incorporar un adaptador bluetooth a nuestro PC (a través de USB por ejemplo) de forma que nuestro ordenador se comporte como un dispositivo bluetooth más y de esta forma podamos conectarlo a nuestro móvil. Al comunicarse por ondas de radio no hará falta que los dispositivos estén visibles entre si, teniendo estas ondas un alcance de unos 10 metros. Es el sustituto de alta velocidad de los infrarrojos, pudiendo alcanzar velocidades de 723Kbit/s.
1.3 Aplicaciones J2ME
La plataforma J2ME nos ofrece una serie de APIs con las que desarrollar las aplicaciones en lenguaje Java. Una vez tengamos la aplicación podremos descargarla en cualquier dispositivo con soporte para J2ME y ejecutarla en él.
J2ME soporta una gran variedad de dispositivos, no únicamente MIDs. Actualmente define APIs para dar soporte a los dispositivos conectados en general, tanto aquellos con una gran capacidad como a tipos más limitados de estos dispositivos.
1.3.1. Arquitectura de J2ME
Hemos visto que existen dispositivos de tipos muy distintos, cada uno de ellos con sus propias necesidades, y muchos con grandes limitaciones de capacidad. Si obtenemos el mínimo común denominador de todos ellos nos quedamos prácticamente con nada, por lo que es imposible definir una única API en J2ME que nos sirva para todos.
Por ello en J2ME existirán diferentes APIs cada una de ellas diseñada para una familia de dispositivos distinta. Estas APIs se encuentras arquitecturadas en dos capas: configuraciones y perfiles.
Configuraciones
Las configuraciones son las capas de la API de bajo nivel, que residen sobre la máquina virtual y que están altamente vinculadas con ella, ofrecen las características básicas de todo un gran conjunto de dispositivos. En esta API ofrecen lo que sería el mínimo denominador común de todos ellos, la API de programación básica en lenguaje Java.
Encontramos distintas configuraciones para adaptarse a la capacidad de los dispositivos. La configuración CDC (Connected Devices Configuration) contiene la API común para todos los dispositivos conectados, soportada por la máquina virtual Java.
Sin embargo, para algunos dispositivos con grandes limitaciones de capacidad esta máquina virtual Java puede resultar demasiado compleja. Hemos de pensar en dispositivos que pueden tener 128 KB de memoria. Es evidente que la máquina virtual de Java (JVM) pensada para ordenadores con varias megas de RAM instaladas no podrá funcionar en estos dispositivos.
Por lo tanto aparece una segunda configuración llamada CLDL (Connected Limited Devices Configuration) pensada para estos dispositivos con grandes limitaciones. En ella se ofrece una API muy reducida, en la que tenemos un menor número de funcionalidades, adaptándose a las posibilidades de estos dispositivos. Esta configuración está soportada por una máquina virtual mucho más reducida, la KVM (Kilobyte Virtual Machine), que necesitará muchos menos recursos por lo que podrá instalarse en dispositivos muy limitados.
Vemos que tenemos distintas configuraciones para adaptarnos dispositivos con distinta capacidad. La configuración CDC soportada por la JVM (Java Virtual Machine) funcionará sólo con dispositivos con memoria superior a 1 MB, mientras que para los dispositivos con memoria del orden de los KB tenemos la configuración CLDC soportada por la KVM, de ahí viene el nombre de Kilobyte Virtual Machine.
Perfiles
Como ya hemos dicho, las configuraciones nos ofrecen sólo la parte básica de la API para programar en los dispositivos, aquella parte que será común para todos ellos. El problema es que esta parte común será muy reducida, y no nos permitirá acceder a todas las características de cada tipo de dispositivo específico. Por lo tanto, deberemos extender la API de programación para cada familia concreta de dispositivos, de forma que podamos acceder a las características propias de cada familia.
Esta extensión de las configuraciones es lo que se denomina perfiles. Los perfiles son una capa por encima de las configuraciones que extienden la API definida en la configuración subyacente añadiendo las operaciones adecuadas para programar para una determinada familia de dispositivos.
Por ejemplo, tenemos un perfil MIDP (Mobile Information Devices Profile) para programar los dispositivos móviles de información. Este perfil MIDP reside sobre CLDC, ya que estos son dispositivos bastante limitados a la mayoría de las ocasiones.
Paquetes opcionales
Además podemos incluir paquetes adicionales, como una tercera capa por encima de las anteriores, para dar soporte a funciones concretas de determinados modelos de dispositivos. Por ejemplo, los móviles que incorporen cámara podrán utilizar una API multimedia para acceder a ella.
1.3.2. Configuración CDC
La configuración CDC se utilizará para dispositivos conectados con una memoria de por lo menos 1 MB (se recomiendan al menos 2 MB para un funcionamiento correcto). Se utilizará en dispositivos como PDAs de gama alta, comunicadores, descodificadores de televisión, impresoras de red, routers, etc.
CDC se ha diseñado de forma que se mantenga la máxima compatibilidad posible con J2SE, permitiendo de este modo portar fácilmente las aplicaciones con las que ya contamos en nuestros ordenadores a CDC.
La máquina virtual utilizada, la CVM, cumple con la misma especificación que la JVM, por lo que podremos programar las aplicaciones de la misma forma que lo hacíamos en J2SE. Existe una nueva máquina virtual para soportar CDC, llamada CDC Hotspot, que incluye diversas optimizaciones utilizando la tecnología Hotspot.
La API que ofrece CDC es un subconjunto de la API que ofrecía J2SE, optimizada para este tipo de dispositivos que tienen menos recursos que los PCs en los que utilizamos J2SE. Se mantienen las clases principales de la API, que ofrecerán la misma interfaz que en su versión de J2SE.
CDC viene a sustituir a la antigua API PersonalJava, que se aplicaba al mismo tipo de dispositivos. La API CDC, a diferencia de PersonalJava, está integrada dentro de la arquitectura de J2ME.
Tenemos diferentes perfiles disponibles según el tipo de dispositivo que estemos programando: Foundation Profile (FP), Personal Basis Profile (PBP) y Personal Profile (PP).
Foundation Profile
Este es el perfil básico para la programación con CDC. No incluye ninguna API para la creación de una interfaz gráfica de usuario, por lo que se utilizará para dispositivos sin interfaz, como por ejemplo impresoras de red o routers.
Los paquetes que se incluyen en este perfil son:
java.io java.lang java.security java.security.acl java.security.interfaces java.security.spec java.util java.util.jar java.util.zip
Vemos que incluye todos los paquetes del núcleo de Java, para la programación básica en el lenguaje ( java.lang ), para manejar la entrada/salida ( java.io ), para establecer conexiones de red ( ), para seguridad ( java.security ), manejo de texto ( ) y clases útiles ( java.util ). Estos paquetes se incluyen en su versión integra, igual que en J2SE. Además incluye un paquete adicional que no pertenece a J2SE:
Este paquete pertenece está presente para mantener la compatibilidad con CLDC, ya que pertenece a esta configuración, como veremos más adelante.
Personal Basis Profile
Este perfil incluye una API para la programación de la interfaz gráfica de las aplicaciones. Lo utilizaremos para dispositivos en los que necesitemos aplicaciones con interfaz gráfica. Este es el caso de los descodificadores de televisión por ejemplo.
Además de los paquetes incluidos en FP, añade los siguientes:
java.awt java.awt.image java.beans
Estos paquetes incluyen un subconjunto de las clases que contenían en J2SE. Tenemos el paquete AWT ( java.awt ) para la creación de la interfaz gráfica de las aplicaciones. Este paquete sólo incluye soporte para componentes ligeros (aquellos que definen mediante código Java la forma de dibujarse), y no incluye ningún componente de alto nivel (como botones, campos de texto, etc). Tendremos que crear nosotros nuestros propios componentes, definiendo la forma en la que se dibujará cada uno.
También incluye un soporte limitado para beans ( java.beans ) y objetos distribuidos RMI ( ).
Además podemos encontrar un nuevo tipo de componente no existente en J2SE, que son los Xlets.
Estos xlets son similares a los applets, son componentes que se ejecutan dentro de un contenedor que controla su ciclo de vida. En el caso de los applets este contenedor era normalmente el navegador donde se cargaba el applet. Los xlets se ejecutan dentro del xlet manager. Los xlets pueden comunicarse entre ellos mediante RMI. De hecho, la parte de RMI incluida en PBP es únicamente la dedicada a la comunicación entre xlets.
Los xlets se diferencian también de los applets en que tienen un ciclo de vida definido más claramente, y que no están tan vinculados a la interfaz (AWT) como los applets. Por lo tanto podremos utilizar tanto xlets con interfaz gráfica, como sin ella.
Estos xlets se suelen utilizar en aplicaciones de televisión interactiva, instaladas en los descodificadores (set top boxes).
Personal Profile
Este perfil incluye soporte para applets e incluye la API de AWT íntegra. De esta forma podremos utilizar los componentes pesados de alto nivel definidos en AWT (botones, menús, campos de texto, etc). Estos componentes pesado utilizan la interfaz gráfica nativa del dispositivo donde se ejecutan. De esta forma, utilizaremos este perfil cuando trabajemos con dispositivos que disponen de su propia interfaz gráfica de usuario (GUI) nativa.
Incluye los siguientes paquetes:
java.applet java.awt java.awt.datatransfer
En este caso ya se incluye íntegra la API de AWT ( java.awt ) y el soporte para applets ( java.applet ). Este paquete es el más parecido al desaparecido PersonalJava, por lo que será el más adecuado para migrar las aplicaciones PersonalJava a J2ME.
Paquetes opcionales
En CDC se incluyen como paquetes opcionales subconjuntos de otras APIs presentes en J2SE: la API JDBC para conexión a bases de datos, y la API de RMI para utilizar esta tecnología de objetos distribuidos.
Además también podremos utilizar como paquete opcional la API Java TV, adecuada para aplicaciones de televisión interactiva (iTV), que pueden ser instaladas en descodificadores de televisión digital. Incluye la extensión JMF (Java Media Framework) para controlar los flujos de video.
Podremos utilizar estas APIs para programar todos aquellos dispositivos que las soporten.
1.3.3. Configuración CLDC
La configuración CLDC se utilizará para dispositivos conectados con poca memoria, pudiendo funcionar correctamente con sólo 128 KB de memoria. Normalmente la utilizaremos para los dispositivos con menos de 1 ó 2 MB de memoria, en los que CDC no funcionará correctamente. Esta configuración se utilizará para teléfonos móviles (celulares) y PDAs de gama baja.
Esta configuración se ejecutará sobre la KVM, una máquina virtual con una serie de limitaciones para ser capaz de funcionar en estas configuraciones de baja memoria. Por ejemplo, no tiene soporte para tipos de datos float y double , ya que estos dispositivos normalmente no tienen unidad de punto flotante.
La API que ofrece esta configuración consiste en un subconjunto de los paquetes principales del núcleo de Java, adaptados para funcionar en este tipo de dispositivos. Los paquetes que ofrece son los siguientes:
java.lang java.io java.util
Tenemos las clases básicas del lenguaje ( java.lang ), algunas clases útiles ( java.util ), y soporte para flujos de entrada/salida ( java.io ). Sin embargo vemos que no se ha incluido la API de red ( ). Esto es debido a que esta API es demasiado compleja para estos dispositivos, por lo que se sustituirá por una API de red propia más reducida, adaptada a sus necesidades de conectividad:
En la actualidad encontramos únicamente un perfil que se ejecuta sobre CLDC. Este perfil es MIDP (Mobile Information Devices Profile), y corresponde a la familia de dispositivos móviles de información (teléfonos móviles y PDAs)
Mobile Information Devices Profile
Utilizaremos este perfil para programar aplicaciones para MIDs. En los siguientes capítulos nos centraremos en la programación de aplicaciones para móviles utilizando este perfil, que es el que más protagonismo ha cobrado tras la aparición de los últimos modelos de móviles que incluyen soporte para esta API.
La API que nos ofrece MIDP consiste, además de los paquetes ofrecidos en CLDL, en los siguientes paquetes:
Las aplicaciones que desarrollaremos para estos dispositivos se llaman MIDlets. El móvil actuará como contenedor de este tipo de aplicaciones, controlando su ciclo de vida. Tenemos un paquete con las clases correspondientes a este tipo de componentes ( ). Además tendremos otro paquete con los elementos necesarios para crear la interfaz gráfica en la pantalla de los móviles ( ), que además nos ofrece facilidades para la programación de juegos. Tenemos también un paquete con clases para reproducción de músicas y tonos ( ), para creación de certificados por clave pública para controlar la seguridad de las aplicaciones ( ), y para almacenamiento persistente de información ( ).
Paquetes opcionales
Como paquetes opcionales tenemos dos paquetes principales:
Wireless Messaging API (WMA): Nos permitirá trabajar con mensajes en el móvil. De esta forma podremos por ejemplo enviar o recibir mensajes de texto SMS.
(WMA): Nos permitirá trabajar con mensajes en el móvil. De esta forma podremos por ejemplo enviar o recibir mensajes de texto SMS. Mobile Media API (MMAPI): Proporciona controles para la reproducción y captura de audio y video. Permite reproducir ficheros de audio y video, generar y secuenciar tonos, trabajar con streams de estos medios, e incluso capturar audio y video si nuestro móvil está equipado con una cámara.
1.3.4. Otras APIs
Además de los paquetes opcionales que hemos visto podemos encontrar otros disponibles tanto para CDC como para CLDC, como son los siguientes:
Los métodos que separan físicamente las células de interés con base en características medibles tienen numerosos usos en estudios y aplicaciones clínicas, incluidas las terapias celulares. Las células también se pueden clasificar en función de las señales de las sondas extrínsecas.
La clasificación de células activadas por fluorescencia (FACS) es el medio más popular para separar una población de células en subconjuntos de acuerdo con la cantidad total de biomarcadores clave que expresa cada célula. Estos biomarcadores generalmente se detectan con anticuerpos marcados con fluorocromos.
Los especialistas en citometría de flujo de la Universidad de Newcastle (Newcastle upon Tyne, Reino Unido) y el Instituto Broad (Cambridge, MA, EUA), realizaron los últimos avances en el uso de FACS. El instrumento prototipo para este nuevo medio de clasificación es una adaptación del clasificador de células BD FACSMelody (BD Biosciences, San José, CA, EUA), considerado como el caballo de batalla para la FACS.
El nuevo método, llamado Tecnología de Imágenes BD CellView, combinó microscopía ultrarrápida y análisis de imágenes con un clasificador de células de citometría de flujo para desbloquear fenotipos espaciales para aplicaciones de clasificación de alto rendimiento. Aunque este instrumento prototipo tiene solo unos pocos canales de fluorescencia (los sistemas FACS complejos tienen muchos más), clasifica las células según el patrón espacial de fluorescencia dentro de cada célula. El sistema se basa en imágenes de fluorescencia rápidas que utilizan emisión etiquetada por radiofrecuencia y electrónica especializada de clasificación y procesamiento de señales de baja latencia, un enfoque inteligente que proporciona información espacial para cada señal.
El clasificador separó físicamente las células que tenían expresión nuclear de RelA después de nueve horas de tiempo de ejecución a una velocidad de clasificación de 14 millones de células por hora. Luego, los investigadores pudieron identificar loci específicos, cuya ablación bloqueó la translocación nuclear de RelA. Hicieron esto mediante la secuenciación de ARN guía únicos que servían como códigos de barras en las células afectadas. En general, parece que este sistema puede clasificar adecuadamente las células con base en características morfológicas complejas preespecificadas.
Las tecnologías de clasificación de células basadas en imágenes tienen innumerables aplicaciones. Los reactivos genéticos, con código de barras, que están presentes en las poblaciones de células ordenadas por imágenes se pueden secuenciar, lo que permite una poderosa eliminación de todo el genoma o exámenes de expresión exagerada. Esta aplicación amplía el número de fenotipos que se pueden examinar para identificar los genes que subyacen a los fenotipos celulares relacionados con enfermedades, un desarrollo que puede descubrir objetivos terapéuticos potenciales.
La clasificación de células basada en imágenes se puede utilizar para explorar la relación entre los fenotipos de células visibles ordenados y otras características. Las subpoblaciones de células clasificadas según características morfológicas podrían ser analizadas posteriormente en cuanto a su genoma, transcriptoma, epigenoma, proteoma o propiedades morfológicas adicionales. Además, las poblaciones ordenadas se pueden comparar según la respuesta a perturbaciones como los tratamientos farmacológicos.
Las tecnologías de clasificación requieren la clasificación de cada célula en tiempo real, y la clasificación de células con fenotipos complejos requiere aprendizaje automático. Por lo tanto, queda por ver si las células con fenotipos complejos podrían ser clasificadas con éxito. Sin embargo, juntos, estos avances en el proceso apuntan a un futuro en el que las subpoblaciones de células de precisión podrían ser purificadas y aprovechadas rápidamente. El estudio fue publicado el 5 de mayo de 2022 en la revista The New England Journal of Medicine.
Enlaces relacionados:
Universidad de Newcastle
Instituto Broad
BD Biosciences
Post a Comment