javame

43
ERISVALDO GADELHA SARAIVA JÚNIOR Tecnólogo em Sistemas para Internet pelo IFPB Graduando em Ciência da Computação pela UFPB Pesquisador do LabTEVE (Laboratório de Tecnologias para o EnsinoVirtual e Estatística) E-mail: [email protected] Site: http://erisvaldojunior.com Twitter: http://twitter.com/erisvaldojunior

Upload: elenilson-vieira

Post on 18-Nov-2014

2.897 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: JavaME

ERISVALDO GADELHA SARAIVA JÚNIOR

Tecnólogo em Sistemas para Internet pelo IFPB

Graduando em Ciência da Computação pela UFPB

Pesquisador do LabTEVE (Laboratório de Tecnologias para o Ensino Virtual e Estatística)

E-mail: [email protected]

Site: http://erisvaldojunior.com

Twitter: http://twitter.com/erisvaldojunior

Page 2: JavaME

Objetivo ROTEIRO

Desenvolver aplicações para

dispositivos móveis

considerando fatores como

portabilidade, uso de

memória e processamento.

A plataforma J2ME

Exemplos Práticos

Interface X Portabilidade

Próximos Passos

Web / Pacotes Opcionais

Page 3: JavaME
Page 4: JavaME

Visão geral da plataforma Java

[SUN, 2008]

Page 5: JavaME

Configurações do JavaME

CLDC 1.0 / CLDC 1.1

Page 6: JavaME

Perfis do CLDC

MIDP 2 .1 . . . MIDP 3.0*

•Trata-se da especificaçãooriginal (JSR 37);

•Provê o núcleo necessáriopara aplicações móveis,como componentes básicosde interface e conexão derede.

• Revisão da especificaçãooriginal (JSR 118);

•Componentes deinterface aprimorados,HTTPS, suporte a jogos eaplicações multimídia.

Page 7: JavaME

O que vamos usar

Possíveis pacotes opcionais

• É o "padrão de

mercado" atual.

• Mobile Media API(MMAPI) – JSR 135;

•Wireless MessagingAPI (WMA) – JSR 205;

•File ConnectionOptional Package(FCOP) – JSR 75.

Page 8: JavaME

Ciclo de vida de uma aplicação JavaME

[FONSECA, 2005]

Page 9: JavaME

Estrutura básica de classes

[FONSECA, 2005]

Page 10: JavaME

Estrutura expandida de classes

MIDP 2.0 ou superiorComum a todas as versões do MIDP

Page 11: JavaME

Expandindo mais ainda...

Page 12: JavaME

Muita hora nessa calma...

•Apesar da grandequantidade de classes, elassão de muito fácil uso. Emgeral, basta apenas chamaro construtor da classe, setaralguns métodos e depoisinformar ao Display paramostrá-la na tela;

•Os Commands sãoessenciais. Você podeadicionar Commands emqualquer tela. Eles regem anavegação da sua aplicação.Basta implementar ométodo commandAction()da interfaceCommandListener.

Page 13: JavaME

Persistência de Dados

•Através do RMS (RecordManagement Store), umesquema dearmazenamento bastantesimples do JavaME;

•Uma aplicação podeacessar múltiplos RecordStores e cada um poderter N registros.

• Possui recursosinteressantes, comonavegar pelos registrosatravés de umRecordEnumeration,filtrando-os da maneiraque achar conveniente(RecordFilter) eordenando-os tambémcomo quiser(RecordComparator).

Page 14: JavaME

Persistência de Dados

Forma de armazenamento dos Record Stores

Page 15: JavaME
Page 16: JavaME

Tecnologias utilizadas

•Game Builder(Não)

• Mobility

•Visual Mobile

Designer (Não, é a

baba é?)

Page 17: JavaME

NetBeans 6.5 (Full ou Mobility)

•Suporte completo a plataforma

JavaME;

•Ferramenta RAD para navegação

de telas com o Visual Mobile

Designer;

•Ferramenta RAD para o design

dos jogos com oGame Builder.

Page 18: JavaME

Emuladores

Sun Java Wireless Toolkit (JWT)

MotoDEV SDK

Nokia S40/S60 SDK

Page 19: JavaME

Emuladores

Sun Java Wireless Toolkit (JWT)

MotoDEV SDK

