Java Micro Edition
Agenda <ul><li>JavaME, CLDC, MIDP </li></ul><ul><li>Fragmentação </li></ul><ul><li>MIDlets </li></ul><ul><li>Interface com...
JavaME, CLDC, MIDP <ul><li>Java Micro Edition, introdução a plataforma Java para dispsitivos móveis </li></ul>
Plataforma Java <ul><li>Linguagem (incluindo compilador e ferramentas de apoio). </li></ul><ul><li>Ambiente de execução (J...
Edições da Plataforma Java <ul><li>J2SE (Java 2 StandardEdition) –edição padrão que estabelece ambiente de execução voltad...
Edições da Plataforma Java
Plataforma Java ME <ul><li>Modular e escalável, organizada em camadas </li></ul><ul><li>Máquina virtual (KVM –KilobyteVirt...
Plataforma Java ME
KVM <ul><li>KilobyteVirtual Machine </li></ul><ul><ul><li>Versão reduzida da JVM da edição J2SE </li></ul></ul><ul><ul><li...
Configuração <ul><li>Define as características mínimas da plataforma estabelecendo categoria de dispositivos com recursos ...
Configurações <ul><li>CLDC (Connected Limited Device Configuration): </li></ul><ul><ul><li>Tipicamente, dispositivo com po...
CLDC 1.0 (JSR 30) <ul><li>Memória mínima 160KB (sendo 32KB para heap)• </li></ul><ul><li>Processador 16-32 bits </li></ul>...
CLDC 1.1 (JSR 139) <ul><li>Memória mínima 192KB (sendo 32KB para heap) </li></ul><ul><li>Suporta ponto-flutuante </li></ul...
CLDC <ul><li>Processo de verificação </li></ul><ul><ul><li>Pré-verificação </li></ul></ul><ul><ul><ul><li>Realizado na est...
Processo de verificação
CLDC - Bibliotecas <ul><li>Classes J2SE </li></ul><ul><ul><li>CLDC um suporta um subconjunto de classes da plataforma J2SE...
Perfil <ul><li>Suporta serviços de mais alto-nível para uma classe de dispositivos (tais como aparelhos celulares, set-top...
Perfis para dispositivos móveis <ul><li>MIDP: Mobile Information Device Profile </li></ul><ul><ul><li>MIDP 1.0 (JSR 37):  ...
Mobile Information Device Profile (MIDP) <ul><li>MIDP 1.0 (JSR 37) requisitos mínimos </li></ul><ul><ul><li>Memória </li><...
MIDP 1.0, bibliotecas <ul><li>Pacotes </li></ul><ul><ul><li>javax.microediton.midlet (aplicativos para MID)  </li></ul></u...
Perfil mais recente <ul><li>MIDP 2.0 (JSR 118) –requisitos mínimos </li></ul><ul><ul><li>Memória </li></ul></ul><ul><ul><u...
MIDP 2.0, bibliotecas <ul><li>Pacotes </li></ul><ul><ul><li>javax.microediton.midlet(aplicativos para MID) </li></ul></ul>...
Pacotes opcionais <ul><ul><li>WMA (JSR120) </li></ul></ul><ul><ul><li>MMAPI (JSR135) </li></ul></ul><ul><ul><li>Web Servic...
 
2. Fragmentação
Fragmentação <ul><li>A plataforma Java ME foi concebida com o objetivo de propiciar portabilidade de aplicações entre disp...
Fragmentação <ul><li>Como solucionar o problema? </li></ul><ul><li>A comunidade Java tem criado especificações “umbrella” ...
JTWI, MSA1 e MSA2
Fragmentação <ul><li>A fragmentação da plataforma JavaME cria um problema de portabilidade de aplicações </li></ul><ul><ul...
Fragmentação <ul><ul><ul><li>Plataformas de aplicações mais recentes tem surgido com a promessa de solucionar esses proble...
3. MIDlets
MIDlets <ul><li>O termo MIDlet utilizado para designar o aplicativo implementado para ser executado em dispositivos MIDP. ...
Empacotamento <ul><li>Um MIDlet é empacotado para distribuição (download) em dois arquivos </li></ul><ul><ul><li>Arquivo J...
Exemplo de Manifesto <ul><li>Manifest-Version: 1.0 </li></ul><ul><li>MicroEdition-Configuration: CLDC-1.1 </li></ul><ul><l...
Exemplo de JAD <ul><li>MIDlet-1:TestMIDlet,,com.venturus.TestMIDlet </li></ul><ul><li>MIDlet-Jar-Size: 852 </li></ul><ul><...
MIDlet, ciclo de vida <ul><li>Assim como um Applet, um MIDlet é um aplicativo gerenciado </li></ul><ul><ul><li>Applet é ge...
Estrutura de um MIDlet
MIDlet, ciclo de vida <ul><li>O ciclo de vida de umMIDlet é composto de 3 estados </li></ul><ul><ul><li>Parado (paused) </...
MIDlet, ciclo de vida
Estado ativo <ul><li>Em algum instante após a construção, com o MIDlet no estado parado, o dispositivo (AMS) executa o mét...
MIDlet, solicitação de mudança de estado
4. Interface com usuário
Interface com usuário <ul><li>Pacote LCDUI </li></ul><ul><ul><li>Suporte de alto-nível </li></ul></ul><ul><ul><ul><li>Maio...
Hierarquia de classes LCDUI
Screen Componentes Alert List TextBox Form
Displayable <ul><li>public abstract class Displayable extends Object </li></ul><ul><li>Objeto que pode ser colocado no dis...
Classe Item <ul><li>Items são elementos que podem ser adicionados a um Form </li></ul>
Display <ul><li>public class  Display extends Object </li></ul><ul><ul><li>Gerenciador da tela e dos dispositivos de entra...
Comandos <ul><li>public class Command extends Object </li></ul><ul><li>Construtor </li></ul><ul><ul><li>Command(String lab...
CommandListener <ul><li>public interface CommandListener </li></ul><ul><li>Usada por aplicações para receber eventos de co...
Exercício 1
Questions
Upcoming SlideShare
Loading in...5
×

Introdução a JavaME

3,155

Published on

Introdução ao tema JavaME

Published in: Technology, News & Politics
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,155
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
1
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Introdução a JavaME

  1. 1. Java Micro Edition
  2. 2. Agenda <ul><li>JavaME, CLDC, MIDP </li></ul><ul><li>Fragmentação </li></ul><ul><li>MIDlets </li></ul><ul><li>Interface com usuário </li></ul>
  3. 3. JavaME, CLDC, MIDP <ul><li>Java Micro Edition, introdução a plataforma Java para dispsitivos móveis </li></ul>
  4. 4. Plataforma Java <ul><li>Linguagem (incluindo compilador e ferramentas de apoio). </li></ul><ul><li>Ambiente de execução (Java Virtual Machine). </li></ul><ul><li>Biblioteca (Java API - Application Programming Interface). </li></ul>
  5. 5. Edições da Plataforma Java <ul><li>J2SE (Java 2 StandardEdition) –edição padrão que estabelece ambiente de execução voltado a aplicativos para computadores pessoais e estações de trabalho. Define um núcleo básico de funcionalidades, comum a todas as edições. </li></ul><ul><li>J2EE(Java 2 Enterprise Edition) –é um superconjuntoda edição padrão, voltada para o desenvolvimento de servidores e aplicativos corporativos orientados a transações e apoiado em bases de dados, para atender clientes, fornecedores e empregados. </li></ul><ul><li>J2ME(Java 2 Micro Edition) –estabelece um ambiente de execução para sistemas embutidos/embarcados e dispositivos portáteis, incluindo telefones celulares, PDAs e set-top boxes, que possuem recursos limitados (memória, processamento, velocidade de comunicação,...), insuficientes para comportar as plataformas J2SE ou J2EE. </li></ul>
  6. 6. Edições da Plataforma Java
  7. 7. Plataforma Java ME <ul><li>Modular e escalável, organizada em camadas </li></ul><ul><li>Máquina virtual (KVM –KilobyteVirtual Machine) </li></ul><ul><li>Configuração (Configuration) </li></ul><ul><li>Perfil (Profile) e pacotes opcionais </li></ul>
  8. 8. Plataforma Java ME
  9. 9. KVM <ul><li>KilobyteVirtual Machine </li></ul><ul><ul><li>Versão reduzida da JVM da edição J2SE </li></ul></ul><ul><ul><li>Tipicamente 40KB –80KB </li></ul></ul><ul><ul><li>Para dispositivos com pouca memória (≤128KB) </li></ul></ul><ul><ul><li>Processador 16-32bits </li></ul></ul>
  10. 10. Configuração <ul><li>Define as características mínimas da plataforma estabelecendo categoria de dispositivos com recursos similares em tamanho de memória, capacidade de processamento e conectividade. </li></ul><ul><li>A camada de configuração e a características da máquina virtual estão intimamente relacionada. </li></ul><ul><li>Uma determinada configuração estabelece </li></ul><ul><ul><li>Os aspectos da linguagem Java suportados </li></ul></ul><ul><ul><li>As características da máquina virtual java </li></ul></ul><ul><ul><li>As bibliotecas (APIs) suportadas </li></ul></ul>
  11. 11. Configurações <ul><li>CLDC (Connected Limited Device Configuration): </li></ul><ul><ul><li>Tipicamente, dispositivo com pouca memória (160KB-512KB)processador de 16-32 bits e conexão wireless. </li></ul></ul><ul><ul><li>Exemplos: celular e PDA. </li></ul></ul><ul><li>CDC (Connected Device Configuration): </li></ul><ul><ul><li>Tipicamente, dispositivo com mais memória (≥2MB), processor de 64 bits ou mais e conexão fixa (tipicamente). </li></ul></ul><ul><ul><li>Exemplo: set-top boxe web phone. </li></ul></ul>
  12. 12. CLDC 1.0 (JSR 30) <ul><li>Memória mínima 160KB (sendo 32KB para heap)• </li></ul><ul><li>Processador 16-32 bits </li></ul><ul><li>Segurança: processo de pré-verificação </li></ul><ul><li>Não suporta ponto-flutuante </li></ul><ul><li>Limitações no tratamento de erros </li></ul><ul><li>Sem finalização automática -Object.finalize() </li></ul><ul><li>Não permite a chamada de código nativo (Java Native Interface) </li></ul><ul><li>Não suporta carregadores de classe definidos pelo usuário </li></ul><ul><li>Não suporta reflexão </li></ul><ul><li>Suporta multithreading, mas não grupos de threadse threads demons </li></ul><ul><li>Não suporta a referências fracas (weak references) </li></ul>
  13. 13. CLDC 1.1 (JSR 139) <ul><li>Memória mínima 192KB (sendo 32KB para heap) </li></ul><ul><li>Suporta ponto-flutuante </li></ul><ul><li>Suporte a referências fracas (weak references) </li></ul><ul><li>Threads com nomes </li></ul>
  14. 14. CLDC <ul><li>Processo de verificação </li></ul><ul><ul><li>Pré-verificação </li></ul></ul><ul><ul><ul><li>Realizado na estação de desenvolvimento, após a compilação. </li></ul></ul></ul><ul><ul><ul><li>Geração e inserção de informações no arquivos de classe, que permite o teste da integridade do arquivo de classe no momento de carga. </li></ul></ul></ul><ul><ul><li>Verificação </li></ul></ul><ul><ul><ul><li>Realizada no dispositivo. </li></ul></ul></ul><ul><ul><ul><li>Varredura do código e a informação gerada pela pré-verificação. </li></ul></ul></ul><ul><ul><ul><li>Verifica a aderência do código às regras da linguagem, entre outras: </li></ul></ul></ul><ul><ul><ul><ul><li>Variáveis locais devem ser inicializadas antes do uso; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Após a criação de um objeto, o seu construtor deve ser executado, antes do uso do objeto; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Todo construtor deve começar evocando o construtor da superclasse </li></ul></ul></ul></ul>
  15. 15. Processo de verificação
  16. 16. CLDC - Bibliotecas <ul><li>Classes J2SE </li></ul><ul><ul><li>CLDC um suporta um subconjunto de classes da plataforma J2SE. </li></ul></ul><ul><ul><li>As classes derivadas da plataforma J2SE são versões, em geral, com um conjunto menor de métodos do que versão original J2SE. </li></ul></ul><ul><ul><li>Pacotes: </li></ul></ul><ul><ul><ul><li>java.lang </li></ul></ul></ul><ul><ul><ul><li>java.io </li></ul></ul></ul><ul><ul><ul><li>java.util </li></ul></ul></ul><ul><li>Classes CLDC (Generic Connection Framework) </li></ul><ul><ul><li>Pacote javax.microediton.io </li></ul></ul>
  17. 17. Perfil <ul><li>Suporta serviços de mais alto-nível para uma classe de dispositivos (tais como aparelhos celulares, set-top boxes, etc.), incluindo: </li></ul><ul><ul><li>Criação e gerenciamento de aplicativos </li></ul></ul><ul><ul><li>Interface com usuário </li></ul></ul><ul><ul><li>Armazenamento persistente </li></ul></ul>
  18. 18. Perfis para dispositivos móveis <ul><li>MIDP: Mobile Information Device Profile </li></ul><ul><ul><li>MIDP 1.0 (JSR 37): </li></ul></ul><ul><ul><ul><li>suportado por dispositivos mais antigos </li></ul></ul></ul><ul><ul><li>MIDP 2.0/2.1(JSR 118): </li></ul></ul><ul><ul><ul><li>Amplamente suportado pelos dispositivos atuais </li></ul></ul></ul><ul><ul><li>MIDP 3.0 (JSR 271) </li></ul></ul><ul><ul><ul><li>Ainda em especifiação, “Proposed final draft: 28 May, 2009” </li></ul></ul></ul>
  19. 19. Mobile Information Device Profile (MIDP) <ul><li>MIDP 1.0 (JSR 37) requisitos mínimos </li></ul><ul><ul><li>Memória </li></ul></ul><ul><ul><ul><li>128KB de memória não-volátil para a implementação MIDP </li></ul></ul></ul><ul><ul><ul><li>32KB de memória volátil para alocação dinâmica (heap) </li></ul></ul></ul><ul><ul><ul><li>8KB de memória não-volátil para armazenamento persistente </li></ul></ul></ul><ul><ul><li>Display </li></ul></ul><ul><ul><ul><li>Tamanho tela: 96x54 pixels </li></ul></ul></ul><ul><ul><ul><li>Cor: 1 bit (display depth), Monocromático </li></ul></ul></ul><ul><ul><ul><li>Aspect ratio: 1:1 </li></ul></ul></ul><ul><ul><li>Entrada </li></ul></ul><ul><ul><ul><li>Teclado de telefone (one-handed keypad) e/ou </li></ul></ul></ul><ul><ul><ul><li>Teclado QWERTY (two-handed keyboard) e/ou </li></ul></ul></ul><ul><ul><ul><li>Tela sensível ao toque (touch screen) </li></ul></ul></ul><ul><ul><li>Conectividade </li></ul></ul><ul><ul><ul><li>2-vias, wireless, possivelmente intermitente, e com faixa limitada </li></ul></ul></ul>
  20. 20. MIDP 1.0, bibliotecas <ul><li>Pacotes </li></ul><ul><ul><li>javax.microediton.midlet (aplicativos para MID) </li></ul></ul><ul><ul><li>javax.microedition.lcdui (interface com o usuário) </li></ul></ul><ul><ul><li>javax.microedition.rms (memória persistente) </li></ul></ul>
  21. 21. Perfil mais recente <ul><li>MIDP 2.0 (JSR 118) –requisitos mínimos </li></ul><ul><ul><li>Memória </li></ul></ul><ul><ul><ul><li>256KB de memória não-volátil para a implementação MIDP (além do requisitado pelo CLDC) </li></ul></ul></ul><ul><ul><ul><li>128KB de memória volátil para alocação dinâmica (heap) </li></ul></ul></ul><ul><ul><ul><li>8KB de memória não-volátil para armazenamento persistente </li></ul></ul></ul><ul><ul><li>Display </li></ul></ul><ul><ul><ul><li>Tamanho tela: 96x54 pixels </li></ul></ul></ul><ul><ul><ul><li>Cor: 1 bit (display depth) –monocromático </li></ul></ul></ul><ul><ul><ul><li>Aspect ratio: 1:1 </li></ul></ul></ul><ul><ul><li>Entrada </li></ul></ul><ul><ul><ul><li>Teclado de telefone (one-handed keypad) e/ou </li></ul></ul></ul><ul><ul><ul><li>Teclado QWERTY (two-handed keyboard) e/ou </li></ul></ul></ul><ul><ul><ul><li>Tela sensível ao toque (touch screen) </li></ul></ul></ul><ul><ul><li>Conectividade </li></ul></ul><ul><ul><ul><li>2-vias, wireless, possivelmente intermitente e com faixa limitada </li></ul></ul></ul><ul><ul><li>Áudio </li></ul></ul><ul><ul><ul><li>Suportar em hardware ou software WAV e MIDI </li></ul></ul></ul>
  22. 22. MIDP 2.0, bibliotecas <ul><li>Pacotes </li></ul><ul><ul><li>javax.microediton.midlet(aplicativos para MID) </li></ul></ul><ul><ul><li>javax.microedition.lcdui(interface com o usuário) </li></ul></ul><ul><ul><li>javax.microedition.lcdui.game (suporte a jogos) </li></ul></ul><ul><ul><li>javax.microedition.rms(memória persistente) </li></ul></ul><ul><ul><li>javax.microedition.media (controle e processamento de áudio) </li></ul></ul><ul><ul><li>javax.microedition.media.control (controle e processamento de áudio) </li></ul></ul>
  23. 23. Pacotes opcionais <ul><ul><li>WMA (JSR120) </li></ul></ul><ul><ul><li>MMAPI (JSR135) </li></ul></ul><ul><ul><li>Web Services(JSR172) </li></ul></ul><ul><ul><li>Security and Trust (JSR177) </li></ul></ul><ul><ul><li>Location (JSR179) </li></ul></ul><ul><ul><li>SIP (JSR180) </li></ul></ul><ul><ul><li>Mobile 3D (JSR184) </li></ul></ul><ul><ul><li>JTWI (JSR185) </li></ul></ul><ul><ul><li>WMA 2.0 (JSR205) </li></ul></ul><ul><ul><li>Content Handler (JSR211) </li></ul></ul><ul><ul><li>SVG (JSR226) </li></ul></ul><ul><ul><li>Payment API (JSR229) </li></ul></ul><ul><ul><li>AMS (JSR234) </li></ul></ul><ul><ul><li>Internacionalization (JSR238) </li></ul></ul><ul><ul><li>Open GL(JSR239) </li></ul></ul><ul><ul><li>MSA(JSR248) </li></ul></ul><ul><ul><li>Mobile Sensor (JSR256) </li></ul></ul><ul><ul><li>File PIM(JSR75) </li></ul></ul><ul><ul><li>Bluetooth(JSR82) </li></ul></ul><ul><ul><li>Mascot Capsule V3 </li></ul></ul><ul><ul><li>Nokia UI API 1.1, VSCL2.0 </li></ul></ul><ul><li>Conjunto de APIs que estendem as funcionalidades básicas definidas no perfil </li></ul><ul><li>Exemplo, Sony Ericsson W905 </li></ul>
  24. 25. 2. Fragmentação
  25. 26. Fragmentação <ul><li>A plataforma Java ME foi concebida com o objetivo de propiciar portabilidade de aplicações entre dispositivos </li></ul><ul><ul><li>“ Write once, run every where” </li></ul></ul><ul><li>Entretanto as limitações do MIDP levaram fabricantes a definir APIs para funcionalidades específicas de seus dispositivos </li></ul><ul><ul><li>Algumas delas sendo padronizadas na forma de pacotes opctionais </li></ul></ul><ul><li>A diversidade de implementações levou a fragmentação da plataforma JavaME </li></ul><ul><ul><li>Diferentes dispositivos suportando diferentes APIs </li></ul></ul><ul><ul><li>Diferentes tipos de interfaces com usuário </li></ul></ul><ul><ul><li>Grande variação de recursos como memória </li></ul></ul><ul><li>A maioria das APIs têm implementação nativa </li></ul><ul><ul><li>Isso inviabiliza a “instalação” de APIs em dispositivos </li></ul></ul>
  26. 27. Fragmentação <ul><li>Como solucionar o problema? </li></ul><ul><li>A comunidade Java tem criado especificações “umbrella” que definem um denominador comum para a plataforma JavaME </li></ul><ul><ul><li>JSR 185 –Java Tecnology for the Wireless Industry </li></ul></ul><ul><ul><li>JSR 248 –Mobile Service Architecture </li></ul></ul><ul><ul><li>JSR 249 –Mobile Service Architecture Advanced </li></ul></ul><ul><ul><ul><li>“ Public Review, 23 Feb 2009” </li></ul></ul></ul>
  27. 28. JTWI, MSA1 e MSA2
  28. 29. Fragmentação <ul><li>A fragmentação da plataforma JavaME cria um problema de portabilidade de aplicações </li></ul><ul><ul><li>Entre diferentes fabricantes ou mesmo na família de dispositivos de um único fabricante </li></ul></ul><ul><li>A plataforma JavaME tem recebido outras críticas </li></ul><ul><ul><li>Lentidão da JCP na definição de novas especificações </li></ul></ul><ul><ul><ul><li>A demora pelo MIDP3 tem sofrido fortes críticas </li></ul></ul></ul><ul><ul><li>Mecanismos de segurança baseado em assinuatura protegem operadoras, mas limitam desenvolvedores </li></ul></ul>
  29. 30. Fragmentação <ul><ul><ul><li>Plataformas de aplicações mais recentes tem surgido com a promessa de solucionar esses problemas e ameaçar o JavaME </li></ul></ul></ul><ul><ul><ul><ul><li>Flash Lite da Adobe (Action Script) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Android do Google/OHA (HTC, Motorola, Sony Ericsson, Samsung...) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>OSGI Mobile da Sprint </li></ul></ul></ul></ul><ul><ul><ul><ul><li>webOS da Palm (HTLM, CSS e JavaScript) </li></ul></ul></ul></ul>
  30. 31. 3. MIDlets
  31. 32. MIDlets <ul><li>O termo MIDlet utilizado para designar o aplicativo implementado para ser executado em dispositivos MIDP. </li></ul><ul><ul><li>MIDlet é derivado da classe abstrata </li></ul></ul><ul><ul><ul><li>javax.microedition.midlet.MIDlet. </li></ul></ul></ul><ul><li>Um conjunto de MIDlets podem ser agrupados em uma MIDlet suite. </li></ul><ul><ul><li>Todos os MIDlets de uma suite são carregados, instalados e desinstalados como uma entidade única. </li></ul></ul>
  32. 33. Empacotamento <ul><li>Um MIDlet é empacotado para distribuição (download) em dois arquivos </li></ul><ul><ul><li>Arquivo JAR (JavaARchive) </li></ul></ul><ul><ul><ul><li>Código das classes (bytecode) compactado para execução </li></ul></ul></ul><ul><ul><ul><li>Recursos (arquivos de áudio, imagem, vídeo, xml, etc...) </li></ul></ul></ul><ul><ul><ul><li>Manifesto discriminando conteúdo do JAR </li></ul></ul></ul><ul><ul><li>Arquivo JAD (Java Application Descriptor) </li></ul></ul><ul><ul><ul><li>Indormações descritivas do MIDlet (não contém código nem arquivos de recursos) </li></ul></ul></ul><ul><ul><ul><li>Informações obrigatórias incluem tamanho em bytes do JAR e sua URL </li></ul></ul></ul>
  33. 34. Exemplo de Manifesto <ul><li>Manifest-Version: 1.0 </li></ul><ul><li>MicroEdition-Configuration: CLDC-1.1 </li></ul><ul><li>MIDlet-Name: TestMIDlet </li></ul><ul><li>MIDlet-Vendor: Midlet Suite Vendor </li></ul><ul><li>MIDlet-1: TestMIDlet, ,com.venturus.TestMIDlet </li></ul><ul><li>MIDlet-Version: 1.0.0 </li></ul><ul><li>MicroEdition-Profile: MIDP-2.0 </li></ul>
  34. 35. Exemplo de JAD <ul><li>MIDlet-1:TestMIDlet,,com.venturus.TestMIDlet </li></ul><ul><li>MIDlet-Jar-Size: 852 </li></ul><ul><li>MIDlet-Jar-URL:TestMIDlet.jar </li></ul><ul><li>MIDlet-Name:TestMIDlet </li></ul><ul><li>MIDlet-Vendor:Midlet Suite Vendor </li></ul><ul><li>MIDlet-Version: 1.0.0 </li></ul><ul><li>MicroEdition-Configuration: CLDC-1.1 </li></ul><ul><li>MicroEdition-Profile: MIDP-2.0 </li></ul>
  35. 36. MIDlet, ciclo de vida <ul><li>Assim como um Applet, um MIDlet é um aplicativo gerenciado </li></ul><ul><ul><li>Applet é gerenciado pelo navegador (“browser”). </li></ul></ul><ul><ul><li>MIDlet é gerenciado por programa de gerenciamento implementado no dispositivo (AMS –Application Management Software). </li></ul></ul><ul><ul><li>O gerenciamento do ciclo de vida do MIDlet é exercido através da execução dos seguintes métodos do MIDlet </li></ul></ul><ul><ul><ul><li>startApp() </li></ul></ul></ul><ul><ul><ul><li>pauseApp() </li></ul></ul></ul><ul><ul><ul><li>destroyApp() </li></ul></ul></ul>
  36. 37. Estrutura de um MIDlet
  37. 38. MIDlet, ciclo de vida <ul><li>O ciclo de vida de umMIDlet é composto de 3 estados </li></ul><ul><ul><li>Parado (paused) </li></ul></ul><ul><ul><ul><li>O MIDlet foi carregado e o construtor foi executado. </li></ul></ul></ul><ul><ul><li>Ativo (active) </li></ul></ul><ul><ul><ul><li>O MIDlet está ativo, em execução. </li></ul></ul></ul><ul><ul><li>Destruído (destroyed) </li></ul></ul><ul><ul><ul><li>O MIDlet terminou e aguarda o descarte pelo garbage coletor </li></ul></ul></ul>
  38. 39. MIDlet, ciclo de vida
  39. 40. Estado ativo <ul><li>Em algum instante após a construção, com o MIDlet no estado parado, o dispositivo (AMS) executa o método startApp(). Após o retorno deste método, o MIDlet encontra-se no estado ativo. </li></ul><ul><li>Tipicamente, startApp() efetua as inicializaçõesn ecessárias, cria e apresenta a interface com o usuário. </li></ul><ul><li>Se durante a execução de startApp() não for possível realizar alguma inicialização, o disparo da exceção MIDletStateChangeException destrói o MIDlet, com a respectiva execução pelo AMS do método destroyApp(). </li></ul>
  40. 41. MIDlet, solicitação de mudança de estado
  41. 42. 4. Interface com usuário
  42. 43. Interface com usuário <ul><li>Pacote LCDUI </li></ul><ul><ul><li>Suporte de alto-nível </li></ul></ul><ul><ul><ul><li>Maior abstração para desenvolvedor </li></ul></ul></ul><ul><ul><ul><li>Componentes gráficos predefinidos </li></ul></ul></ul><ul><ul><ul><ul><li>Automaticamente adaptáveis a diferentes dispositivos com diferentes tamanho de telas </li></ul></ul></ul></ul><ul><ul><ul><li>Desenvolvedor tem pouco controle sobre “look and feel” </li></ul></ul></ul><ul><ul><ul><ul><li>Cor, formato, tamanho dos componentes não podem ser customizados </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Não permite acesso direto a eventos das teclas </li></ul></ul></ul></ul><ul><ul><li>Suporte de baixo-nível </li></ul></ul><ul><ul><ul><li>Menor nível de abstração para desenvolvedor </li></ul></ul></ul><ul><ul><ul><li>Posicionamento preciso dos elementos gráficos </li></ul></ul></ul><ul><ul><ul><li>Permite acesso a eventos das teclas </li></ul></ul></ul><ul><ul><ul><li>Pode comprometer portabilidade </li></ul></ul></ul>
  43. 44. Hierarquia de classes LCDUI
  44. 45. Screen Componentes Alert List TextBox Form
  45. 46. Displayable <ul><li>public abstract class Displayable extends Object </li></ul><ul><li>Objeto que pode ser colocado no display. </li></ul><ul><li>Um objeto displayable pode ter um título, um ticker, comandos e um listener a ele associados. </li></ul>
  46. 47. Classe Item <ul><li>Items são elementos que podem ser adicionados a um Form </li></ul>
  47. 48. Display <ul><li>public class Display extends Object </li></ul><ul><ul><li>Gerenciador da tela e dos dispositivos de entrada. </li></ul></ul><ul><ul><li>Existe apenas um display para cada MIDlet </li></ul></ul><ul><ul><li>Método para ter acesso ao display </li></ul></ul><ul><ul><ul><li>Static Display getDisplay(MIDlet midlet) </li></ul></ul></ul><ul><ul><li>Método para requisitar que objeto Displayable seja apresentado na tela </li></ul></ul><ul><ul><ul><li>void setCurrent(Displayable nextDisplayable) </li></ul></ul></ul>
  48. 49. Comandos <ul><li>public class Command extends Object </li></ul><ul><li>Construtor </li></ul><ul><ul><li>Command(String label, int commandType, int priority) </li></ul></ul><ul><li>CommandType </li></ul><ul><ul><li>BACK, CANCEL, EXIT, HELP, ITEM, OK, SCREEN, STOP. </li></ul></ul><ul><ul><li>Indicar o propósito do comando. </li></ul></ul><ul><ul><li>Dispositivo faz mapeamento para softkey que julgar apropriada. </li></ul></ul><ul><li>Priority </li></ul><ul><ul><li>Dispositivo, caso necessário, privilegia acesso ao comando. </li></ul></ul><ul><li>Comando é tratado por CommandListener </li></ul>
  49. 50. CommandListener <ul><li>public interface CommandListener </li></ul><ul><li>Usada por aplicações para receber eventos de comandos </li></ul><ul><ul><li>A aplicação deverá criar uma classe que implemente a interface </li></ul></ul><ul><ul><li>Uma instância do objeto da classe deve ser passado para o método addCommand do objeto Displayable em questão </li></ul></ul><ul><ul><li>Como um método de sistema, sua execução deve retornar assim que possível </li></ul></ul><ul><ul><ul><li>Considerar a criação de uma Thread para o tratamento do evento </li></ul></ul></ul><ul><li>Método a ser implementado </li></ul><ul><ul><li>commandAction (Command c, Displayable d) </li></ul></ul>
  50. 51. Exercício 1
  51. 52. Questions

×