 
                                Introducão à
Tecnologia Móvel
1
UFU - BACALÁ
História do Celular
1921 (0G)
O Departamento de
polícia de Detroit instala
rádios móveis operando
em cerca de 2 MHz, nos
carros. Problemas com o
sistema devido a grande
interferência
1934 (0G)
O congresso norte americano cria a FCC (Federal
Communications Commission), órgão responsável por
regulamentar o espectro das frequências de rádio
UFU - BACALÁ
2
Historia do Celular
Decada de 1940 (0G)
O uso de rádios móveis para comunicacão
já é comum nos EUA. nas frequencias de 30
a 40 Mhz. Sao usados pela policia,
empresas e pessoas ricas.
1945 (0G)
O primeiro servico que integra radio a
telefonia é aberto ao público em St. Louis,
Miss. O sistema é composto de 6 canais
operando a 150 MHz. A qualidade do
sistema é muito ruim.
UFU - BACALÁ
3
História do Celular
1956 (0G)
O primeiro sistema de telefonia instalado em
carros de passageiros é instalado atendendo
o território norte americano (os chamados
car-phones). O sistema baseado em radio
requer que uma operadora complete as
ligacoes, mas o sistema embora grande e
pesado funciona. Um sistema similar é
disponibilizado na Suécia.
1964 (0G)
Uma evolucao do sistema usa um canal
unico compartilhado em 150 Mhz e permite
que usuario disquem numero direto do
aparelho no carro.
UFU - BACALÁ
4
Historia do Celular
1969 (0G)
O sistema dde car-phone sofre um upgrade
para 450 Mhz e se torna mais comum. O
novo servico é conhecido como (IMTS)
Improved mobile telephone service.
1971 (1G)
AT&T propoe um novo sistema de
comunicacao movel ao FCC baseado em
dividira as cidades em “celulas”.
UFU - BACALÁ
5
Mobile Phone History
1973 (1G)
Dr. Martin Cooper, pesquisador da
Motorola inventa o primeiro aparelho celular
analogico funcional. O Motorola Dyna-Tac, é
levado a cidade de New York e mostrado ao
publico. A primeira estacao de telefonia
celular instalada em Nova York podia atender
ate 30 pessoas.
1974 (1G)
Problemas de regulamentacao do FCC
atrasam o desenvolvimento de celulares. A
Western Electric é impedida de fabricar
antenas e aparelhos ao mesmo tempo.
UFU - BACALÁ
6
Mobile Phone History
1977 (1G)
Após vários problemas jurídicos, o FCC aprova o
serviço celular analógico em Chicago, uma parceria
da Bell Telephone Company e da AT&T
1988 (2G)
São criados dois padrões digitais para substituir a
telefonia celular analógica nos EUA o TDMA, e o
CDMA
1990 (2G)
Agência européia de telecomunicações funda o
Group Spéciale Mobile que define um novo padrão
- BACALÁ
digital, o GSM para substituir váriosUFU
padrões
analógicos existentes.
7
TDMA time division multiple access
Utiliza
a multiplexação de tempo, vários
transmissores compartilham um mesmo
canal. Os principais padrões utilizados
foram IS 54, IS 136 (DAMPS), utilizam
frequência de 820-890 Mhz
UFU - BACALÁ
8
IS-95 CDMA code division multiple access
Desenvolvida
pela Qualcom permite que
multiplas frequencias sejam utilizadas
para transmitir uma mensagem que possui
um coidigo que a identifica. Frequencias:
800MHz band and 1.9GHz
UFU - BACALÁ
9
GSM Global System for Mobile
Communications
Opera nas bandas 800, 850, 1800 ou
1900 Mhz
Introduziu os Subscriber Identity Module
(SIM) cartões digitais que guardam
informações do assinante e permitem a
troca automática de aparelhos e
provedores de telefonia.
Primeira geração permitia transmissão
de dados apenas 9.6 Kb/s e introduziu o
conceito de SMS. Preço pago por KB
UFU - BACALÁ
10
GPRS - General Packet Radio Service
2000
- Geração 2.5
Serviço
para transferência de dados
disponível em GSM e TDMA (IS-136)
Permite
transmissão de dados ate 115
Kb/s
Serviço
utilizado para acesso a Internet,
navegação WAP, SMS e MM. Preço
pago por MB transferência
UFU - BACALÁ
11
EDGE - Enhanced Data Rates for GSM
Evolution
2003
- Geração 2.75, oferecido no
Brasil pela TIM e Claro em 2006
Serviço
para transferência de dados
236.8 kbit/s
iPhone
e vários outros celulares ja
utilizam EDGE
Acesso
cobrado por MB. Introdução de
planos que possuem conexão ilimitada
de dados. Internet móvel disponível
a
UFU - BACALÁ
todo momento
12
Wi-Max Worldwide Interoperability for
Microwave Access
2007
- Geração 4
IEEE
802.16, 10-66 GHz
Permite
transmissão de dados ate
10Mb/s em um raio de 10 Km
Banda
são vendidas para operadoras,
concorrentes celular
Competição
com outros serviços de
banda larga como ADSL e Cabo, como
serviço de internet rápida
Plano
de dados ilimitado.
UFU - BACALÁ
13
Outras Tecnologias
3G
UMTS
and CDMA-2000
UMTS Europa
CDMA-2000 EUA
Taxas
transferência até 2Mbps
UFU - BACALÁ
14
Dispositivos Móveis
Notebook
Palmtops
PDAs
Mobile
Tablet
Phones
PCs
...
UFU - BACALÁ
15
Sistemas Operacionais Móveis e
Linguagem de Programação
Sistema Operacional
Linguagem De Programac
Windows Mobile
.net Mobile
Linux Mobile (EZX)
C++ c/ GTK
Independente
J2ME
UFU - BACALÁ
16
Arquitetura de Acesso a
Web
Base Station
Internet
Wireless Network
W
eb
S
er
ve
rs
Requisicao :
Respsosta :
UFU - BACALÁ
17
J2ME
Linguagem Java
Divisão
em 3 frentes:
◦
J2SE – desktops
◦
J2EE – servidores
◦
J2ME – dispositivos com memória e
processamento restritos
Tentativas anteriores: Embedded Java e
PersonalJava foram descontinuadas
UFU - BACALÁ
19
Java Visão Geral
J2SE
◦
Conjunto de ferramentas e APIs usadas
para construir applets e aplicações Java.
Usada para ambos aplicações Web e
standalone.
J2EE
◦
- Java 2 Standard Edition
- Java 2 Enterprise Edition
Adiciona funcionalidades para suporte a
aplicações enterprise. Uma única
aplicação é distribuída na rede de uma
empresa e acessada remotamente.
UFU - BACALÁ
◦
20
Aplicações distribuídas requerem trabalho
Java Visão Geral
J2ME
- Java 2 Micro Edition
◦
Como dispositivos móveis possuem menos
poder de processamento, memória e displays
menores, J2ME é um subconjunto do J2SE.
◦
J2ME herda um subconjunto fixo do J2SE que
é aplicado para todos os dispositivos móveis e
uma outra porção definida especificamente
para um certoJ2ME
tipo de
dispositivo,
como por
J2SE
J2EE
exemplo, um celular ou uma PDA.
UFU - BACALÁ
21
Por que J2ME?
Portabilidade
Linguagem
de alto nível e fácil de
dominar
Segura
UFU - BACALÁ
22
Alvos de Java
UFU - BACALÁ
23
Mas o que é J2ME
Opção
da SUN para desenvolvimento
para dispositivos limitados em
processamento e memória (móveis ou
não)
Parecida
com J2SE
Mesma
linguagem, mesmo
compilador, mesma estrutura da
máquina virtual
UFU - BACALÁ
24
Qualidades
“Write
once, run everywhere”
Linguagem
de alto nível para
dispositivos móveis
Portabilidade
Delivery
◦
pela rede seguro
Anytime, anywhere secure deploying
Alta
escalabilidade com J2SE e J2EE
UFU - BACALÁ
25
Foco de J2ME
Basicamente
duas categorias:
◦
Dispositivos fixos de informação
compartilhada
◦
Dispositivos móveis de informação
pessoal
Fronteira
◦
não muito bem definida
Mais memória e mais processamento
para ambas categorias
UFU - BACALÁ
26
J2ME e Outras Tecnologias
WAP
- Wireless Application Protocol
◦
Protocolo que habilita dispositivos móveis
a receberem dados da Internet e mostrálos no display
◦
J2ME provê meios para acessar e
manipular dados via rede, tipicamente
Internet, mas também pode ser usado em
conjunto com o protocolo WAP
SMS
◦
- Short Messaging System
J2ME provê meios paraUFU
envio
de
- BACALÁ
27
mensagens, mas também pode usar SMS
Diferenças Java X J2ME
Não
Possui Matemática de Ponto
Flutuante
Tratamento
de Exceções
Verificação
de Arquivos de Classe
UFU - BACALÁ
28
Verificação de Arquivos de
Classe
Realizado
em duas partes
Verificação
Prévia:
◦
Insere atributos no arquivo da classe
◦
Arquivos 5% maiores
◦
Agiliza o segundo passo da verificação
Verificação
◦
no Dispositivo:
Várias verificações são feitas para validar o
código, percorrendo cada instrução
UFU - BACALÁ
29
Máquinas virtuais
KVM
◦
Otimizada para dispositivos com poucos
recursos
◦
Implementada em C
◦
40 K – 80 K
◦
Processadores de 16 – 32 bits
◦
160 K – 512 K de memória total
◦
Implementação de referência da SUN
Especificação fornecida pela
UFU -SUN
BACALÁ
Específica para CLDC
30
Máquinas Virtuais
CVM
◦
Quase igual a VM do J2SE. Diferenças:
◦
Gerenciamento de memória mais
eficiente
◦
Dispositivos fazem computações específicas
Separação VM – Sistema de memória
Mapear Threads Java em Threads
nativas do sistema
Utiliza a ROM
UFU - BACALÁ
◦
Referências fracas, RMI, serialização
31
Novos Termos em J2ME
Configuração
◦
Conjunto mínimo de APIs usados para
desenvolvimento de aplicações em um
conjunto de dispositivos.
◦
Descrevem as funcionalidades básicas
requeridas pelo conjunto de dispositivos.
◦
Pode ser:
CDC – Connected Device Configuration
CLDC - Connected Limited Device
Configuration
UFU - BACALÁ
32
Profiles (perfil)
No
topo das configurações estão os
profiles.
Profiles
são conjuntos de APIs mais
específicos para um certo tipo de
dispositivo.
Uma
configuração descreve em
termos gerais uma família de
dispositivos, enquanto um profile é
mais específico e isola um certo tipo
UFU - BACALÁ
de dispositivo da família.
33
CLDC
Configuração de Dispositivo
Conectado Limitado
Conjunto
de Classes do Java que rodam
em dispositivos móveis, com baixo poder
de processamento e recursos de entrada
e saída limitados.
UFU - BACALÁ
34
MIDP
Perfil de Dispositivo de
Informação Móvel
▸ Extensão de uma Configuração
▸ Define APIs para tratar diferenças entre
diferentes dispositivos
UFU - BACALÁ
35
MIDP
Descreve
arquitetura específica dos
dispositivos móveis que usam CLDC
e podem usar MIDP, na maioria,
celulares e pagers.
Como
MIDP é construído no topo de
CLDC, a CLDC API pode ser usada
para construir aplicações MIDP.
Memória
◦
128KB de memória não-volátil para as
UFU - BACALÁ
MIDP APIs
36
MIDP
Entrada
◦
Um dispositivo MIDP deve possuir um
teclado ou/e touch screen
Display
◦
96 x 54 pixels - 96 de altura e 54 de
comprimento
◦
1-bit color - pelo menos preto e branco
Rede
◦
2-way wireless
9600 bps
UFU - BACALÁ
37
J2ME – CDC e CLDC
MIDP
CDC
CLDC
Máquina Virtual Java
KVM
Java 2 Micro Edition (J2ME)
UFU - BACALÁ
38
Organização da plataforma
Aplicação
Building
blocks:
◦
Configurações
◦
Perfis
Pacotes
◦
opcionais
Conjunto de API´s mas
não um Perfil
API´s
proprietárias
UFU - BACALÁ
39
Mas voltando às divisões...
•
•
Embbeded Java e PersonalJava no final de ciclo de vida
Connected Device Configuration
•
Perfis:
•
•
FP, PBP, PP, GP
Connected Limited Device Configuration
•
Perfis
•
MIDP e IMP
UFU - BACALÁ
40
Perfis CDC
Foundation
Profile
◦
Sem GUI
◦
Reuso de código J2SE com esforço
mínimo
◦
Ambientes com recursos limitados
◦
Exemplos de cenários:
Impressoras de rede
Roteadores
Gateways residenciais
UFU - BACALÁ
41
Perfis CDC
Personal
Basis Profile
◦
Um framework de GUI para objetos leves
◦
Suporte ao modelo de programação xlet
◦
Todas as APIs incluídas no Foundation
Profile
◦
Exemplos de cenários:
Televisão interativa
Automóveis
Dispositivos de propósito fixo para
UFU - BACALÁ
42
Perfis CDC
Personal
Profile
◦
Compatibilidade total com AWT
◦
Suporte ao modelo de programação de
applets
◦
Um caminho definido para tecnologias
legadas como PersonalJava
◦
Todas as APIs do Personal Basis Profile
◦
Exemplos de cenários: UFU - BACALÁ
High-end PDAs
43
Perfis CDC
Game
Profile
◦
Sem previsão de lançamento
◦
Cobrirá 9 áreas fundamentais do
desenvolvimento de jogos
◦
Alvo também em J2SE
◦
Terá referências a Java Media Framework
API e Java 3D
UFU - BACALÁ
44
Perfis
UFU - BACALÁ
45
Perfis CLDC
MIDP
◦
Experiência rica em interface gráfica
◦
Conectividade extensiva
◦
Funcionalidades multimídia e para jogos
◦
OTA
◦
Segurança fim-a-fim
◦
Dispositivos-alvo:
46
Para uma lista completa UFU - BACALÁ
http://developers.sun.com/techtopics/mobility/device/device
Perfis CLDC
IMP
◦
Baseado em MIDP
◦
GUI limitada
◦
Recursos de memória ou processamento
escassos
◦
Persistência local
◦
Conectividade com a rede
◦
Gerenciamento do ciclo de vida
◦
Exemplos de uso
UFU - BACALÁ
Caixas de chamada de emergência, parquímetros,
módulos wireless em alarmes e dispositivos industriais
47
O que é quente hoje em J2ME?
Aplicativos
com processamento do
lado do servidor e apresentação no
celular
Localização
Utilização
◦
da câmera embutida
Cartão de visita
Nokia
gems
UFU - BACALÁ
48
Considerações para projeto em
pequenos dispositivos
Faça
◦
simples:
Remova features desnecessárias;
Quanto
◦
menor, melhor:
Pequenas aplicações usam menos memória
e requerem menos tempo de instalação
Minimize
o uso de memória em tempo
de execução:
◦
Use tipos escalares no lugar de objetos
◦
- BACALÁ
Não dependa do coletor deUFU
lixo
49
Considerações para projeto em
dispositivos móveis
Deixe
o servidor trabalhar a maioria do
tempo
◦
Mova a trabalho de cálculo para o servidor e
deixe que ele rode
◦
Deixe o dispositivo móvel manusear interface
e um conjunto mínimo de cálculos, deixando
o trabalho intensivo para o servidor
UFU - BACALÁ
50
Considerações sobre
desempenho
Use
◦
variáveis locais:
É mais rápido acessar variáveis locais que
membros de classes
Evite
◦
Concatenação de Strings prejudica a
performance e pode aumentar o uso de
memória da aplicação
Use
◦
concatenação de Strings:
threads e evite sincronização:
Qualquer operação que leva mais de 1/10 de
UFU - BACALÁ
51
segundo para rodar requer uma thread
Estrutura Básica de um
Programa em J2ME
UFU - BACALÁ
52
MIDlets
Aplicativos
J2ME baseados em MIDP
são chamados de MIDlets.
Uma
MIDlet utiliza somente classes
definidas pelas APIs do CLDC e
MIDP.
Uma
MIDlet é um applet desenvolvido
especificamente para dispositivos
móveis.
Classes
MIDlets são armazenada em
UFU - BACALÁ
53
Java bytecode em arquvios .class,
MIDlets
Pré-verificação
acontece logo após a
compilação.
Devem
ser empacotadas em arquivos
JAR para distribuição.
MIDlet
JAR:
◦
MIDlet classes
◦
Classes para suporte
◦
Recursos extras (imagens, som, etc)
◦
Arquivo manifesto (.mf)UFU - BACALÁ
54
Processo MIDlets
Edite
Compile
Pré-verifique
Emule
Teste
no dispositivo
◦
Idealmente em vários dispositivos
◦
Pode parecer diferente em dispositivos
diferentes
UFU - BACALÁ
55
Compilação e Execução
Para
Compilar
javac -bootclasspath C:\j2me\midp2.0fcs\classes <Arquivo .java>
Pré-Verificação:
preverify -classpath C:\j2me\midp2.0fcs\classes;. -d . <Arquivo sem o .class>
Para
Rodar:
midp -classpath . <Arquivo sem o .class>
UFU - BACALÁ
56
Construindo o Primeiro MIDlet
Crie
o projeto. Em seguida, deve-se criar
a classe
Todo
MIDlet deriva da classe
javax.microedition.midlet
3
dos vários métodos são muito
importantes:
◦
startApp() - inicia um MIDlet
◦
pauseApp() - pausa um MIDlet
◦
destroyApp() - destrói um MIDlet
UFU - BACALÁ
57
Esqueleto de um MIDlet
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class ProgramaInutil extends
MIDlet{
public ProgramaInutil(){
}
public void startApp(){
UFU - BACALÁ
58
Construindo o Primeiro MIDlet
Comandos
◦
São usados para controlar MIDlets e
iniciar ações
◦
commandAction() método de resposta a
eventos
◦
javax.microedition.lcdui.CommandListene
r
UFU - BACALÁ
59
Comandos
Construtor:
▸ Command(String label,
int commandType, int priority)
Tipos:
▸ Command.BACK
▸ Command.CANCEL
▸ Command.EXIT
▸ Command.HELP
▸ Command.ITEM
UFU - BACALÁ
60
Comandos
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class ProgramaInutil extends MIDlet
implements CommandListener{
public ProgramaInutil(){
}
public void startApp(){
UFU - BACALÁ
61
Construindo o Primeiro MIDlet
Canvas
◦
javax.microedition.lcdui
◦
Tela abstrata para gráficos e desenhos
Classe
Display
◦
javax.microedition.lcdui
◦
Responsável por gerenciar o display e
entrada de dados do usuário
◦
Há exatamente uma instância do Display
- BACALÁ
para cada Midlet que está UFU
executando
em
62
MIDlet Desenvolvimento
1.
Desenvolva o código
2.
Compile
3.
Pré-verifique
4.
Emule o MIDlet
5.
Empacote um JAR
6.
Desenvolva um .jad
7.
Teste em dispositivos
UFU - BACALÁ
63
Um MIDlet Simples
Mostra
uma linha de texto na tela e
executa um comando comum
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
Acertar
a classe para implementar um
comando
public class Primeiro extends MIDlet
implements CommandListener
CommandListener
espera
por
UFU - BACALÁ
comandos. Neste MIDlet incluir um
64
Um MIDlet Simples
private Command comandoSaida;
private Display display;
private Form telaInicial;
Estas variáveis são inicializadas no construtor
public Primeiro() {
display = Display.getDisplay(this); // Obtém o display
comandoSaida = new Command(“Saida”, Command.EXIT, 2);
// nome, tipo, prioridade
telaInicial = new Form(“Primeiro MIDlet”); // Cria a tela inicial
telaInicial.append(“Minicurso J2ME”);
telaInicial.addCommand(comandoSaida);
telaInicial.setCommandListener(this);
UFU - BACALÁ
65
Um MIDlet Simples
Com
o construtor pronto, faltam os
métodos do ciclo de vida da MIDlet.
public void startApp() throws
MIDletStateChangeException {
// Seta o display atual para a screen
display.setCurrent(telaInicial);
}
public void pauseApp() {
}
UFU - BACALÁ
66
public void destroyApp(boolean unconditional)
Um MIDlet Simples
O
último método necessário é o
commandAction para responder ao
evento exitCommand
public void commandAction(Command c,
Displayable s) {
if(c == comandoSaida) {
try {
destroyApp(false);
} catch (MIDletStateChangeException e) {
e.printStackTrace();
UFU - BACALÁ
67
Um MIDlet Simples
destroyApp()
= false - MIDlet pode gerar
exceção e recusar o método
destroyApp()
destroyApp()
= true - será destruída
Pré-verificação
e arquivos para
distribuição são feitas pela IDE
automaticamente
UFU - BACALÁ
68
Empacotamento e Distribuição
MIDlets
consistem em um arquivo JAR
contendo o software, e um arquivo JAD
contendo uma descrição da MIDlet
Para
instalar um aplicativo MIDlet em um
dispositivo deve-se então primeiro criar
um JAR e um JAD, ou seja, empacotar
para depois distribuir
Basta
colocar os arquivos JAD e JAR no
seu servidor Web para serem baixados
por um celular ou baixar UFU
por- BACALÁ
meio de um 69
cabo USB