Nokia S40/S60 SDK

Page 20: JavaME

Exemplo 1:Olá Mundo!

Page 21: JavaME

Exemplo 2: FuelMIDlet (Parte 1/3)

Page 22: JavaME

Exemplo 2: FuelMIDlet (Parte 2/3)

Page 23: JavaME

Exemplo 2: FuelMIDlet (Parte 3/3)

Page 24: JavaME

Exemplo 3: PhoneBookMIDlet (Parte 1/3)

Page 25: JavaME

Exemplo 3: PhoneBookMIDlet(Parte 2/3)

Page 26: JavaME

Exemplo 3: PhoneBookMIDlet (Parte 3/3)

Page 27: JavaME

Mas esses exemplos estão muito feios...

•Vamosmelhorá-los!

•SplashScreen herdando deCanvas;

•Uso deRecordFilter/RecordComparator noExemplo 3;

•Trocar os componentes de alto nível(Alert, Form, List) por telas de baixonível herdando deCanvas.

Page 28: JavaME

Exemplo 3: NameComparator

Page 29: JavaME

Exemplo 3: NameFilter

Page 30: JavaME
Page 31: JavaME

Principais classes do JavaME

MIDP 2.0 ou superiorComum a todas as versões do MIDP

Page 32: JavaME

ClasseCanvas

•Classe abstrata que deveser especializada para aconfecção de uma tela embaixo nível;

•As classes que herdamde Canvasobrigatoriamente devemimplementar o métodopaint(), responsável pordesenhar a tela;

•As classes queherdam de Canvaspodem implementaro métodokeyPressed(), queverifica se umadeterminada tecla foipressionada.

Page 33: JavaME

ClasseCanvas

•O método paint()recebe comoargumento umainstância de Graphics,com a qual é possíveldesenhar na tela;

•Graphics possuidiversos métodospara desenhar natela, tais como:drawImage(),drawRect(), fillRect(),drawString(), etc.

Page 34: JavaME

ClasseCanvas (Imagens x Portabilidade)

•A altura e a largurada tela podem serobtidas pelosmétodos getHeight()e getWidth(),respectivamente;

•Todos os desenhos

devem ser sempre

posicionados de acordo

com as dimensões de

tela, permitindo a

portabilidade da

aplicação.

Page 35: JavaME

ClasseCanvas (Teclas x Portabilidade)

•Qualquer tecla que ousuário pressionarpode ser tratada pelométodokeyPressed(intkeyCode);

•As "Soft Keys" nãopossuem constantesdefinidas em Canvas, ouseja, o keyCode varia deaparelho para aparelho.Com isso, o uso deCommands é recomendado,visando evitar-se problemasde portabilidade.

Page 36: JavaME

Exemplo de Splash Screen com Canvas

Page 37: JavaME

Constantes de teclas emCanvas

Page 38: JavaME

GameCanvas x Canvas

•O MIDP 2.0 apresentaa classe GameCanvas,que herda de Canvas epossui algumasvantagens em relação aanterior, sendobastante útil parajogos;

• Em GameCanvas, nãohá necessidade deimplementar o métodopaint(). Graphics éobtido comgetGraphics() e oestado das teclas comgetKeyStates().

Page 39: JavaME

Constantes de teclas emGameCanvas

Page 40: JavaME
Page 41: JavaME

Integração com a WEB

• J2ME é capaz de realizarrequisições HTTP, do tipo GET ouPOST, bem como tratar suasrespostas. Isso permite:

• Envio de conteúdo parauma aplicação PhP, RoRou umServlet;

• A aplicação Web podeintegrar o conteúdo aum banco de dados;

• O cliente JavaME podemostrar a resposta darequisição.

Page 42: JavaME

Pacotes Opcionais•FileConnection and PIMAPI (JSR 75);

•JavaAPIs for Bluetooth 1.1 (JSR 82);

•Mobile Media API 1.1 (JSR 135);

•LocationAPI for J2ME 1.1 (JSR 179);

•Mobile 3D Graphics API for J2ME 1.1

(JSR 184);

•Wireless MessagingAPI 2.0 (JSR 205);

• Advanced Multimedia

Supplements 1.1 (JSR

234);

• Mobile Sensor API (JSR

256);

• Entre outros...

Page 43: JavaME