Introducão à Tecnologia Móvel - Facom

Propaganda
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
Download