slides de aula java micro edition - j2me
DESCRIPTION
Slides de aula introdutória de Java Micro Edition utilizando o NetbeansTRANSCRIPT
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 1
Java Micro Edition
Programando dispositivos Móveis com Java Micro Edition
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 2
Conteúdo Programático■ Plataforma JavaME■ Programando em JavaME■ Mais recursos da API■ Deploy da aplicação
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 3
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
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 4
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
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 5
Mais recursos da API■ Persistência de dados■ O banco de dados Record Management System■ Gravando dados no RMS■ Lendo dados do RMS
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 6
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)
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 7
A plataforma Java
JAVA ME
JAVA EE JAVA SE
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 8
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.
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 9
Visão da Plataforma Java
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 1 0
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 1 1
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 1 2
Dispositivos Alvo
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 1 3
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 1 4
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 1 5
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 1 6
Alguns Pacotes da CLDC 1.1
java.langjava.lang.refjava.iojava.utiljavax.microediton.io
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 1 7
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 1 8
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 1 9
Jogos X Aplicativos Comuns■ Alta necessidade de
performance■ Requisitos de tempo
de resposta■ Algoritmos mais
complexos
■ Performance moderada
■ Tempo de resposta compatível com o ambiente
■ Algoritmos simples■ Regra de negócio
dispersa
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 2 0
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 2 1
Aplicações em Celulares
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 2 2
Ciclo de Desenvolvimento
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 2 3
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 2 4
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 2 5
Pré-Verificar■ Por quê?■ O que o pre-verifier faz?
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 2 6
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 2 7
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 2 8
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 2 9
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 3 0
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 3 1
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 3 2
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 3 3
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 3 4
Programando em JavaME
Um bom e velho Hello world!
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 3 5
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 3 6
Hello World no NetBeans■ Dê um nome ao seu MIDlet
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 3 7
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 3 8
Hello World no NetBeans■ Alguma outra plataforma?
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 3 9
Hello World no NetBeans■ Projeto Básico criado pelo NetBeans
FlowDesign
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 4 0
Hello World no NetBeans■ Projeto Básico criado pelo NetBeans
Screen Design
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 4 1
Hello World no NetBeans■ O emulador padrão da SUN
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 4 2
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 4 3
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 4 4
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 4 5
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 4 6
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 4 7
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 4 8
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 4 9
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 5 0
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 5 1
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 5 2
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 5 3
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 5 4
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 5 5
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 5 6
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 5 7
Criar arquivo .JAD■ Criando no NetBeans
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 5 8
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, , MidletGameMIDlet-Jar-Size: 2442MIDlet-Jar-URL: MobileApplication2.jarMIDlet-Name: MobileApplication2MIDlet-Vendor: VendorMIDlet-Version: 1.0MicroEdition-Configuration: CLDC-1.1MicroEdition-Profile: MIDP-2.0
Desenvolvimento de Aplicações com JavaME - Tadeu Ferreira Oliveira - 2007 5 9
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 6 0
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 6 1
Obrigado
www.notnet.blogspot.com.br