Download Sistemas Operativos II - Inicio - Instituto Tecnológico de Morelia

Document related concepts
no text concepts found
Transcript
M-Commerce
M.C. Juan Carlos Olivares Rojas
Proyecto
• Adaptación de nuestro sitio Web (proyecto
anterior) para que se adapte a nuestro celular
(XHTML normal o en su versión para móviles,
WML, etc.)
• Se verificará que se tenga acceso
tecnologías asíncronas como AJAX.
a
Agenda
Introducción
Teconologías Web móviles
Aplicaciones Móviles (J2ME / Localización)
Investigación y tendencias
Introducción
• El comercio electrónico móvil (m-commerce) es
la aplicación de TICs basadas en dispositivos
móviles y empotrados que permiten abrir
nuevos medios y mercados para el intercambio
de bienes servicios.
• Esta área ha tenido un auge debido al fuerte
aumento del cómputo persuasivo.
M-commerce y M-business
Introducción
• En el pasado (50s-60s) el paradigma de la
computación fue: “una computadora, múltiples
usuarios”.
• A finales de los 70s-80s el paradigma cambió a:
“un usuario, una computadoras”.
• A finales de los 80s-90s el paradigma fue:
“múltiples usuarios, múltiples computadoras”.
Introducción
• En el 2000, el paradigma cambió a: “un usuario,
múltiples computadoras”.
• La Web ha resultado ser una revolución en los medios
de comunicación como lo fue la radio y la televisión.
• Actualmente, se necesita acceder a la Web de
manera ubicua, en todo momento e independiente del
dispositivo y esto se logra a través de los dispositivos
móviles.
Dispositivos empotrados
Movilidad
(tamaño)
Dispositivos de cómputo móvil
Smartphone
Communicator
PalmSize
Handheld
Tablet
Notebook
Laptop
PalmSize
Comunicación
Propósito primario de uso
Procesamiento de datos
Tendencias de acceso a Internet
• Para el 2010, los dispositivos móviles reemplazarán a
las computadoras como medio de acceso a Internet
en América latina.
• A fines del 2000, casi un 5% de los hogares
latinoamericanos tenía computadora, en tanto que el
12% de las personas de la región utilizaba teléfonos
móviles.
• Los dispositivos móviles pasarán a ser una extensión
de la televisión
FUENTE: http://www.libre-comercio.com/.
Introducción
Llaves
Cartera
Celulares
Credenciales
Tarjetas
Llaves del trabajo
Periódico
Espejo
MP3/Walkman
Videojuego
Siempre
Frecuentemente
Cámara
0%
10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Grado de penetración de los dispositivos móviles en nuestra sociedad
Justificación
• Para el 2010 se espera 1,300 millones de
usuarios de PCs, por 2,500 millones de
usuarios móviles.
• Se estima que existen alrededor de 2,000
millones de usuarios de teléfonos celulares en
el mundo por un estimado de 6,500 millones
(tercera parte).
Estadísticas
Introducción
2007 56 millones
Fuente Cofetel Abril 2006
Justificación
• “Para el año 2009, más de la mitad de los
microprocesadores fabricados en el mundo estarán
destinados a dispositivos móviles. El software que
hará realmente útiles a los dispositivos móviles
todavía no es desarrollado.”
• El uso de Internet en dispositivos móviles es
sumamente limitado.
– 30 minutos al mes a la Web
– 80 SMS, 15 MMS,
– 300 minutos de voz.
Estadísticas
Aplicaciones Web móviles
• No es necesario distribuir ni instalar ninguna
aplicación.
• Se pueden realizar cálculos y algoritmos
complejos dado que la ejecución se realiza
en el servidor.
• Los navegadores Web se convierten en
clientes universales
Problemática
600
800
Los sitios Web no
están diseñados
tomando
en
cuenta
las
características y
limitaciones de los
dispositivos
móviles
Dispositivos móviles
Problemática
Problemática
• Muchos de los recursos
existentes en la Web no
pueden visualizarse en
dispositivos
móviles,
por
que
no
son
accesibles. Esto ha
originado que la Web no
sea ubicua y que esté
fragmentada.
Problemática
Página Web realizada especialmente para dispositivos móviles
Redes inalámbricas
Frecuencia
0.9/1.8/2.1
GHz
WLAN
(Wireless
LAN)
IEEE
802.11b/g/a
1, 2, 11, 54
Mb/s
2.4 y 5 GHz
Infrarrojos
Rango
35 Km
70 - 150 m
Tipo de red
Estándar
Ancho de
Banda
WWAN
(Celulares)
GSM/GPRS/E
vDo
9.6/170/2000
Kb/s
WPAN
(Bluetooth)
IEEE 802.15
721 Kb/s
2.4 GHz
10 m
Costos
Problemática
CSD: $1.5 minuto
Tamaño Tiempo
GPRS: $0.12
TareaKB
(KB)
(Segs.)
Leer noticias
2
92
Telcel
GPRS
CSD
$0.24
$3
Buscar una película y ver su sinopsis
3.7
153
$0.48
$4.5
Resultados de los partidos del fútbol
5.4
109
$0.72
$3
Buscar un numero en un directorio
5.9
100
$0.72
$3
Búsqueda de un restaurante y menú
6.3
127
$0.84
$4.5
Cargar página Web
6.7
42
$0.84
$1.5
Descargar una archivo PDF (68k)
72.4
372
$8.76
$10.5
Recibir un correo (9 KB)
11.8
74
$1.44
$3
Reenviar un correo 9 KB
12.2
74
$1.56
$3
Ver página Web de 70 KB
76.1
455
$9.24
$12
Enviar un correo con una nota y un archivo
adjunto de 50 KB
81.0
495
$9.72
$13.5
Total
285
2120
$33.12
$63
Costos de acceso a Internet en México desde un dispositivo móvil haciendo
uso de la red de telefonía celular.
Sistemas Operativos
• PalmOS
• Windows CE (Windows Mobile)
• Symbian
• Linux embedded
• RIMOS
Navegadores Web
• Pocket Internet Explorer
• NetFront
• Opera mini
• Minimo(mozilla)
• Konqueror
Otros problemas
•
Mucho mantenimiento del sitio al tener
diversas versiones del mismo.
•
Más carga del servidor.
•
Más ancho de banda requerido.
•
…
Beneficios directos
HTTP
• GET, HEAD, PUT, POST, DELETE, TRACE,
CONNECT, OPTIONS
• GET nombrearchivo HTTP/1.1
• Códigos de regreso: 1xx informativos, 2xx
éxito, 3xx redirección, 4xx Error del cliente, 5xx
error del servidor
Encabezado
• User-Agent, Accept, Host, Cookie, Date, Server,
Content-Length, Contet-Type, Last-Modified
• Si existe el recurso se devuelve al cliente
HTTP/1.1 200 Ok
Content-Length:
<html>
….
</html>
Encabezado HTTP
GET http://www.cenidet.edu.mx/ HTTP/1.0
Accept: */*
UA-OS: Windows CE (Pocket PC) –Version 3.0
UA-Color: Color16
UA-Pixeles: 240x320
UA-CPU: ARM SA1110
UA-Voice: False
UA-Language: Mozilla/2.0
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/2.0 (Compatible; MSIE 3.02; Windows CE;
PPC; 240x320)
Host: www.itmorelia.edu.mx
Proxy-Connection: Keep-Alive
X-Transform: XHTML-MP; Partial
Encabezado de una petición HTTP en un dispositivo Pocket PC
Tipos MIME
FORMATO
EXTENSIÓN DEL
ARCHIVO
TIPOS DE
CONTENIDO
FORMATOS MIME
WML
.WML
Texto
Text/vnd.wap.wml
Text/xml
WMLScript
.WMLS
Texto
Text/vnd.wap.wmlscript
HTML
.HTM/.HTML
Texto
Text/html
cHTML
.IHTML/.CHTML
Texto
Text/html
XHTML
.XHTML/HTML
Texto
Application/xhtml+xml
Text/xml
GIF
.GIF
Imagen
Image/gif
JPEG
.JPG/.JPEG
Imagen
Image/jpg
WBMP
.WBMP
Imagen
Image/vnd.wap.wbmp
PNG
.PNG
Imagen
Image/png
Image/vnd.wap.png
Recursos más empleados en dispositivos móviles (I).
Tipos MIME
FORMATO
EXTENSIÓN
ARCHIVO
MPEG
.MPG/.MPEG
Video
Video/mpeg
Video/mpeg4generic
Windows Media Video
.WMV
Video
Video/x-ms-wmv
Real video
.RV
Video
Video/vnd.rn-realvideo
MP3
.MP3
Audio
Audio/mp3
Audio/x-mp3
MIDI
.MIDI
Audio
Audio/midi
Windows Media Audio
.WMA
Audio
Audio/x-ms-wma
Real Audio
.RA
Audio
Audio/vnd.rn-realaudio
Archivo de instalación de
Windows
.CAB
Aplicación
Application/cab
Cascading Style Sheets
.CSS
Otros
Text/css
Contacto de Agenda
.VCF
Otors
Text/x-vcard
Otros
Text/x-vcalendar
Contacto de Calendario
DEL TIPOS
CONTENIDO
DE
FORMATOS MIME
Recursos más empleados en dispositivos móviles (y II).
Pasado
• Tecnologías propietarias no compatibles entre sí
como:
– HDML (Handheld Device Markup Language)
– cHTML (compact HTML)
• cHTML aun es utilizado ampliamente en Japón en el
sistema iMode.
• Un grupo de empresas crearon el WAPForum ahora
Open Mobile Alliance para solucionar la problemática
de la Web móvil
Convergencia de Lenguajes de
Marcado
1998
WAP
1999
2000
2001
HDML
WML
HTML
WAP
1.x3.2
HTML
C-HTML
XHTML Basic + WML
HTML 4.0
XHTML 1.0
i-mode
XML
2002
XML 1.0
XHTML Basic
WAP
2.x
WAP
• WAP (Wireless Access Protocol) es una pila de
protocolos para acceder a la Web, optimizada
para conexiones inalámbricas de ancho de
banda bajos, se ocupan de pasarelas para
convertir protocolos de HTTP a WAP y
visceversa.
• Los documentos que maneja WAP se basan en
WML (Wireless Markup Language)
Pila de protocolos WAP
• Entorno de Aplicaciones Inalámbricas (WAE)
• Protocolo de Sesión Inalámbrica (WSP)
• Protocolo de Transacciones Inalámbricas
(WTP)
• Capa Inalámbrica de Seguridad de Transporte
(WTLS)
• Protocolo de Datagramas Inalámbrico (WDP)
• Capa del portador(GSM, CDMA, GPRS, etc)
WAP Architecture
WAP Gateway
Data General
Web Server
WAP Tools
• Nokia WAP SDK
• WinWAP
• MobileDev
• Nokia WML Studio for Macromedia Dreamweaver
• Ericsson WAPIDE
• IBM WAPSody
WML
• Se basa en XML para definir un documento que sea
compatible con los dispositivos móviles.
• Maneja el concepto de cartas en lugar de páginas.
Los documentos se estructuran en barajas, donde una
baraja contiene varias páginas.
• WML contiene etiquetas básicas de texto, enlace,
imágenes, tablas, etc. Con algunas restricciones.
Hola mundo! En WML
• A Simple WML file
Standard header for
WML 1.1 files
<?xml version='1.0'?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML
1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="First_Card" title="First Card">
<p>
Welcome to WML!
</p>
</card>
</wml>
WML
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.WAPforum.org/DTD/wml_1.1.xml">
<wml>
<card id="card1" title="card 1">
<p>
<anchor title="anchor tag">
Ir a la segunda pantalla
<go href="#card2" />
</anchor>
</p>
</card>
<card id="card2" title="card 2">
<p>
Segunda Pantalla</p>
</card>
</wml>
Formularios en WML
<?xml version='1.0'?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="Login" title="Login">
<do type="accept" label="Password"> Login Card - the first card
<go href="#Password"/>
here
</do>
Go to Password card
<p>
when user selects it
UserName:
<select name="name" title="Name:">
Select menu – a
<option value="Charlene">Charlene</option>
common control in
<option value="Gillian">Gillian</option>
WML
<option value="Rosanne">Rosanne</option>
<option value="Race">Race</option>
</select>
</p>
</card>
(continued from previous slide)
The Password card
<card id="Password" title="Password:">
<do type="accept" label="Results">
<go href="#Results"/>
</do>
<p>
Password: <input type="text" name="password"/>
</p>
</card>
The Results card
<card id="Results" title="Results:">
<p>
You entered:<br/>
Name: $(name)<br/>
Password: $(password)<br/>
</p>
</card>
</wml>
WML
• WML tiene su propio lenguaje de script llamado
WMLScript
• Las imágenes que utiliza están en formato
WBMP que son imágenes en mapa de bits
monocromático
• WAP y WML no fueron muy utilizados debido a
que era como “ver TV en blanco y negro”
Un ejemplo de WMLScript
<?xml version='1.0'?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="Phone" title="Phone:">
<do type="accept" label="Results">
<go href="example4.wmls#validate($(Phone))"/>
</do>
<p>
Enter phone: <input type="text" name="Phone"/>
</p>
</card>
<card id="Results" title="Results:">
<p>
You entered:<br/>
Phone: $(Phone)<br/>
</p>
</card>
</wml>
Un ejemplo de WMLScript
extern function validate(Phone)
{
if (String.length(Phone) != 8)
{
WMLBrowser.setVar("Phone", "Error: Phone not
correct.");
}
WMLBrowser.go("example4.wml#Results");
}
Páginas dinámicas
• En muchas ocasiones es necesario determinar
en tiempo de ejecución algunas características
del dispositivo móvil para personalizar el
contenido, esto se puede hacer con lenguajes
como:
• PHP
• ASP
• JSP
Páginas dinámicas
<?xml version="1.0"?><!DOCTYPE wml PUBLIC
"-//WAPFORUM//DTD
WML
1.1//EN“
"http://www.WAPforum.org/DTD/wml_1.1.xml">
<wml><card
id=“volados"
title=“juegos">
<p>
<% if (Math.random() < 0.5) { %> <b> Ganaste
</b>
<% } else { %> <b> Perdiste</b> <% } %>
</p>
</card>
</wml>
WAP 2.0
• Debido a las limitaciones de WAP, surgió una
nueva versión del protocolo que al parecer
permitirá despegar la Web móvil.
• Modelo push (de actualización automática) y
modelo pull (de recepción automática)
• Soporte para
aplicaciones
integrar
telefonía
en
las
Comparativa WAP 1.0 y 2.0
• WML
•
•
•
•
WSP
WTP
WTLS
WDP
XHTML
HTTP
TLS
TCP
IP
• Capa del portador
XHTML
• Son documentos HTML que siguen la sintaxis
de cualquier documento basado en XML
(etiquetas todas que cierran, el orden es
importante, todo los parámetros entre comillas,
etc).
• El origen de XHTML surge a partir de las
ambigüedades que presenta HTML como
lenguaje, ayuda a estructurar de mejor forma
la Web.
XHTML Basic
• Es un subconjunto de etiquetas de XHTML que
han sido probadas en dispositivos móviles
• XHTML-MP
(Mobile
Profile)
es
una
especificación de Nokia seguida por otras
compañías que utilizan XHTML Basic sobre
dispositivos móviles.
• ¡Por fin llegó el color a la Web móvil!
Página Web con XHTML-MP
XHTML-MP
•
•
•
•
•
•
•
•
•
•
•
Estructura: body, head,html, title
Texto: br,code,dfn,em,kbd, p, strong
Hipertexto: a
Lista: dl,dt,dd,ol,ul,li
Formularios*: form, input, label, option
Tablas*: caption, table, td, th, tr
Imagen*: img
Objeto*: object, param
Metainformación*: meta
Vínculo*: link
Base*: base
* Opcionales
XHTML-MP
<?xml version="1.0" encoding=“ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD
XHTML
Mobile
1.0//EN"
"http://www.openmobilealliance.org/tech/DTD/x
html-mobile10.dtd">
<html>
<head><title>Inst.
Tec.
Sup.
Huetamo<title></head>
<body><p>Tecnológicos:
<a
href="http://itm.mx/">
Inst.
Tec.
de
Morelia</a></p></body></html>
Estilo de Fuentes
<?xml version="1.0"?>
<!DOCTYPE
html
PUBLIC
"-//WAPFORUM//DTD
"http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Font Style</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div>
<b>Bold</b><br/>
<i>Italic</i><br/>
<b><i>Bold italic</i></b><br/>
<small>Small</small><br/>
<big>Big</big><br/>
<em>Emphasis</em><br/>
<strong>Strong</strong>
<h1>h1</h1>
<h2>h2</h2>
<h3>h3</h3>
</div>
</body>
</html>
XHTML
Mobile
1.0//EN"
Listas
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN"
"http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Unnumbered Lists</title>
</head>
<body>
<div><em>Unnumbered List:</em></div>
<ul>
<li>First Item</li>
<li>Second Item</li>
<li>Third Item</li>
<li>And so on...</li>
</ul>
</body>
</html>
Tablas
<head>
<title>An XHTML MP Table</title>
</head>
<body>
<table>
<tr>
<td>Item 1</td>
<td>Item 2</td>
</tr>
<tr>
<td>Item 3</td>
<td>Item 4</td>
</tr>
</table>
</body>
Ejemplo de Accesibilidad
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//OPENWAVE//DTD XHTML Mobile
1.0//EN" "http://www.openwave.com/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>XHTML Samples</title>
</head>
Quick access key
<body>
<ol>
<li><a accesskey="1" href="inbox.html">Check
emails</a></li>
<li><a accesskey="2" href="movies.html">Movies
Info</a></li>
<li><a accesskey="3" href="about.html">About</a></li>
</ol>
</body>
</html>
Uso de estilos
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN"
"http://www.wapforum.org/DTD/xhtml-mobile10.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XHTML Mobile Profile Document</title>
<!-Change href="style.css" below to the file name and
relative path or URL of your external style sheet.
-->
<link rel="stylesheet" href="style.css"
type="text/css"/>
<!-<style> document-wide styles would go here </style>
-->
</head>
<body>
<h1> Heading </h1>
<p>
Body
</p>
</body>
</html>
Ejemplo de CSS para móviles
body { background-color: #efefdd; font-family: Arial, Verdana, Helvetica;
font-size: 10pt; color: #000044;}
div {
font-family: Arial, Verdana, Helvetica; font-size: 10pt; color: #000044;}
hr { color:#006600;}
h1 {font-family: Verdana, Arial, Helvetica; font-size: 14pt; color: #000000;}
h2 {font-family: Verdana, Arial, Helvetica; font-size: 12pt; color: #000000;}
h3 {font-family: Verdana, Arial, Helvetica; font-size: 10pt;font-weight:bold;
color: #00000;}
a { color: #1144aa; text-decoration: none;}
a:hover { text-decoration: underline;}
a:visited { color: #4466cc;}
Web 2.0
• Utilizan conocimiento colectivo a través de la
participación de los usuarios.
• Proporcionan servicios interactivos en red.
• Buscan mejorar la experiencia del usuario.
• Explotan el factor social de
centrándose en el usuario final.
la
Web,
Comparativa Web 1.0 y Web 2.0
• Web 1.0
•
•
•
•
•
Ofoto
Britannica
Sitios personales
Page views
CMS
Web 2.0
Flickr
Wikipedia
Blogs
Cost per click
Wikis
Otras aplicaciones Web 2.0
• Google Earth
• Yahoo mail! (Rich Internet Application)
• Youtube (Mashup Composite Model)
• Vistas previas de páginas
Fundamentos Web 2.0
• Utilización de los estándares XML (XHTML)
• Uso de hojas de estilo
• Sindicación de contenidos ( RSS )
• AJAX (Asincronous Javascript And XML).
Web 2.0 en dispositivos móviles
• Aún es muy joven está tecnología y en
dispositivos móviles apenas se empieza.
• El navegador Web en el dispositivo móvil tiene
que soportar el objeto HttpRequest o similar.
• Debido a la alta interactividad, el dispositivo
móvil necesita de mayor capacidad de
cómputo.
Mobile Web Forms
• Están basados en tecnología ASP .NET
• Son formularios genéricos (clases) que
dependiendo del tipo de dispositivo se adaptan
a las características de éste.
• Este tipo de independencia de dispositivo e
interfaz es similar al mostrado por los struts de
Java que se basan en el patrón arquitectónico
MVC (Modelo-Vista-Controlador).
DIAL
• Device Independent Authoring Language,
Lenguaje de diseño independiente del
dispositivo, es un nuevo estándar propuesto
por el W3C para el diseño de contenido Web
en dispositivos móviles.
• Está basado en el nuevo estándar XHTML 2.0
y DISelect (Selección de contenidos para
dispositivos independientes) para permitir la
adaptación de la entrega de contenidos en
múltiples plataformas.
DIAL
Otras tecnologías
• Flash Lite es una versión de flash diseñada para
dispositivos móviles
• SVG (Sacalable Vector Graphics) es un formato de
gráficos vectoriales basado en XML. Reduce mucho el
tamaño de las imágenes
• SMIL (Synchronized Multimedia Integration Language)
es un lenguaje de multimedia basado en XML.
MobileOK
• Es un esquema comprendido por dos etiquetas
llamadas mobileOK Nivel 1 y Nivel 2.
• Estas etiquetas indican que el contenido pasa las
pruebas de “Mobile Web Best Practices”.
• Las de nivel 1 contienen las recomendaciones básicas
para una experiencia efectiva de la Web en usuarios
móviles.
• Las de nivel 2, necesitan ser verificadas por humanos
(en algunos) casos pero ayudan a la mejor
visualización de la Web en dispositivos móviles.
Formas de redirección
•
En la actualidad, es importante que los
usuarios pueda ver recursos Web acorde al
tipo de dispositivo utilizado; por ejemplo:
google
•
Dar
la
URL
directamente
(http://www.mistio.com/index.wml)
•
Crear
un
subdominio
(http://wap.misitio.edu.mx)
del
sitio.
Formas de redirección
• Utilizar un Proxy para redireccionar. (Revisar
encabezados: User-Agent y Accept).
• Utilizar páginas dinámicas para redireccionar
dependiendo del perfil del dispositivo.
• La mejor opción consiste en realizar la
redirección desde el propio servidor Web.
Redirección de un sitio
• El paso final consiste en
modificar
el
archivo
httpd.conf del servidor
Apache. En primer lugar
se deberá validar si el
módulo mod_rewrite está
habilitado: LoadModule
rewrite_module
modules/mod_rewrite.so
Redirección de un sitio Web
• #Script para redireccionar paginas a WML
• RewriteEngine on
• #Dispositivos Windows Mobile
• RewriteCond
%{HTTP_USER_AGENT}
"Windows
CE"
RewriteRule
^/$
/index.wml [L]
Patrones para redirección
• PPC
• PlayStation
• PalmOS
• PDA
• Vodafone
• Motorola
• CHTML
• Blackberry
• NetFront
• ARM
Diseño accesible de páginas Web
• La accesibilidad es la propiedad de poder
visualizar una página Web sin importar las
discapacidades de las personas.
• Los dispositivos móviles se consideran
dispositivos con capacidades limitadas por que
algunos están ciegos (no ven imágenes o si las
ven son monocromáticas), mudos (no tienen
altavoz), capacidades de pensar (memoria),
etc.
Diseño accesible de páginas Web
• Existe actualmente una tendencia por certificar
procesos en todas las áreas.
• Si nuestra página Web cumple con ciertos
requisitos puede certificarse y poner algún
distintivo que lo muestre (logo)
• La WAI (Web Accesibilty Iniative) es la parte del
W3C que se encarga de la accesibilidad a los
recursos de la Web.
Diseño accesible de páginas Web
• La WAI define tres prioridades:
• En la prioridad uno, los desarrolladores TIENEN que
cambiar para hacer accesible su sitio Web.
• En la prioridad dos, se DEBEN satisfacer los cambios.
• En la prioridad tres, PUEDEN satisfacerse los
cambios.
Diseño accesible de páginas Web
• El nivel adecuación A, cumple la prioridad 1, el
AA cumple 1 y 2; mientras que AAA cumple las
tres prioridades. Existen logotipos para
certificar estos niveles de adecuación.
• Existen otras certificaciones de accesibilidad
como el 508, recomendaciones y buenas
prácticas, MobileOK, etc.
MobileOK
• La etiqueta de validación puede ser un logo o
un documento en RDF.
• Se sugiere la inclusión
encabezado HTTP:
del
siguiente
• User-Agent:
W3C
mobileOK
DDC
(http://www.w3.org/2006/07/mobileok-ddc)
• Accept:
application/vnd.wap.xhtml+xml,
application/xhtml+xml
MobileOK
• Características de Nivel 1
• Auto refresco de página:
• Si está presente la etiqueta <meta httpequiv="refresh"
content="(URI)"/>,
el
documento falla.
• Soporte para caracteres de codificación
• Si el documento no define un tipo de
codificación o no viene incluido en la respuesta
(Content-Type) se define una alarma.
MobileOK
• Si el documento tiene definido un tipo de
codificación pero es diferente de “UTF-8”, la
prueba falla.
• Soporte del formato del contenido
• Si el tipo MIME del documento no es
application/vnd.wap.xhtml+xml
o
application/xhtml+wml, la prueba falla.
MobileOK
• Si el identificador DOCTYPE PUBLIC no es XHTML
Basic ("-//W3C//DTD XHTML Basic 1.1//EN" or "//W3C//DTD XHTML Basic 1.0//EN”) falla.
• Para cada etiqueta img, link o style, si el tipo MIME
del recurso enlazado es diferente de text/css,
image/png o image/gif, la prueba fallará.
• Mapa de imágenes
• Si una etiqueta map o area está presente, la prueba
falla.
MobileOK
• Gráficos para espaciado
• Para cada etiqueta img, si la imagen es de
dimensiones 2 píxeles o menor, y los píxeles
son transparentes, se viola la norma.
• Tamaño de las imágenes
• Para cada etiqueta img si no está definida el
atributo height y width se lanza una alarma.
MobileOK
• Métricas
• Para cada hoja de estilo CSS o etiqueta style,
Ssi las medidas son absolutas (“px”, “pt”, “pc”,
“in”, “cm”, “mm”), no pasará la certificación.
• No marcos
• Si el documento contiene las etiquetas: frame,
framset, o iframe; no se certificará.
• Alternativas no texto
• Para cada etiqueta img si el atributo alt no está
presente, la prueba no pasará.
MobileOK
• Objetos y scripts
• Si una etiqueta script, object o applet está presente, el
documento no se certificará.
• Tamaño límite de la página
• Si el documento es mayor de 10 KB, no pasará la
prueba.
• Si el tamaño total del documento incluyendo hojas de
estilo e imágenes sobrepasa 20 KB, tampoco se
certificará con el logo de mobileOK.
MobileOK
• Título de la página
• Si la etiqueta title no está presente dentro del
head del documento, no se acreditará el test.
• Ventanas desplegables (Pop-ups)
• Para cada etiqueta a, si el elemento target está
presente, la prueba no pasará.
• Proveer valores predeterminados
• Para cada etiqueta input si type=radio se debe
verificar que exista un atributo checked, de lo
contrario no pasará la prueba.
MobileOK
• Para cada etiqueta input del tipo type=”select”
para cada etiqueta option se deberá verificar
que exista un elemento con la propiedad
selected, de lo contrario, el sistema fallará.
• Tamaño de las hojas de estilo
• El tamaño de una hoja de estilo no deberá
exceder los 5 KB.
MobileOK
• Uso de hojas de estilo
• Si el atributo style no está presente en el
documento, la prueba fallará.
• Despliegue de tablas
• Si la etiqueta table existe, para cada
etiqueta td anidada si la etiqueta está
vacía o contiene una imagen de 1x1
píxeles, no acreditará el test de
certificación.
MobileOK
• Tablas anidadas
• Si dentro de una etiqueta table, existe por
lo menos otra etiqueta table, la prueba de
validación no se acreditará.
• Validación de marcado
• Si el documento no basa la prueba de
validación de acuerdo a su DOCTYPE o
esquema XSD, no se certificará.
MobileOK
• Características del
mobileOK nivel 2
• Estas características
mobileOK nivel 1.
nivel
son
de
certificación
adicionales
a
• Eliminar texto libre
• Si el documento no tiene una etiqueta input
type=”text” o textarea, la prueba pasará.
MobileOK
• Legibilidad de imagen de fondo
• Para cada etiqueta style u hoja de estilo, si está
presente la propiedad background-image, se
deberá verificar por humanos para validar el
test.
• Caching
• Si el encabezado de respuesta no contiene un
encabezado Cache-Control, no se acreditará la
prueba.
MobileOK
• Cookies
• Si la respuesta no contiene un encabezado
Set-Cookie, se acreditará la prueba.
• Fuentes
• Para cada etiqueta style u hoja de estilo, si las
propiedades relacionadas con tipos de letras
están presentes (font, font-family, font-weight,
etc.) se procede con las pruebas humanas.
MobileOK
• Scrolling
• Para cada etiqueta img, style u oja estilo si el
atributo width excede de 120, la prueba fallará.
• Estructura
• Para cada elemento h1, h2, h3, etc., si existe
un elemento anidado h1, h2, h3, etc., se deberá
verificar que sea menor o igual a su padre.
Diseño de Mapa de Sitio
Malo
Bueno
Tipos de Aplicaciones Móviles
• Stand-alone (autónomas)
• Online (clientes ligeros, desarrollos
Web móviles)
• Smart client (aquellos
sensibles al contexto)
que
son
Herramientas
• J2ME (Java 2 Micro Edition)
• .NET Compact Framework
• Aplicaciones Nativas (C, C++): eMbedded
Visual Tools: está conformada por
eMbedded Visual Basic y eMbedded Visual
C++. SDK de Symbian, etc.
.NET CF
Controles ASP.NET
Mobile
Páginas Web
remotas
Navegador Web
móvil
Programación
Smart Device
Código Local
.NET Compact
Framework
Sistema Operativo
J2ME
Linux embedded
Linux embedded
Solución
• Estudiar las capacidades y limitaciones de
los dispositivos móviles para saber que se
puede hacer en el dispositivo y que cosas
son imposibles de implementar.
• Desarrollar una interfaz adecuada que
minimice las acciones por parte del usuario y
que se adapte al tamaño de las pantallas de
despliegue. Las interfaces deben ser
intuitivas.
Solución
• El acceso a los datos debe de ser en forma
estructurada utilizando XML, o bien si se
permite un manejador de BD empotrado.
• Utilizar herramientas de profiling para medir el
rendimiento.
• Hacer hincapié en el reuso.
101
Solución
• Utilizar servicios Web (SOA) para la
implementación de los procesos de negocio.
Esto permite consumirlo en diversas clases de
aplicaciones.
• Se debe construir tarde (entender todos los
requerimientos).
• Usar datos reales. Nada de datos de prueba,
se necesitaría invertir dos veces más tiempo.
102
Solución
• Realizar refactorización de código para mantener las
aplicaciones más entendibles o bien consumir menos
espacio en aplicaciones Web.
• Usar
implementaciones
emuladores.
reales.
No
utilizar
• Mezclar siempre programadores con probadores de
software. Probar con muchos usuarios de distintos
tipos.
Solución
• Evitar lo más posible el copy & paste (utilizar
métodos de refactorización).
• Tomar en consideración todos los warnigs, de
preferencia tratarlos como errores.
• Codificar con propósito. Realizar funciones que
se van a ocupar. No realizar código de más.
104
Solución
• Se deben tomar en cuenta factores de
usabilidad, accesibilidad y ergonomía de las
interfaces de usuario.
• Los mensajes de salida deben de ser breves.
Se deben considerar interfaces en donde el
usuario escriba menos.
• Reducir el número de interfaces. Entre menos
más fácil de usar y encontrar errores.
105
Solución
• Utilizar patrones de diseño en la solución. Se
recomienda utilizar el patrón MVC (ModeloVista-Controlador). Existen muchos tipos de
patrones para problemas conocidos.
Implementación del
Patrón Singletón
106
Patrón MVC
Solución
• Activar las opciones de optimización de los
compiladores que de manera predeterminada
vienen desactivada por que lo hacen más lento.
• Realizar código que sea portable para utilizarlo
en distintas plataformas.
• Las aplicaciones deben basarse en estándares
(en Web utilizar MobileOk)
107
Solución
• Utilizar conexiones a las BD el menor tiempo
posible (cerrar conexiones innecesarias)
• De ser posible, utilizar procedimientos
almacenados. Paginar los Recordsets.
• Las aplicaciones para dispositivos móviles
deben de estar optimizadas en dos aspectos
cruciales: tamaño y velocidad.
108
Optimización del tamaño
• Evitar el uso de objetos siempre que sea
posible.
• Cuando usamos objetos, debemos reciclarlos
siempre que se pueda.
• Limpiar objetos explícitamente cuando se dejen
de usar. Los recolectores de basura no son del
todo eficientes.
109
Optimización del tamaño
• Usar un ofuscador para reducir tamaño y hacer
ilegible nuestro código.
• Realizar empaquetamiento de las clases a
través de un archivo jar o mecanismos
similares.
• La optimización de velocidad
importante. A continuación se
ejemplos muy sencillos.
110
es muy
muestran
Optimización de velocidad
• Eliminar evaluaciones innecesarias:
for(int i=0; i<size(); i++)
a = (b+c) / i;
• Optimizado:
int tmp = b+c;
int s = size();
for(int i=0; i<s; i++)
a = tmp / i;
111
Optimización de velocidad
• Eliminar subexpresiones comunes:
b = Math.abs(a) * c;
d = e / (Math.abs(a) + b);
• Optimizado:
int tmp = Math.abs(a);
b = tmp * c;
d = e / (tmp + b);
112
Optimización de velocidad
• Aprovechar las variables locales:
for (int i=0; i <1000; i++)
a = obj.b * i;
• Optimizado:
int localb = obj.b;
for (int i=0; i <1000; i++)
a = localb * i;
113
Optimización de velocidad
• Expandir los ciclos:
for(int i=0; i <1000, i++)
a[i] = 25;
• Optimizado:
for(int i=0; i <100; i++) {
a[i++] = 25;
a[i++] = 25; //8 veces más
}
114
Optimización de velocidad
• Si se usan métodos gráficos solo actualizar las partes
de la pantalla que cambian.
• Evitar la creación de objetos intermedios. Por ejemplo:
cada vez que se concatena una cadena se crea un
objeto intermedio. En Java en lugar de String se
recomienda StringBuffer.
• Utilizar metodologías de software libre (ej. La Catedral
y el Bazar de Erick S. Raymond)
115
J2ME
• La edición Java 2 Micro Edition fue
presentada en 1999 por Sun Microsystems
con el propósito de habilitar aplicaciones
Java para pequeños dispositivos.
• En esta presentación, lo que realmente se
enseñó fue una primera versión de una
nueva Java Virtual Machine (JVM) que podía
ejecutarse en dispositivos Palm.
J2ME
• Java Micro Edition es la versión del lenguaje
Java que está orientada al desarrollo de
aplicaciones para dispositivos pequeños con
capacidades restringidas tanto en pantalla
gráfica, como de procesamiento y memoria
(teléfonos móviles, PDA`s, Handhelds,
Pagers, etc).
Versiones de Java
J2ME
• Un entorno de ejecución de J2ME se
compone de:
•
•
•
•
Máquina virtual.
Configuración.
Perfil.
Paquetes Opcionales.
J2ME
• Las diferentes tecnologías Java comparten
un conjunto más o menos amplio de APIs
básicas
del
lenguaje,
agrupadas
principalmente en los paquetes java.lang y
java.io.
• J2ME contiene una mínima parte de las APIs
de Java. J2ME usa 37 clases de la
plataforma J2SE provenientes de los
paquetes java.lang, java.io, java.util.
J2ME
• J2ME a diferencia de J2SE utiliza una
máquina virtual distinta de la clásica JVM
denominada KVM.
• Esta KVM tiene unas restricciones que hacen
que no posea todas las capacidades
incluidas en la JVM. J2ME es un subconjunto
de J2SE (excepto por el paquete
javax.microedition).
J2ME
• Las configuraciones, que son un conjunto de
clases básicas orientadas a conformar el
corazón de las implementaciones para
dispositivos de características específicas.
Existen 2 configuraciones definidas en J2ME:
• Connected Limited Device Configuration
(CLDC) enfocada a dispositivos con
restricciones de procesamiento y memoria.
La VM (Virtual Machine) de la configuración
CLDC se denomina KVM.
J2ME
• Connected Device Configuration (CDC)
enfocada a dispositivos con más recursos. La
VM (Virtual Machine) de la CDC se denomina
CVM.
J2ME
• No hay soporte para tipos de punto flotante,
no existen los tipos double ni float (MIDP
1.1).
• No existe soporte para JNI (Java Native
Interface).
• Limitada capacidad para el manejo de
excepciones
• Reflexión.
J2ME
J2ME
• La CVM (Compact Virtual Machine) ha sido
tomada como Máquina Virtual Java de
referencia para la configuración CDC y
soporta las mismas características que la
Máquina Virtual de J2SE.
• Está orientada a dispositivos electrónicos con
procesadores de 32 bits de gama alta y en
torno a 2Mb o más de memoria RAM.
J2ME
J2ME
NOMBRE DE PAQUETE CDC
java.io
java.lang
java.lang.ref
java.lang.reflect
java.math
java.net
java.security
java.security.cert
java.text
java.util
java.util.jar
java.util.zip
javax.microedition.io
NOMBRE DE PAQUETE CLDC
java.io
java.lang
java.util
javax.microedition.io
DESCRIPCION
Clases de interfaces estándar de E/S.
Clases básicas del lenguaje.
Clases de referencia.
Clases e interfaces de reflection.
Paquete de matemáticas.
Clases e interfaces de red.
Clases e interfaces de seguridad.
Clases de certificados de seguridad.
Paquete de texto.
Clases de utilidades estándar.
Clases y utilidades para archivos .JAR.
Clases y utilidades para archivos ZIP y comprimidos.
Clases e interfaces para conexión genérica CDC.
DESCRIPCION
Clases y paquetes estándar de E/S. Subconjunto de J2SE.
Clases e interfaces de la Máquina Virtual. Subconjunto de J2SE.
Clases, interfaces y utilidades estándar. Subconjunto de J2SE.
Clases e interfaces de conexión genérica CLDC.
J2ME
• Los perfiles identifican un grupo de
dispositivos por la funcionalidad que
proporcionan (electrodomésticos, teléfonos
móviles, etc.) y el tipo de aplicaciones que se
ejecutarán en ellos.
• Las librerías de la interfaz gráfica son un
componente muy importante en la definición
de un perfil. Aquí nos podemos encontrar
grandes diferencias entre interfaces, desde el
menú textual de los teléfonos móviles hasta
los táctiles de los PDAs.
J2ME
• Para la configuración CDC tenemos los
siguientes perfiles:
• Foundation Profile.
• Personal Profile.
• RMI Profile.
• Para la configuración CLDC tenemos los
siguientes:
• PDA Profile.
• Mobile Information Device Profile (MIDP).
J2ME
J2ME
PAQUETES DEL FOUNDATION PROFILE
java. Lang
java.util
java.net
java.io
java.text
java.security
DESCRIPCION
Soporte del lenguaje.
Añade soporte completo para zip y otras funcionalidades (java.util.Timer)
Incluye sockets TCP/IP y conexiones HTTP.
Clases Reader y Writer de J2SE.
Incluye soporte para internacionalización.
Incluye códigos y certificados.
PAQUETES DEL PERSONAL PROFILE
java. applet
java.awt
java.awt.datatransfer
java.awt.event
java.awt.font
java.awt.im
java.awt.im.spi
java.awt.image
java.beans
javax.midlet.xlet
DESCRIPCION
Clases necesitadas para crear applets o que son usadas por ello.
Clases para crear GUIs con AWT.
Clases e interfaces para transmitir datos entre aplicaciones.
Clases e interfaces para manejar eventos AWT.
Clases e interfaces para manipulación de fuentes.
Clases e interfaces para definir métodos editores de entrada.
Interfaces que añaden el desarrollo de métodos editores de entrada.
Clases para crear y modificar imágenes.
Clases que soportan JavaBeans .
Interfaces que usan el Personal Profile para la comunicación.
J2ME
PAQUETES DEL MIDP
javax.microedition.Icdui
javax.microedition.rms
javax.microedition.midlet
javax.microedition.io
java.io
java.lang
java.util
DESCRIPCION
Clases e interfaces para GUIs.
Soporte para el almacenamiento persistente del dispositivo.
Clases de definición de la aplicación.
Clases e interfaces de conexión genérica.
Clases e interfaces de E/S básica.
Clases e interfaces de la Máquina Virtual.
Clases e intefaces de utilidades estándar.
J2ME
• El proceso para llevar a cabo la creación de
un MIDlet es el siguiente:
•
•
•
•
•
Crear el MIDlet
Escribir el código y compilar.
Preverificar el código.
Empaquetar en JAR y crear el archivo JAD.
Ejecutar el emulador.
J2ME
• Las aplicaciones MIDP deben implementar
los siguientes tres métodos:
• startApp (): Este método es utilizado para la
ejecución del MIDlet. Su objetivo es ejecutar
la aplicación y solicitar recursos.
• pauseApp (): Este método es invocado por el
sistema para solicitarle al MIDlet que haga
una pausa. Libera los recursos adquiridos por
el método starApp ().
J2ME
• destroyApp (boolean unconditional): Este
método es llamado por el sistema antes de
que sea destruido el MIDlet. Además libera
todos los recursos adquiridos.
• Los MIDlets son empaquetados en carpetas
.JAR junto a imágenes, logos, para formar
una MIDlet suite.
J2ME
J2ME
• Cada archivo .JAR lleva asociado un archivo
.JAD (Java Application Descriptor, Descriptor
de Aplicación Java) que es utilizado para
gestionar la instalación.
• El archivo .JAM (Java Application Manager,
Manejador de Aplicaciones Java) es el
encargado de gestionar la descarga y la
instalación de los MIDlets.
J2ME
• Los MIDlets tienen atributos obligatorios y
opcionales
ATRIBUTOS OBLIGATORIOS
MIDlet-Name
MIDlet-Versión
MIDlet-Vendor
MIDlet-<n> (name, icon, class)
MicroEdition-Profile
MicroEdition-Configuration
ATRIBUTOS OPCIONALES
MIDlet-Description
MIDlet-Icon
MIDlet-Info-URL
MIDlet-Data-Size
J2ME
• Para poder instalar un MIDlet en un teléfono
celular del cliente se siguen los siguientes
pasos:
• Paso 1: El Cliente pide una el fichero JAD.
• Paso 2: El fichero JAD es descargado al
Cliente.
• Paso 3: El JAM verifica el archivo JAD.
• Paso 4: Se descarga la MIDlet suite al
Cliente.
J2ME
J2ME
J2ME
J2ME
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class hola extends MIDlet {
private Display pantalla;
private Form formulario = null;
public hola() {
pantalla = Display.getDisplay(this);
formulario = new Form("Hola Mundo");
}
J2ME
public void startApp(){
pantalla.setCurrent(formulario);
}
public void pauseApp(){
}
public
void
destroyApp(boolean
unconditional){
pantalla = null;
formulario = null;
notifyDestroyed();
}}
J2ME
• La clase Display representa el manejador de
la pantalla y los dispositivos de entrada.
• Todo MIDlet debe poseer por lo menos un
objeto Display.
• En este objeto Display podemos incluir tantos
objetos Displayable como queramos.
J2ME
• La clase Display puede obtener información
sobre las características de la pantalla del
dispositivo donde se ejecute el MIDlet,
además de ser capaz de mostrar los objetos
que componen nuestras interfaces.
• Todo MIDlet debe poseer al menos una
instancia del objeto Display. Para obtenerla
se utiliza:
J2ME
• Dentro del método startApp tendremos que
hacer referencia a la pantalla que queramos
que esté activa haciendo uso del método:
setCurrent()
• Hay que tener en cuenta que cada vez que
salimos del método pauseApp, entramos en
el método startApp, por lo que la construcción
de las pantallas y demás elementos que
formarán parte de nuestro MIDlet la
tendremos que hacer en el método
constructor.
J2ME
J2ME
javax.microedition.lcdui
• Interfaces:
•
•
•
•
Choice
CommandListener
ItemCommandListener
ItemStateListener
javax.microedition.lcddui
•
•
•
•
•
•
•
•
•
Alert
AlertType
Canvas
ChoiceGroup
Command
CustomItem
DateField
Display
Displayable
javax.microedition.lcdui
•
•
•
•
•
•
•
•
•
Font
Form
Gauge
Graphics
Image
ImageItem
Item
List
Screen
javax.microedition.lcdui
•
•
•
•
•
Spacer
StringItem
TextBox
TextField
Ticket
javax.microedition.lcdui.game
•
•
•
•
•
GameCanvas
Layer
LayerManager
Sprite
TiledLayer
• Los IDEs más recientes nos permiten mostrar
información de las clases y objetos a través
de etiquetas inteligentes.
J2ME
• Muchas de las funcionalidades básicas de
Java se pueden implantar de manera directa
en J2ME como el manejo de primitivas
gráficas.
• La clase más básica es la Graphics, la cual
tiene métodos que nos permiten dibujar sobre
un lienzo Canvas.
J2ME
• Generalmente se utilizan dentro del método
paint() de un Applet o de una aplicación
gráfica.
• Los métodos repaint() y update son variantes
del método paint().
J2ME
• El método repaint() se utiliza cuando se
desea volver a dibujar la pantalla (lo cual es
muy frecuente en los sistemas gráficos
multitarea) y dibuja toda la pantalla. El
método update() sólo actualiza una región de
la pantalla. Muy utilizado en componentes
gráficos como botones o listas desplegables.
J2ME
• La clase Graphics se encuentra dentro del
paquete java.awt.*;
• El método drawString() permite dibujar una
cadena de texto en la pantalla.
• El método drawLine() dibuja una línea en la
pantalla. El método drawRectangle() permite
dibujar un rectángulo en pantalla.
J2ME
• El método drawOval permite definir óvalos y
circulos. El método drawImage() permite
mostrar imágenes en pantallas.
• El método clearRect() permite borrar un área
de la pantalla. El método copyArea() copia
un área de memoria. Esto se utiliza en los
métodos de recorte (clip).
• Métodos como drawPolygon y drawPolyline()
permiten definir figuras más elaboradas.
J2ME
• Los métodos que inician con fill, como
fillOval(), fillRect(), etc., realizan las mismas
figuras pero pintan el relleno de las figuras.
• Otros elementos a considerar para el manejo
de gráficos son el color y las fuentes (tipos de
letras). Java define clases para manipular
estos objetos gráficos de manera amplia.
J2ME
• Los métodos getFont(), setFont(), getColor()
y setColor() permiten manipular fuentes y
colores.
• La clases Font y Color se encuentran
definidas también en java.awt.*
• El método translate() de Graphics() permite
cambiar el punto de referencia que de
manera predeterminada es 0,0 para esquina
superior izquierda.
J2ME
• La clase Color define el modelo de color a
emplear, cuenta con algunas constantes para
cada tipo de color como orange, yellow,
darkgray, etc. El color está dado por tres
valores uno para el rojo, otro para el verde y
otro para el azul.
• Se cuentan además con métodos para
manipular los atributos de la clase.
J2ME
• La clase Font permite el manejo de fuentes
en pantalla. El constructor de esta clase
recibe tres argumentos: el nombre de la
fuente, el estilo de la fuente y el tamaño.
• El estilo de la fuente está definido por tres
constantes PLAIN (normal), BOLD (negrita) e
ITALIC (cursiva). Se cuenta además con
métodos auxiliares para manipular los
atributos de la clase.
J2ME
• Una fuente no es otra cosa que una colección
de imágenes que representan los caracteres
de un sistema.
• Se cuenta además con la clase FontMetrics
que define algunas métricas de la fuente:
altura, bajada, la subida, la interlínea, etc.
J2ME
• También se pueden dibujar figuras 3D muy
sencillas con métodos como draw3DRect y
fill3DRect que dan profundidad a las
imágenes.
• Algunas de estas funcionalidades dependen
del perfil y de la configuración del dispositivo.
Introducción
• Se puede obtener el contexto gráfico de una
imagen y manipularla como si fuera un objeto
Graphics. Ejemplo:
Font
letra
=
Font.getFont(Font.FACE_MONOSPACE,
Font.SIZE_SMALL, Font.STYLE_PLAIN);
Image
logo
=
Image.createImage(letra.stringWidth(“Hi!”))
Graphics gr = logo.getGraphics();
…
J2ME
• Existen algunas APIs especiales para el
manejo de gráficos en dispositivos móviles
como
los
definidos
por
Nokia
(com.nokia.mid.ui) que contiene clases como
DirectGraphics.
• También se pueden manejar otro tipos de
elementos como multimedia, sprites, etc.
También se cuenta con la clase Graphic3D
para gráficas en 3D.
J2ME
• Realizar un programa que implemente a
través de un formulario la graficación de las
funciones: x2 + 1, 3x2 - 1, x+1 y x3 + x -5.
• El usuario dará los posibles valores de X en
un formulario de 5 elementos.
• Nótese que no hay una clase visual para
desarrollar gráficos en NetBeans.
J2ME
• También se puede realizar la conexión a
redes, para ello se deberá utilizar el paquete
javax.microedition.io.*
• Se deberá definir una conexión a través de la
clase StreamConnection, abriendo buffers de
entrada y salida con las clases InputStream y
OutputStream Respectivamente.
• Conexión = Connector.open(URL);
J2ME
• out = conexión.openOutputStream();
• In = conexión.openInputStream();
• Se lee el flujo con in(), se sugiere almacenar
los datos en un StringBuffer e ir agregando
datos con el método append()
• Se puede mejorar las conexiones si se utiliza
el objeto HttpConnection, aunque sólo aplica
a conexiones Web.
J2ME
• La información hasta ahora manejada ha sido
de tipo no persistente, de tal forma que al
terminar la aplicación y volverla a ejecutar,
no se pueden recuperar los datos.
• Para lograr persistencia se requiere de la
manipulación de archivos, elemento que no
está presente en la mayoría de los
dispositivos móviles con CLDC/MIDP.
J2ME
• Para lograr la persistencia se requiere de un
motor de persistencia conocida como RMS
(Record Management System) que no es otra
cosa que una pequeña base de datos
empotrada en el dispositivo.
• La unidad básica de almacenamiento de la
información es el registro (record), ubicado
en un almacén de registros (record store).
J2ME
un registro
• Antes de operar
se debe abrir o
crear. Las operaciones pueden ser de lectura
y escritura.
• Se utiliza el paquete javax.microedition.rms.*
• La clase RecordStore tiene los siguientes
métodos:
• openRecordStore()
• closeRecordStore()
J2ME
•
•
•
•
•
•
•
deleteRecordStore()
getName()
getNumRecords()
addRecord()
getRecord()
deleteRecord()
enumerateRecords()
J2ME
• Se cuentan con las interfaces de:
– RecordEnumeration
– RecordComparator
– RecordFilters
– RecordListener
• Los datos a agregar deben estar en formato
de un arreglo de bytes
• rs.addRecord(bytes, 0, bytes.length)
Cómputo Ubicuo y AMI
Inteligencia Ambiental
¿Qué se necesita para AMI?
¿Qué? WHAT
¿Donde?
WHERE
Realizar servicios solos
Consciencia
del
dispositivo
Realizar servicios
coordinados
¿Quién? WHO
¿Cómo? HOW
¿Cuándo? WHEN
Context-Aware y SOA
LBS
• Los servicios basados en localización
buscan ofrecer un servicio personalizado a
los usuarios, basado en la información de
ubicación geográfica de éstos.
Pizzería
¿Qué está cerca de?
Fiesta
Casa Ana
Cancha
de Fútbol
Tipos de Servicios
Acción
Preguntas
Operaciones
Orientación y
localización.
¿Dónde estoy?
¿Dónde está…?
Posicionamiento,
geocodificación.
Navegación a través de ¿Cómo puedo llegar
espacio, trazado de ruta.
a?
Posicionamiento,
geocodificación, ruteo.
Búsqueda de personas y ¿Qué hay cerca o de
objetos.
interesante…?
Posicionamiento,
geocodificación, cálculo de
distancia y área, búsqueda
de relaciones.
Identificación y
reconocimiento de
personas u objetos.
¿Qué es?
Directorio, selección,
búsqueda temática o
espacial.
Verificación de eventos,
determinación del estado
de objetos.
¿Qué ocurre aquí,
allá, etc.?
Posicionamiento, cálculo
de área, geocodificación,
búsqueda de relaciones.
Clasificación de LBS
Arquitectura LBS
Mecanismo de
Posicionamiento
Internet
BD
Servidor de
Aplicaciones y
Contenidos
Conexión de Red
Dispositivos móviles
Red de
comunicaciones
Técnicas de Posicionamiento
Técnicas de
posicionamiento
Basada en redes
Basada en redes
celulares y satelitales
inalámbricas
Basadas en red
Basadas en el
dispositivo móvil
Bluetooth
Wi Fi
Infrarrojos
Banda Ultra-ancha
Tecnologías Posicionamiento
Técnicas de Posicionamiento
GPS
Cell Id
Global Positioning System
Cell of Origin
AGPS
Assisted GPS
Técnicas de Posicionamiento
Nombre
Técnica de
localización
Telcel
AGPS
Iusacell
AGPS
Movistar
Basada en Red
Nextel
Basada en Red
Cobertura
Red
Telcel
Red
Iusacell
Cobertura
Movistar
Red Nextel
Áreas de un LBS
GIS
BD Espaciales
Móvil
Web
GIS
Internet
WMS
LBS
Internet
Móvil
GIS
Dispositivos
Móviles
IDE
• IDE (Spatial Data Infraestructure, SDI) ayudan
al descubrimiento, acceso y uso de información
espacial.
• IDE incluye:
– Datos (atributos geográficos) y metadatos
– Métodos de acceso a los datos geográficos
(catálogos, cartografía).
– Servicios
adicionales
(transformaciones
coordenadas, análisis de los datos).
de
Esquema OpenGIS
Primitivas Gráficas
IDE
• Algunos IDEs:
– PostGIS (PostgreSQL)
– MySQL
• Definición de Tablas (PostGIS):
– CREATE TABLE gtest ( ID int4, NAME varchar(20)
);
– SELECT AddGeometryColumn('', 'gtest','geom',1,'LINESTRING',2);
191
IDE
• Agregar Datos:
– INSERT INTO gtest (ID, NAME, GEOM) VALUES
(1,
'First
Geometry',
GeomFromText('LINESTRING(2 3,4 5,6 5,7 8)', -1));
• ¿Cómo se almacenan los datos?
– SELECT id, name, AsText(geom) AS geom FROM
gtest;
– id | name | geom ----+----------------+---------------------------- 1 | First Geometry | LINESTRING(2 3,4 5,6
5,7 8) (1 row)
192
IDE
• Consulta Espacial
– SELECT id, the_geom FROM thetable WHERE
the_geom && 'POLYGON((0 0, 0 10, 10 10, 10 0, 0
0))' AND Contains(the_geom,'POLYGON((0 0, 0 10,
10 10, 10 0, 0 0))';
• Existen dos tipos de estándares para
representar objetos espaciales: WKT y WKB
193
Representación Información
Texto
Dirección:
Ubicación:
Estado de Puebla
No 71, Lázaro
Cárdenas
Latitud: 18.635202
Longitud:-99.237502
Mapas
Raster
Vectoriales
Representación Información
• Datos georeferenciados:
– Coordenadas (latitud, altitud, longitud)
– Código Postal*
– Aproximación Área de Cobertura (NFC-Near Field
Communications-)
• Datos no georeferenciados:
– Datos de Formulario (Nombre, etc.)
– Datos del Punto de Interés
Características, Limitaciones.
195
(POI)
como
GIS
• Los MSIS (Mobile Spatial Information System)
son una aplicación de los GIS.
• Enfocados en proveer información espacial
(mapas cartográficos, imágenes y textos) a
usuarios móviles, en cualquier lugar y tiempo.
• Dependen de Mobile GIS y de GIR (Geographic
Information Retrieval).
Problemática LBS
Falta de Estándares
Problemáticas LBS
• Sistemas
Diferentes
• WGS84
de
proyección
• World Geodetic System 1984.
Sistema Geodésico Mundial de
1984
• Latitud y longitud expresadas en
grados.
• UTM
• Universal Transversal Mercator.
• Latitud y longitud expresadas en
metros.
LBS: Presente y Futuro
Whereabouts™
GPS
Ask Mobile
Nokia Maps
20
1
Traza tu Ruta CAPUFE
202
LBS + SI tradicionales
• Mashups & Web 2.0
– El usuario como productor
Fotos
georeferenciadas
Diversidad de mashups usando Google
Maps
LBS + SI Tradicionales
204
Servicios Localización
• uLocate: Es un gateway para el manejo de
LBS. http://www.ulocate.com/platform.php
• Loki es una herramienta de búsqueda
contextual basada en la localización de los
usuarios. http://loki.com
• MeerMoi es un servicio móvil de citas basados
en la localización. http://www.meermoi.com/
Localización Personas
a
c
b
d
Consultas LBS
Georeferenciada
No Georeferenciada
Respuestas LBS
No Georeferenciada
Georeferenciada
Google StreetView
Contenido Georeferenciado
Áreas de Investigación
Búsqueda de
servicios Web
sobre GIS
mediante
ontologías
Emparejamiento
de ontologías
sobre GIS
Manejo de
información
contextual
IDE
GIS
Enfoque
Web 2.0
MSIS
LBS
MGIS
Aplicaciones
de localización
móvil
GIR
Aplicaciones
mashup de
servicios
Relaciones
espaciales
en lenguaje
natural
Ontologías espaciotemporales y sus
aplicaciones
Combinación Tecnologías
• Aplicaciones LBS con Realidad Aumentada
(AR, Augmented Reality)
• Guías Turísticas
Detección Heterogenea
Perfiles de Movilidad
Inteligencia Colectiva
215
Taxi Ruta
• Problemática: ¿Cuántos de ustedes no les ha
pasado que al tomar un Taxi, el conductor les
quiere cobrar lo que quiera? O ¿Cuántos
Taxistas se ven perjudicados cuando en el
sistema de “Taxi Seguro” el pasajero miente
sobre su destino final?
• Objetivo: Diseñar una aplicación LBS que
permita optimizar el traslado de pasajeros en
Taxis.
Taxi Ruta
• Alcances:
– El sistema deberá detectar el cobro de un pasajero
de un punto a otro.
– Deberá reconocer que unidad está más cerca de
recoger a algún pasajero.
– Se podrá utilizar vía SMS una solicitud de ruta de
un destino a otro obtenido el mapa croquis con los
puntos a seguir.
217
Taxi Ruta
• Limitaciones:
– El sistema sólo podrá realizar la ubicación de los
mapas cargados en el sistema
– El sistema no maneja elementos de tiempo real
como el tráfico o manifestaciones.
– El sistema sólo da una ruta ideal (la más corta).
218
Tecnologías relacionadas
• Iusacell
Ubicacel
• Movistar
• Telcel
• Tramigo
• Skyhook WPS
Localízame
AVL Reach U
Detección de Costos
CENTRAL
TEC
MORELIA
$30
$35
220
Reconocimiento de Unidades
F
E
A
D
C
B
221
Aplicaciones de Mapas
22
2
Perfil de Dispositivo
SMS
MMS
Se envía como mensaje MMS
el mapa-croquis generado
Envío de mensaje SMS y perfil
del dispositivo
Se analiza la consulta y se
genera el croquis
Aplicaciones de Mapas
Mapa
Destilación de
información
innecesaria
1
Consulta
Georeferenciada
No
georeferenciada
Características
del
Dispositivo
4
2
Algoritmo de
ruta
Consulta Puntos
de interés
3
BDE
BDR
Mapa Croquis
Aplicaciones de Mapas
Realizar la
consultas
radio,
tomando
como
origen
Obtener
Destilar
parte
grafo
una
lainformación
matriz
ruta
mediante
del mediante
mapa
de adyacencia
no
del
laspertinente
intersecciones
un
servidor
algoritmo
del de
camino
del
|mapas
de
mapa
de
caminos
generado
calles
con
cada
nodo
camino
obtenido.
mediante:
como
mediante
referencias
óptimo.
nodos.
eldel
para
algoritmo
la generación
de rutas.del mapa-croquis en
PuntosSVG.
formato
georeferenciales de origen
Destino georeferencial
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
0
0
0
0
1
1
1
0
0
0
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Algunas APIs de Localización
• Sin APIs (leer trama NMEA)
• Algunas APIs
• Location Acquisition. Symbian
• Gateways de Operadoras de Telefonía
• JSR179 Location (MIDP 2.0)
• Google Gears
JSR 179
• import javax.midlet.location;
• //
Establecemos
los
criterios.
Criteria criteria = new Criteria();
• criteria.setCostAllowed(false);
criteria.setHorizontalAccuracy(NO_REQUIREM
ENT);
criteria.setVerticalAccuracy(NO_REQUIREMEN
T);
criteria.setPreferredPowerConsumption(NO_R
EQUIREMENT);
226
JSR 179
try {
LocationProvider
lp
LocationProvider.getInstance(criteria);
Location location = lp.getLocation(-1);
Coordinates
coordinates
location.getQualifiedCoordinates();
System.out.println(”Latitud:
”
coordinates.getLatitude());
System.out.println(”Longitud:
”
coordinates.getLongitude()); } catch (…) …
227
=
=
+
+
Google Gears
• <script
type="text/javascript"
src="gears_init.js"></script>
• <script type="text/javascript">
• var
geo
=
google.gears.factory.create('beta.geolocation');
• function
updatePosition(position)
{
alert(‘Latitud/Longitud: ' + position.latitude + ',' +
position.longitude); } </script>
Ubicación Tradicional
229
Google Maps API
•GBrowserIsCompatible()
•GClientGeocoder()
• geocoder.getLatLng()
•GMap2()
•map.getCenter()
•map.getZoom()
•map.addControl()
•map.setMapType()
•GLatLng()
•GSize()
•GPoint()
•GSmallMapControl()
•GScaleControl()
•GMapTypeControl()
•GOverviewMapControl()
•GInfoWindowTab()
•GMarker()
•
m.openInfoWindowTabsHtml()
230
Líneas de Investigación
2009
M.C. Juan Carlos Olivares Rojas
Investigación y Desarrollo Tecnológico
Pronóstico Gartner 2007
1. Código abierto
2. Virtualización
3. Registro de servicios y repositorios
4. Suites para la gestión de procesos de negocios
5. Enterprise Information Management
6. Cómputo ubicuo
7. Acceso a la información
8. Web 2.0 – AJAX Rich Clients
9. Web 2.0 - Mashup Composite Model
10. Inteligencia colectiva y comunidades
Pronóstico Gartner 2008
1. Green IT
2. Unified Communications
3. Business Process Modeling
4. Metadata Management
5. Virtualization 2.0
6. Mashup & Composite Apps
7. Web Platform & WOA
8. Computing Fabric
9. Real World Web
10.Social Software
Pronóstico Gartner 2009
1. Virtualization.
2. Cloud Computing.
3. Servers-Beyond Blades.
4. Web-Oriented Architectures.
5. Enterprise Mashups.
6. Specialized Systems.
7. Social Software and Social Networking.
8. Unified Communications.
9. Business Intelligence.
10.Green IT.
234
Áreas de Interés
• Sistemas Distribuidos
• Cómputo móvil
• Tecnologías Web
• Redes inalámbricas
• Ingeniería de Software
Líneas de Investigación
• Sistemas basados en localización (LBS) y
búsquedas contextuales.
• Sistemas asíncronos basados en tecnologías
SMS/MMS
• Programación de Sistemas
Compact Framework y J2ME
usando
No necesariamente van en orden de interés
.NET
Líneas de Investigación
• Sistemas
de
middleware)
intermediarios
(proxys,
• Sistemas Distribuidos Inteligentes (Agentes
Móviles)
• Transcodificación
multiformato
Acaparamiento para dispositivos Móviles.
• Refactorización de Aplicaciones Móviles
y
Líneas de Investigación
• Accesibilidad de recursos Web en dispositivos
móviles (W3C, WCAG, MobileOK)
• Minería de datos para y en dispositivos
móviles.
• Mecanismos de Precarga de Dispositivos Web
• Servicios Web y Arquitecturas SOA.
Líneas de Investigación
• Servicios Web y P2P en dispositivos móviles
• Cómputo paralelo en dispositivos móviles (Grid,
Clusters).
• Sistemas Operativos para dispositivos móviles
y empotrados
• Virtualización
Líneas de Investigación
• Seguridad en dispositivos móviles.
• Desarrollos de Sistemas Adaptativos en Redes
Inalámbricas (Redes de 3G, Redes de
Sensores).
• Metodologías para el desarrollo de aplicaciones
en entornos de computación con recursos
limitados.
240
Líneas de Investigación
• Cómputo móvil en la educación
• Multimedia en dispositivos de cómputo limitado
241
Trabajos actuales
• PaqWebCel:
Paquete
para
Desplegar
Publicidad en Terminales Móviles Celulares
(CITEDI)*
– “Sistema de publicidad para comercio electrónico
móvil (m-commerce)” (ITM)
– Desarrollo de estrategias para desplegar publicidad
en
dispositivos
móviles
(multimedia,
geoposicionamiento, seguridad y privacidad).
Trabajos actuales
• Metodologías de Desarrollo en Computación con
Recursos Limitados (ISwM):
– “Desarrollo de Interfaces Adaptativas para Dispositivos
Móviles”
– “Diseño de un Lenguaje para Modelar Contexto en
Dispositivos Móviles”
– “Utilización del Patrón MVC (Modelo‐Vista‐Controlador) para
el Desarrollo de Aplicaciones en Dispositivos Móviles”
– “Estudio y Aplicación de Patrones Arquitectónicos en la
Construcción de Software para Dispositivos Móviles”
243
Trabajos actuales
• Proxy de accesibilidad móvil *
• Weblog mininig en dispositivos móviles (UNID)*
• Virtualización de recursos y aplicaciones en
dispositivos móviles (UNID)*
• Nuevas Técnicas de DSS.
244
Trabajos actuales
• Medios audiovisuales para la autenticación de
sistemas de cómputo *
• Herramienta para validar la colocación de
puntos de acceso en redes inalámbricas
utilizando diagramas de voronoi. (UNID)*
• “Plataforma educativa utilizando tecnologías
Web 2.0”.
245
Propuestas de Trabajos
• Suite para la Conversión de Código de
Aplicaciones de Computadoras Personales a
Aplicaciones de Cómputo Móvil (2Mobi)
– “Traductor de J2ME a .NET CompactFramework”
– “Traductor de .NET CompactFramework a J2ME”
– “Traductor de J2SE a J2ME”
– “Traductor de J2EE a J2ME”
– “Traductor de .NET Framework a .NET CompactFramework”
246
Propuestas de Trabajos
• Transcodificador
multiformatos
de
contenidos
Web
• Algoritmo para determinar de manera efectiva
los recursos que se deben precargar en un sitio
Web.
• Web Proxy caché con soporte para
operaciones en modo desconexión para J2ME
247
Propuestas de Trabajos
• Editor de páginas
dispositivos móviles
Web
accesibles
para
• Comunicación entre procesos IPC en máquinas
virtuales
• Algoritmo de enrutamiento para dispositivos
móviles utilizando técnicas de agrupamiento y
distancias cortas
248
Propuestas de Trabajo
• Modificación al protocolo SMTP para permitir la
eliminación de correo no visto.
• Videostreaming en redes celulares de 2.5G de
manera descentralizada
• Localización geográfica de recursos de manera
descentraliza.
• Refactorización de estilos en HTML a CSS.
Propuestas de Trabajo
• Refactorización de Tablas a capas DIV y SPAN.
• Refactorización de Javascript obstrusivo a no
obstrusivo.
• Sincronización de Servicios Web con BPEL.
Referencias
• Robison, D. and Pagna, J., (2008) , Wap 2.0
Mobile Web: XHTML Mobile Profile.
• Kantor, P. (2006), XHTML, Desert Code 2006.
• Skelton, G., Excell, P., Robison, D. and Taj, I.
(2008) XHTML Basic and XHTML-MP.
• Ingram, M. (2008) Mobile Devices: Driving
Standards for a “New” Web.
Referencias
• Ferreira, R (2008). Curso de Programación
en J2ME. Instituto Tecnológico de Morelia.
• Prieto (2004). Desarrollo de Juegos con
J2ME, Editorial Alfaomega Ra-Ma, España.
¿Preguntas?