Este documento fornece uma visão geral da plataforma Java ME, descrevendo suas principais classes e componentes, como Canvas e GameCanvas, além de exemplos práticos de desenvolvimento de aplicativos móveis e integração com a web.
1. 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: erisvaldojunior@gmail.com
Site: http://erisvaldojunior.com
Twitter: http://twitter.com/erisvaldojunior
2. Objetivo ROTEIRO
A plataforma J2ME
Desenvolver aplicações para
dispositivos móveis
considerando fatores como Exemplos Práticos
portabilidade, uso de
memória e processamento. Interface X Portabilidade
Web / Pacotes Opcionais
Próximos Passos
6. Perfis do CLDC
• Trata-se da especificação • Revisão da especificação
original (JSR 37); original (JSR 118);
•Provê o núcleo necessário
• Componentes de
para aplicações móveis,
como componentes básicos interface aprimorados,
de interface e conexão de HTTPS, suporte a jogos e
rede. aplicações multimídia.
MIDP 2 .1 . . . MIDP 3.0*
7. O que vamos usar
Possíveis pacotes opcionais
• Mobile Media API
(MMAPI) – JSR 135;
• Wireless Messaging
API (WMA) – JSR 205;
•É o "padrão de
•File Connection
mercado" atual. Optional Package
(FCOP) – JSR 75.
8. Ciclo de vida de uma aplicação JavaME
[FONSECA, 2005]
12. Muita hora nessa calma...
• Os Commands são
• Apesar da grande essenciais. Você pode
quantidade de classes, elas adicionar Commands em
são de muito fácil uso. Em qualquer tela. Eles regem a
geral, basta apenas chamar navegação da sua aplicação.
o construtor da classe, setar Basta implementar o
alguns métodos e depois método commandAction()
informar ao Display para da interface
mostrá-la na tela; CommandListener.
13. Persistência de Dados
• Através do RMS (Record • Possui recursos
Management Store), um interessantes, como
esquema de navegar pelos registros
armazenamento bastante através de um
RecordEnumeration,
simples do JavaME;
filtrando-os da maneira
• Uma aplicação pode que achar conveniente
acessar múltiplos Record (RecordFilter) e
Stores e cada um poder ordenando-os também
ter N registros. como quiser
(RecordComparator).
16. Tecnologias utilizadas
• Mobility
•Game Builder(Não)
•Visual Mobile
Designer (Não, é a
baba é?)
17. 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 o Game Builder.
18. Emuladores
Sun Java Wireless
Toolkit (JWT)
Nokia S40/S60 SDK
MotoDEV SDK
19. Emuladores
Sun Java Wireless
Toolkit (JWT)
Nokia S40/S60 SDK
MotoDEV SDK
27. Mas esses exemplos estão muito feios...
•Vamos melhorá-los!
•SplashScreen herdando de Canvas;
•Uso de
RecordFilter/RecordComparator no
Exemplo 3;
•Trocar os componentes de alto nível
(Alert, Form, List) por telas de baixo
nível herdando de Canvas.
32. ClasseCanvas
• Classe abstrata que deve • As classes que
ser especializada para a
confecção de uma tela em
herdam de Canvas
baixo nível; podem implementar
• As classes que herdam o método
de Canvas keyPressed(), que
obrigatoriamente devem
implementar o método
verifica se uma
paint(), responsável por determinada tecla foi
desenhar a tela; pressionada.
33. ClasseCanvas
• Graphics possui
•O método paint()
diversos métodos
recebe como
para desenhar na
argumento uma
tela, tais como:
instância de Graphics,
drawImage(),
com a qual é possível
drawRect(), fillRect(),
desenhar na tela;
drawString(), etc.
34. ClasseCanvas (Imagens x Portabilidade)
•Todos os desenhos
• A altura e a largura
da tela podem ser devem ser sempre
obtidas pelos posicionados de acordo
métodos getHeight() com as dimensões de
e getWidth(), tela, permitindo a
respectivamente; portabilidade da
aplicação.
35. ClasseCanvas (Teclas x Portabilidade)
•As "Soft Keys" não
• Qualquer tecla que o possuem constantes
usuário pressionar definidas em Canvas, ou
seja, o keyCode varia de
pode ser tratada pelo aparelho para aparelho.
método Com isso, o uso de
Commands é recomendado,
keyPressed(int visando evitar-se problemas
keyCode); de portabilidade.
38. GameCanvas x Canvas
• Em GameCanvas, não
• O MIDP 2.0 apresenta
há necessidade de
a classe GameCanvas,
implementar o método
que herda de Canvas e
paint(). Graphics é
possui algumas
obtido com
vantagens em relação a
getGraphics() e o
anterior, sendo
estado das teclas com
bastante útil para
getKeyStates().
jogos;
41. Integração com a WEB
• J2ME é capaz de realizar
requisições HTTP, do tipo GET ou
POST, bem como tratar suas
respostas. Isso permite:
• Envio de conteúdo para
uma aplicação PhP, RoR
ou um Servlet;
• A aplicação Web pode
integrar o conteúdo a
um banco de dados;
• O cliente JavaME pode
mostrar a resposta da
requisição.
42. Pacotes Opcionais
•FileConnection and PIM API (JSR 75);
•Java APIs for Bluetooth 1.1 (JSR 82);
•Mobile Media API 1.1 (JSR 135);
•Location API for J2ME 1.1 (JSR 179);
•Mobile 3D Graphics API for J2ME 1.1
(JSR 184);
•Wireless Messaging API 2.0 (JSR 205);
• Advanced Multimedia
Supplements 1.1 (JSR
234);
• Mobile Sensor API (JSR
256);
• Entre outros...