• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • cool
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
1,491
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
68
Comments
1
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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
  • 3. Visão geral da plataforma Java [SUN, 2008]
  • 4. Configurações do JavaME CLDC 1.0 / CLDC 1.1
  • 5. 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*
  • 6. 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.
  • 7. Ciclo de vida de uma aplicação JavaME [FONSECA, 2005]
  • 8. Estrutura básica de classes [FONSECA, 2005]
  • 9. Estrutura expandida de classes Comum a todas as versões do MIDP MIDP 2.0 ou superior
  • 10. Expandindo mais ainda...
  • 11. 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.
  • 12. 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).
  • 13. Persistência de Dados Forma de armazenamento dos Record Stores
  • 14. Tecnologias utilizadas • Mobility •Game Builder(Não) •Visual Mobile Designer (Não, é a baba é?)
  • 15. 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.
  • 16. Emuladores Sun Java Wireless Toolkit (JWT) Nokia S40/S60 SDK MotoDEV SDK
  • 17. Emuladores Sun Java Wireless Toolkit (JWT) Nokia S40/S60 SDK MotoDEV SDK
  • 18. Exemplo 1: Olá Mundo!
  • 19. Exemplo 2: FuelMIDlet (Parte 1/3)
  • 20. Exemplo 2: FuelMIDlet (Parte 2/3)
  • 21. Exemplo 2: FuelMIDlet (Parte 3/3)
  • 22. Exemplo 3: PhoneBookMIDlet (Parte 1/3)
  • 23. Exemplo 3: PhoneBook MIDlet (Parte 2/3)
  • 24. Exemplo 3: PhoneBookMIDlet (Parte 3/3)
  • 25. 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.
  • 26. Exemplo 3: NameComparator
  • 27. Exemplo 3: NameFilter
  • 28. Principais classes do JavaME Comum a todas as versões do MIDP MIDP 2.0 ou superior
  • 29. 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.
  • 30. 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.
  • 31. 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.
  • 32. 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.
  • 33. Exemplo de Splash Screen com Canvas
  • 34. Constantes de teclas emCanvas
  • 35. 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;
  • 36. Constantes de teclas emGameCanvas
  • 37. 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.
  • 38. 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...