Você está na página 1de 61

Java Micro Edition

Programando dispositivos Móveis com Java Micro


Edition

1
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007
Conteúdo Programático
■ Plataforma JavaME
■ Programando em JavaME
■ Mais recursos da API
■ Deploy da aplicação

2
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007
Plataforma Java ME
■ JavaSE X JavaME
■ Dispositivos Alvo
■ Configurations e Profiles
■ Jogos X Aplicativos Comuns
■ Midlets e Midlet Suites
■ Arquivos .JAR e .JAD
■ Instalação de aplicações
■ Execução de aplicação em Sandbox
■ Compilação e pré-verificação

3
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007
Programando em Java ME
■ Criando um Midlet
■ A classe Midlet
■ Estrutura básica de um Midlet
■ "Hello micro World!"
■ Usando componentes de interface
■ Exemplos usando Alert TextField e Gauge

4
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007
Mais recursos da API
■ Persistência de dados
■ O banco de dados Record Management System
■ Gravando dados no RMS
■ Lendo dados do RMS

5
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007
Deploy da aplicação
■ Compiler
■ Pré-verifier
■ Criar arquivo .JAR
■ Criar arquivo .JAD
■ Uma página simples em WAP
■ Transferir a aplicação OTA(Over the Air)

6
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007
A plataforma Java

JAVA EE JAVA SE

JAVA ME

7
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007
Java SE X Java ME
■ Java Standard Edition

Computadores Pessoais

Servidores

API com muitos recursos

Amplamente utilizada
■ Java Micro Edition

Dispositivos com restrições de recursos

Celulares, PDAs, embarcados

Pequena API

Concorrência com outras plataformas:

BREW, C++ etc.

8
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007
Visão da Plataforma Java

9
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007
Diferenças na programação
■ Preocupação com performance
■ Utilização mínima de recursos

Economia de bateria

Melhor tempo de resposta
■ Acesso a rede intermitente
■ Aplicações não rodam como prioridade do usuário
■ Acesso ao dispositivo limitado

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


10
KVM - Kilobyte Virtual Machine
■ Projetada para dispositivos embarcados
■ Menos bibliotecas
■ Menor consumo de memória
■ Memória estática na faixa dos 40 a 80 KB
■ Abriga os programas

Exevução em Sandbox

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


11
Dispositivos Alvo

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


12
Configurations e Profiles
■ Divisões da Plataforma Java
■ Configurations são definições mais gerais
■ Ambos são um conjunto de APIs

Profiles
Configurations

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


13
Configurations
■ CDC

Conected Devices Configuration

Executa sobre a JVM
■ CLDC

Conected Limited Devices Configuration

Usada em Celulares

Mais comum

Executa sobre a KVM

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


14
A CLDC
■ 1.0

Sem suporte a ponto flutuante

Sem suporte a weak references

Associada a MIDP 1.0
■ 1.1

Suporte a ponto flutuante

Suporte a weak references

Continua suportando tudo da 1.0 com adições

Associada a MIDP 1.0 ou MIDP 2.0

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


15
Alguns Pacotes da CLDC 1.1
java.lang
java.lang.ref
java.io
java.util
javax.microediton.io

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


16
Profiles
■ São mais específicas
■ Definem APIs específicas ao tipo de dispositivo
alvo
■ MIDP 1.0
■ MIDP 2.0

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


17
MIDP 2.0
■ Comum em celulares
■ Suporte aprimorado a multimídia
■ APIs específicas para jogos!
■ Algumas APIs do MIDP 2.0

javax.microedition.midlet

javax.microedition.lcdui.game

javax.microedition.lcdui.media

javax.microedition.rms

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


18
Jogos X Aplicativos Comuns
■ Alta necessidade de ■ Performance
performance moderada
■ Requisitos de tempo ■ Tempo de resposta
de resposta compatível com o
■ Algoritmos mais ambiente
complexos ■ Algoritmos simples
■ Regra de negócio
dispersa

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


19
MIDlet
■ Aplicativo JavaME
■ Classe base a ser extendida para se criar
aplicativos JavaME

javax.microedition.midlet
■ MIDlet Suítes

Conjunto de Midlets

Office Suíte

Compartilham recursos (armazenamento)

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


20
Aplicações em Celulares

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


21
Ciclo de Desenvolvimento

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


22
Editando código Fonte
■ Existem várias IDEs

Eclipse

NetBeans

JavaME Wireless Toolkit
■ Existe um conjunto mínimo de ferramentas
necessárias

JDK 1.4 ou superior

Sun java Wireless Toolkit
■ No caso do Netbeans

Além da IDE é necessário baixar o Netbeans Mobilty
Pack

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


