Introducão à
2
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
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.
4
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.
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”.
6
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.
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
TDMA
time division multiple accessUtiliza 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
8 UFU - BACALÁ
IS-95 CDMA
code division multiple accessDesenvolvida 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
GSM
Global System for Mobile CommunicationsOpera 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
10 UFU - BACALÁ
GPRS -
General Packet Radio Service2000 - 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
12
EDGE -
Enhanced Data Rates for GSM Evolution2003 - 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 todo momento UFU - BACALÁ
Wi-Max
Worldwide Interoperability for Microwave Access2007 - 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
14
Outras Tecnologias
3G
UMTS and CDMA-2000
UMTS Europa
CDMA-2000 EUA
Taxas transferência até 2Mbps
Dispositivos Móveis
Notebook Palmtops PDAs Mobile Phones Tablet PCs ...16
Sistemas Operacionais Móveis e
Linguagem de Programação
Sistema Operacional
Linguagem De Programacao
Windows Mobile
.net Mobile
Linux Mobile (EZX)
C++ c/ GTK
Independente
J2ME
Arquitetura de Acesso a
Web
W eb S er ve rs Internet Wireless Network Base Station Requisicao : Respsosta :Linguagem Java
Divisão em 3 frentes:
◦ J2SE – desktops ◦ J2EE – servidores
◦ J2ME – dispositivos com memória e
processamento restritos
Tentativas anteriores: Embedded Java e
Java Visão Geral
J2SE - Java 2 Standard Edition
◦ Conjunto de ferramentas e APIs usadas
para construir applets e aplicações Java. Usada para ambos aplicações Web e
standalone.
J2EE - 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.
◦ Aplicações distribuídas requerem trabalho
20 UFU - BACALÁ
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 certo tipo de dispositivo, como por exemplo, um celular ou uma PDA.
J2EE J2SE
Portabilidade
Linguagem de alto nível e fácil de
dominar
Segura
Por que J2ME?
22 UFU - BACALÁ
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
24 UFU - BACALÁ
Qualidades
“Write once, run everywhere” Linguagem de alto nível para
dispositivos móveis
Portabilidade
Delivery pela rede seguro
◦ Anytime, anywhere secure deploying
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
26 UFU - BACALÁ
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
Não Possui Matemática de Ponto
Flutuante
Tratamento de Exceções
Verificação de Arquivos de Classe
Diferenças Java X J2ME
28 UFU - BACALÁ
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
Verificação de Arquivos de
Classe
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 SUN
Específica para CLDC
30 UFU - BACALÁ
Máquinas Virtuais
CVM
◦ Quase igual a VM do J2SE. Diferenças:
Dispositivos fazem computações específicas
◦ Gerenciamento de memória mais
eficiente
Separação VM – Sistema de memória
◦ Mapear Threads Java em Threads
nativas do sistema
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
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
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.
CLDC
34 UFU - BACALÁ
Perfil de Dispositivo de Informação Móvel
▸ Extensão de uma Configuração
▸ Define APIs para tratar diferenças entre
diferentes dispositivos
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
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
J2ME – CDC e CLDC
Máquina Virtual Java CDC
KVM CLDC
MIDP
Java 2 Micro Edition (J2ME)
38 UFU - BACALÁ
Organização da plataforma
Aplicação Building blocks: ◦ Configurações ◦ Perfis Pacotes opcionais◦ Conjunto de API´s mas
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
40 UFU - BACALÁ
Perfis CDC
Foundation Profile
◦ Sem GUI
◦ Reuso de código J2SE com esforço
mínimo
◦ Ambientes com recursos limitados
◦ Exemplos de cenários:
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
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
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
44 UFU - BACALÁ
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:
Para uma lista completa
http://developers.sun.com/techtopics/mobility/device/device
46 UFU - BACALÁ
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
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
48 UFU - BACALÁ
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:
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
50 UFU - BACALÁ
Considerações sobre
desempenho
Use variáveis locais:
◦ É mais rápido acessar variáveis locais que
membros de classes
Evite concatenação de Strings:
◦ Concatenação de Strings prejudica a
performance e pode aumentar o uso de memória da aplicação
Estrutura Básica de um
Programa em J2ME
52 UFU - BACALÁ
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.
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)
Processo MIDlets
Edite Compile Pré-verifique Emule Teste no dispositivo◦ Idealmente em vários dispositivos
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>
Compilação e Execução
56 UFU - BACALÁ
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
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class ProgramaInutil extends
MIDlet{
public ProgramaInutil(){
}
public void startApp(){
Esqueleto de um MIDlet
58 UFU - BACALÁ
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
Construtor:
▸Command(String label,
int commandType, int priority) Tipos: ▸Command.BACK ▸Command.CANCEL ▸Command.EXIT ▸Command.HELP ▸Command.ITEM
Comandos
60 UFU - BACALÁimport javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class ProgramaInutil extends MIDlet
implements CommandListener{
public ProgramaInutil(){
}
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
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 dispositivosUm 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
comandos. Neste MIDlet incluir um
64 UFU - BACALÁ
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”);
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() { }
public void destroyApp(boolean unconditional)
66 UFU - BACALÁ
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 {
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
68 UFU - BACALÁ
Empacotamento e Distribuição
MIDlets consistem em um arquivo JARcontendo 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 por meio de um