introducão à tecnologia móvel - facom.ufu.brbacala/cm/j2me.pdf · 9600 bps ufu - bacal ... nokia...

69
Introducão à Tecnologia Móvel 1 UFU - BACALÁ

Upload: doandiep

Post on 09-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Introducão à Tecnologia Móvel

1 UFU - BACALÁ

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

UFU - BACALÁ

3

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Á

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.

UFU - BACALÁ

5

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Á

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.

UFU - BACALÁ

7

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 digital, o GSM para substituir vários padrões analógicos existentes.

UFU - BACALÁ

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

8UFU - BACALÁ

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

9UFU - BACALÁ

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

10UFU - BACALÁ

11

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Á

12

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 todo momento

UFU - BACALÁ

13

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Á

14

Outras Tecnologias

� 3G� UMTS and CDMA-2000

� UMTS Europa CDMA-2000 EUA

� Taxas transferência até 2Mbps

UFU - BACALÁ

15

Dispositivos Móveis

� Notebook� Palmtops� PDAs� Mobile Phones� Tablet PCs

� ...

UFU - BACALÁ

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

UFU - BACALÁ

17

Arquitetura de Acesso a Web

Web Servers

Internet

Wireless Network

Base Station

Requisicao :

Respsosta :

UFU - BACALÁ

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

19UFU - BACALÁ

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 20UFU - 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.

J2EEJ2SEJ2ME

21UFU - BACALÁ

Portabilidade

Linguagem de alto nível e fácil de dominar

Segura

Por que J2ME?

22UFU - BACALÁ

Alvos de Java

23UFU - 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

24UFU - BACALÁ

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

25UFU - BACALÁ

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

26UFU - 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

SMS - Short Messaging System◦ J2ME provê meios para envio de

mensagens, mas também pode usar SMS 27UFU - BACALÁ

Não Possui Matemática de Ponto Flutuante

Tratamento de Exceções

Verificação de Arquivos de Classe

Diferenças Java X J2ME

28UFU - 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

código, percorrendo cada instrução

Verificação de Arquivos de Classe

29UFU - BACALÁ

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

30UFU - 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 Utiliza a ROM

◦ Referências fracas, RMI, serialização31UFU - BACALÁ

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 32UFU - BACALÁ

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 de dispositivo da família. 33UFU - BACALÁ

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

34UFU - 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

35UFU - BACALÁ

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 APIs 36UFU - BACALÁ

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

37UFU - BACALÁ

J2ME – CDC e CLDC

Máquina Virtual Java

CDC

KVM

CLDC

MIDP

Java 2 Micro Edition (J2ME)

38UFU - BACALÁ

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árias39UFU - BACALÁ

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

40UFU - 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: Impressoras de rede

Roteadores

Gateways residenciais41UFU - BACALÁ

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 42UFU - BACALÁ

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: High-end PDAs

43UFU - BACALÁ

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

44UFU - BACALÁ

Perfis

45UFU - 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

46UFU - 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

◦ Exemplos de uso Caixas de chamada de emergência, parquímetros,

módulos wireless em alarmes e dispositivos industriais

47UFU - BACALÁ

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

48UFU - BACALÁ

Considerações para projeto em pequenos dispositivosFaç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

◦ Não dependa do coletor de lixo 49UFU - BACALÁ

Considerações para projeto em dispositivos móveisDeixe 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

50UFU - BACALÁ

Considerações sobre desempenhoUse 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

Use threads e evite sincronização:◦ Qualquer operação que leva mais de 1/10 de

segundo para rodar requer uma thread 51UFU - BACALÁ

Estrutura Básica de um Programa em J2ME

52UFU - 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.

Classes MIDlets são armazenada em Java bytecode em arquvios .class,

53UFU - BACALÁ

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) 54UFU - BACALÁ

Processo MIDlets

Edite

Compile

Pré-verifique

Emule

Teste no dispositivo◦ Idealmente em vários dispositivos

◦ Pode parecer diferente em dispositivos diferentes

55UFU - BACALÁ

Para Compilarjavac -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

56UFU - 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

◦ pauseApp() - pausa um MIDlet

◦ destroyApp() - destrói um MIDlet 57UFU - BACALÁ

import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class ProgramaInutil extends MIDlet{

public ProgramaInutil(){}

public void startApp(){

Esqueleto de um MIDlet

58UFU - 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.CommandListener

59UFU - BACALÁ

Construtor:▸Command(String label,

int commandType, int priority) Tipos:▸Command.BACK

▸Command.CANCEL

▸Command.EXIT

▸Command.HELP

▸Command.ITEM

Comandos

60UFU - BACALÁ

import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class ProgramaInutil extends MIDlet implements CommandListener{

public ProgramaInutil(){}

public void startApp(){

Comandos

61UFU - BACALÁ

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 para cada Midlet que está executando em 62UFU - BACALÁ

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

63UFU - BACALÁ

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 comandos. Neste MIDlet incluir um

64UFU - 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”);

telaInicial.addCommand(comandoSaida);

telaInicial.setCommandListener(this);

65UFU - BACALÁ

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) 66UFU - 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 {

destroyApp(false);

} catch (MIDletStateChangeException e) {

e.printStackTrace(); 67UFU - BACALÁ

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

68UFU - BACALÁ

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 por meio de um cabo USB

69UFU - BACALÁ