23
Compilando Código JavaME
■ Usar apenas JDK e Sun Wireless Toolkit

Exige conhecimento do funcionamento

Complexo
■ Recomenda-se utilizar uma IDE

Netbeans + Mobility pack

Eclipse + EMF + MTJ + plugin EclipseME

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


24
Pré-Verificar
■ Por quê?
■ O que o pre-verifier faz?

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


25
Empacotando
■ Criar um pacote pronto para execução
■ Arquivo JAR

Velho conhecido da plataforma Java

Compactado diminui tráfego de rede
■ Arquivo JAD

Java Application Descriptor

É usado antes do JAR para exibir informações do
MIDlet Suíte que será instalado

Inclui informações de inicialização do MIDlet

Não é obrigatório

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


26
Testes
■ Emuladores

Distribuídos gratuitamente pelo fabricante

Fácil instalação de aplicações

Rápido Deploy

Permite testar vários dispositivos de várias marcas e
modelos
■ O teste no dispositivo real é importantíssimo

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


27
Instalação de aplicações
■ Quem realiza a instalação?
■ O JAM (Java Application Manager)
■ Instalação OTA

Over the Air

Servidor configurado corretamente

Tipos MIME
■ Via Cabo

Mais rápido mais barato

Mais complicado para o usuário final

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


28
A Sandbox do JAM
■ Sandbox significa maior segurança
■ Limita acesso a recursos Nativos
■ Não tem acesso direto ao Sistema Operacional

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


29
Cinto de Utilidades JavaME
■ Sun JDK

