FJ-55 - Java para pequenos dispositivos em Java Micro Edition
A API do MIDP 1.0 e 2.0 é pequena e relativamente simples. Difícil é entender todos os seus detalhes e se acostumar a programar com tão poucos recursos e pequenas variações que muitas vezes fogem do padrão da plataforma.
Os conceitos da CLDC, pré-verificação, obfuscação, o jad o deploy e problemas do dia-a-dia são apresentados com detalhes. Traga o seu celular ou palm para ver suas próprias aplicações rodando num dispositivo real!
Utilizamos o ambiente eclipse + plugin EclipseME.org, que será incorporado como plugin oficial do Eclipse em breve. Mesmo com a utilização do plugin também veremos passo a passo os comandos a serem utilizados através do WTK (utilizando javac, preverify, java) para não ficar dúvidas sobre o que o EclipseME faz.
Uma interessante aplicação distribuída será desenvolvida durante o curso, misturando Java ME e Java EE, com o objetivo de uma central de motoboys controlar as encomendas que devem ser retiradas; os motoboys avisam a central de que uma encomenda já foi entregue, sem precisar telefonar, apenas utilizando a aplicação que iremos fazer para o celular (esse por sua vez se conectará ao servidor para avisar que a aplicação foi entregue). O curso é muito completo, onde veremos a grande maioria das classes da API do MIDP, além de passar pela API opcional WMA para receber e enviar SMSs (e outros).
Informações
Carga Horária: 20 horas aula
Pré-requisitos: Curso FJ-11 ou equivalente com conhecimento comprovado de orientação a objetos, classes abstratas, interfaces, polimorfismo, threads, e java.lang.
Conteúdo detalhado do FJ-55
Como aprender Java
- Falando em Java
- O que é realmente importante?
- O treinamento
- Convenções de Código
- Sobre os exercícios
- Sobre os treinamento
- Indicação de bibliografia extra
- Tirando dúvidas
Java ME
- O que é Java ME
- CLDC
- MIDP
- Pacotes Opcionais e Extensões
Configurando o Ambiente e primeiro Hello
- Nosso Ambiente
- Toolkits e Emuladores
- Instalação do WTK
- Configuração do Eclipse
- Hello World
- Testando nosso Hello World
- Exercícios
- Netbeans Mobility Pack
- Para saber mais: Pré-verificação
Ciclo de Vida de um MIDlet
- Ciclo de vida de um MIDlet
- Estado Pausado
- Estado Ativo
- Estado Destruído
Distribuindo a aplicação Java ME
- Distribuindo em formato JAR
- Descritor JAD
- Testando JAD e JAR
- Como distribuir para o cliente
MIDP Básico
- Displayable
- TextBox
- Alert
- List
- Ticker
- Exemplo: Lista de compras
Commands
- O que são Comandos
- Criando Comandos
- Tratando Comandos
- Removendo
- Incrementando a Lista de Compras
Formulários
- Form
- Item
- TextField
- Exercícios
- StringItem
- Exercícios
- ImageItem
- Exercícios
- DateField
- Exercícios
- ChoiceGroup
- Exercícios
- Gauge
- Exercícios
- Exercicio de Pesquisa de Opinião
Canvas
- Canvas e a API baixo nível
- Hello World com Canvas
- Desenhando com Graphics
- Formas geométricas
- Desenhando Imagens e Strings
- Fontes
- Exemplo
- Clipping
- Eventos no Canvas
- Tratadores de eventos
- Códigos de teclas
- Exercício: Spinner
CustomItem
- Items customizados
- Exercícios
RecordStore
- Registros e RecordStore
- Criando e apagando um RecordStore
- Gravando um registro no RecordStore
- Salvando a nossa lista de compras
Conectividade e WebServices
- Introdução
- JSON
- Exercícios
- HttpConnection
- Enviando Dados
- Recebendo Dados
- Exercícios
- WebServices
- Exercícios
Wireless Messaging API
- WMA
- Criando a aplicação
- Enviando um SMS
- PushRegistry
Dia-a-dia
- Programar no dia a dia pode ser diferente....
- Obfuscação e o ProGuard
- Memória e Orientação a objetos
- Consumo de memória, cpu etc
- Debug
- Threads
- Bugs: emulador versus máquinas de verdade
- Exemplo: Outros Emuladores
- Exercícios opcionais
Apêndice - Game API
- Introdução
- As classes da Game API
- Começando com a GameCanvas e a MIDlet
- Exercícios: LabirintoCanvas e LabirintoMIDlet
- Carregando as imagens
- Uma Sprite para o personagem
- Um TiledLayer para o cenário
- Colocando os layers em ordem com LayerManager
- Exercícios: Mostrando algumas coisas na tela
- Um mapa completo
- Exercícios: mostrando o labirinto
- O laço do jogo
- Exercícios: O laço
- Tratando Eventos do teclado
- Exercícios: implementando o tratamento de eventos
- Preparando a parede para colisões
- Tratando colisões com a parede
- Exercícios: Colisões
- Próximos passos
- Impondo limites
- Exercícios: Limites no cenário
- Rolagem do cenário
- Exercício: Implementando a tela rolante
- Desafios
- Testando em outros emuladores
Apêndice: Câmera com MMAPI
- Mobile Media API
- Capturando imagens da Câmera
- Exibindo as imagens da Câmera
- Eventos
- Tirando a Foto
- Exercícios
Apêndice: FAQ
- Como leio arquivos do celular? (PIM API)
- Como usar o bluetooth do dispositivo? (JSR 82)
- Como acessar o GPS? (Location API)
- Quais KVM's temos no mercado?
- Persistência simplificada com Floggy