(http://java.sun.com)
■ Java Wireless Toolkit

(http://java.sun.com/javame/)
■ NetBeans com Mobility Pack

(http://www.netbeans.org)
■ Emuladores

http://developer.motorola.com/

http://forum.nokia.com/

http://developer.sonyericsson.com

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


30
Instalando o JDK
■ Acesse:
http://java.sun.com/javase/downloads/index.jsp
■ Faça o download do Java Standard Development
Kit
■ Atualmente está na versão 6 update 1 JDK 6u1

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


31
E o Sun Wireless Toolkit
■ Acesse:

http://java.sun.com/javame/
■ Faça o download do Sun Wireless Toolkit
atualmente (maio/2007) está na versão 2.5
■ Instale-o

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


32
Netbeans com Mobility pack
■ Acesse

http://www.netbeans.org
■ Faça o download do Netbeans 5.5
■ Faça o download do Mobility Pack
■ Instale o Netbeans e após o Mobility Pack

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


33
Programando em JavaME

Um bom e velho Hello world!

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


34
Hello World no NetBeans
■ Clique em Novo

Em Categorias Selecione: Mobile

Em Projetos Selecione: Mobile Application

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


35
Hello World no NetBeans
■ Dê um nome ao seu MIDlet

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


36
Hello World no NetBeans
■ Selecione e configure a plataforma alvo

Versão da CLDC e MIDP

Tipo do aparelho

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


37
Hello World no NetBeans
■ Alguma outra plataforma?

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


38
Hello World no NetBeans
■ Projeto Básico criado pelo NetBeans

FlowDesign

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


39
Hello World no NetBeans
■ Projeto Básico criado pelo NetBeans

Screen Design

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


40
Hello World no NetBeans
■ O emulador padrão da SUN

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


41
Entendendo um MIDlet
■ A classe base de uma aplicação JavaME

javax.microedition.midlet
■ Não tem o método

public static void main(String args[])

A aplicação começa no startApp()

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


42
A Classe MIDlet
■ É a classe principal de um MIDlet

javax.microedition.MIDlet
■ Deve ser extendida para se criar um MIDlet
■ O construtor é executado no início da
aplicação
■ Métodos abstratos para acompanhamento do
estado da aplicação

startApp()

Executado sempre que se sai do estado de pausa para
ativo

destroyApp()

Executado sempre que a aplicação terminar

pauseApp()

Executado sempre que a aplicação entra em pausa

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


43
Outros métodos da classe MIDlet
■ getAppProperty()

Obtém informações do arquivo .JAD ou do arquivo
MANIFEST do .JAR
■ notifyDestroyed()

Avisa ao JAM para recolher os recursos alocados ao
MIDlet
■ notifyPaused()

Avisa que entrou em estado de pausa
■ resumeRequest()

Pede para sair do estado de pausa

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


44
A classe Displayable
■ É uma superclasse que define métodos básicos
para qualquer classe que possa ser exibida na
tela
■ Métodos Importantes

addCommand(Command c)

Adiciona um comando à tela Ex.: Sair, Abrir, Próxima Janela
etc.

setCommandListener(CommandListener l)

informa um objeto responsável por receber os eventos
gerados por comandos na tela atual

boolean isShown()

informa se o componente está sendo visto na tela no
momento

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


45
Respondendo ao Usuário
■ A classe Command

javax.microedition.lcdui.Command

label

tipo

Prioridade
■ É usado para mapear as opções do usuário em
uma tela
■ A prioridade informa o quanto o aparelho deve
tentar exibir este comando em relação aos
outros caso não caibam todos na tela

Quanto menor o valor maior a prioridade

Prioridade 0 (zero) terá preferência sobre prioridade 1.

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


46
Tipos de Commands
■ O tipo pode ser:

BACK

CANCEL

EXIT

HELP

ITEM

OK

SCREEN

STOP

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


47
Interface CommandListener
■ Permite receber eventos
■ Tem apenas um método que responde a
acionamento de comandos

commandAction(Command c, Displayable d)
■ O primeiro argumento identifica o comando
que foi acionado o segundo indica em que
item de tela ele ocorreu

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


48
Formulário
■ A classe Form

javax.microedition.lcdui.form

Exibição dependente do aparelho

Flexível em relação a tamanho e formato

Dificuldades para posicionamento de itens

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


49
Itens da tela
■ Herdam de

javax.microedition.lcdui.item
■ São adicionados a um Form
■ Podem receber comandos
■ Exemplos

A classe TextField

Entrada de texto

A classe Gauge

Pode ser usado para selecionar um nivel de algo

Pode ser usado para demonstrar a evolução de um
processamento ou download

A classe StringItem

Um label não editável pelo usuário

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


50
Persistência de dados
■ Pequeno espaço
■ Compartilhado
■ Todos os MIDlets em uma mesma MIDlet Suíte
acessam os registros
■ Leitura e escrita usando streams

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


51
O banco de dados RMS
■ Baseado em registros
■ Nada de SQL ou tipos definidos
■ A MIDlet suite tem um Record Store

javax.microedition.rms.recordStore
■ Dentro do recordStore existem records

Um record é um array de bytes

Todo record tem um ID gerado na hora da inserção
■ Obtêm-se um recordStore através do método
openRecordStore

RecordStore.openRecordStore(String nome,
boolean criarSeNãoExiste)

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


52
Gravando dados no RMS
■ Depois de obter um RecordStore com o
openRecordStore pode-se ler e gravar records
■ addRecord – Novo Registro
■ setRecord – Atualizar um registro existente
■ Para listar os registros pode-se usar
RecordEnumeration
RecordStore rs = null;
rs = RecordStore.openRecordStore("BD", true);
rs.addRecord(dados,0,dados.length);
rs.closeRecordStore();

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


53
Lendo dados do RMS
■ Para a leitura pode-se usar os métodos
■ getRecord(id,buffer,offset)
■ Ou usar um recordEnumeration com o método
nextRecord()

RecordStore rs = null;
rs = RecordStore.openRecordStore("BD", true);
rs.getRecord(1,dados,0);
rs.closeRecordStore();

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


54
Deploy da Aplicação
■ Via WEB

OTA

Mais comumente utilizado pelas operadoras

Requer Servidor WEB adequado

Tipos MIME

text/vnd.sun.j2me.app-descriptor .jad

application/java-archive .jar
■ Via Cabo ou transferência serial

BlueTooth

Infravermelho

etc

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


55
Criar arquivo .JAR
■ Um arquivo .JAR comum do JAVA
■ A IDE criará um para você

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


56
Criar arquivo .JAD
■ Criando no NetBeans

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


57
Criar arquivo .JAD
■ Neste arquivo encontra-se a lista dos midlets da
suíte
■ Permissões especiais
■ Atributos que podem ser configurações
■ Os atributos são somente leitura
■ Exemplo de arquivo .JAD

MIDlet-1: MidletGame, , MidletGame


MIDlet-Jar-Size: 2442
MIDlet-Jar-URL: MobileApplication2.jar
MIDlet-Name: MobileApplication2
MIDlet-Vendor: Vendor
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


58
Instalar o MIDlet OTA(Over the Air)
■ Utiliza-se uma página WAP para efetuar o
download do Arquivo .JAD
■ O Aparelho é responsável por fazer o download
do arquivo .JAR

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


59
Uma página simples em WAP
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML
1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-
age=0"/>
</head>
<card id="inicial" title="Página WAP">
<p align="center"><b>Funciona</b></p>
<p align="center">
<b><a href="JMinesMIDlet.jad"> Campo Minado
</a></b>
</p>
</card>
</wml>

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


60
Obrigado

www.notnet.blogspot.com.br
Obrigado!
tadeu_fo@yahoo.com.br

Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007


61