• Sistemas de Informação, UFC-Quixadá   (5º semestre)


• Bolsista UFC:
  Monitor do Laboratório de Mobilidade e
  Tecnologia da Informação (MobiTI)

• Mais? www.igorpimentel.com
• 02/09
  –   Introdução
  –   Por que desenvolver para dispositivos móveis?
  –   Plataformas
  –   Por que Java ME?
  –   Java ME - Conceitos básicos
  –   Ambiente de Desenvolvimento
  –   Distribuição
  –   Hello World
  –   Praticando
• 04/09
  – Exemplos (Prática)
•   Pequenos em tamanho
•   Memória limitada (Primária e secundária)
•   Poder de processamento limitado
•   Baixo consumo de energia
•   Robusto e confiável
•   Conectividade limitada
•   Curto tempo de inicialização
• Clientes potenciais em constante crescimento
• Existe vários fabricantes, modelos e
  funcionalidades
• Crescimento explosivo de dispositivos móveis
  – Celulares, PDAs, notebooks, netbooks, tocadores de
    mídia, ...
• Diferentes recursos de multimídia
  – Tela, captura de imagens, armazenamento,
    processamento, comunicação
• Redes Móveis
  – Maior largura de banda, melhor cobertura
• Conteúdo
  – Crescimento da mídia digital
  – Mudanças na forma como o conteúdo é produzido
• Tipos de aplicações
  –   Comunicação via voz
  –   Navegação pela Web
  –   Acesso a arquivos de mídia
  –   GPS
  –   Jogos
  –   Conectando com pessoas...
• Baseado em Java      • Não Java
  –   Sun JavaME         – Symbian (C/C++,
  –   SuperWaba            Python)
  –   Google Android     – Windows Mobile (Dot
  –   RIM Blackberry       Net Compact
                           Framework)
                         – PalmOS, Pocket PC
                           (C/C++)
                         – IPhone (Objective C)
                         – BREW (C/C++)
                         – Microbrowser (XHTML)
                         – FlashLite (ActionScript)
• Como programar em uma única linguagem de
  forma a garantir que a aplicação possa
  funcionar nos diversos tipos de dispositivos?
  –   Independência de Plataforma
  –   Orientação a Objetos
  –   Networking
  –   Segurança
  –   Tratamento de Exceções
  –   Multithreads
  –   ...e o mais importante, PADRONIZAÇÃO
• 1995: Surgimento da linguagem Java
• 1999:
  – Lançado o Java2 (Java 1.2)
  – Divisão das 3 plataformas:
     • J2EE (Java2 Enterprise Edition)
     • J2SE (Java2 Standard Edition)
     • J2ME (Java2 Micro Edition)
• 2006:
  – Nova nomenclatura – Tachal “2”:
     • JEE (Java Enterprise Edition)
     • JSE (Java Standard Edition)
     • JME (Java Micro Edition)
• Java EE
  Plataforma voltada a aplicações coorporativas, no lado do servidor.
• Java SE
  Plataforma para aplicações do lado do cliente e demais aplicativos
  para computadores pessoais.
• Java ME
  Plataforma Java voltada ao desenvolvimento de aplicações
  executadas em dispositivos com limitados recursos de hardware.
O Java ME é uma versão reduzida da
plataforma Java que permite que aplicativos
sejam criados para dispositivos móveis com
diversas vantagens da plataforma Java.
Projetado para dispositivos com limitações de
memória, tela e processamento.


ATENÇÃO!
– JME == Java Micro Edition
– JME != Java Mobile Edition
• Define uma plataforma Java para uma ampla
  variedade de dispositivos
• Define recursos da linguagem Java e as
  bibliotecas Java básicas da JVM para essa
  configuração específica
• Leva em consideração
  – Memória, vídeo, conectividade e processamento
• Principais configurações
  – Conected Device Configuration (CDC)
  – Conected, Limited Device Configuration (CLDC)
• Conjunto de API’s que complementa uma
  “Configuração” para prover funcionalidades para
  um determinado mercado ou dispositivo.
• O perfil ajuda na portabilidade das aplicações
• Principal configuração
  – Mobile Information Device Profile (MIDP)
     • Aplicações em dispositivos wireless sobre a CLDC
• As JVMs transformam os arquivos .class em
  código de máquina para a plataforma específica
• Isto torna os programas escritos em Java
  independentes de plataforma de execução
• Cada SO deve possuir uma implementação da
  JVM
• Para o CDC
  – Mesma especificação da JVM do J2SE
• Para o CLDC
  – Kilo Virtual Machine (KVM)
• CDC – Connected Device Configuration
  – Especifica o ambiente Java para TV Digital,
    dispositivos sem fio de alto nível e sistemas
    automotivos.
  – Dispositivos com cerca de 2MB de RAM (alguns
    PDA’s, telefones 3G, etc.)
• CLDC – Connected Limited Device
  Configuration
  – Especifica o ambiente Java para telefones celulares,
    pagers e PDAs.
  – Equipamentos com baixíssimos níveis de
    processamento e capacidade de memória.
• CLDC
• Foi o primeiro perfil do Java ME
• É focado em dispositivos implementados com o
  CLDC
• É responsável por:
  –   Ferramentas de tela (Display);
  –   Interação com o usuário;
  –   Persistência de dados;
  –   "Messaging" (SMS, email, etc), segurança e
      comunicação através da rede wireless
•   128 kB de memória não volátil;
•   32 kB para heap;
•   8 kB para persistência de dados;
•   Tela de 96x54 pixels;
•   Entrada de dados;
•   Conexões de rede (intermitentes);
•   Segurança – conceito de sandbox das applets;
• Segurança: baseado em permissões do JSE;
• Novas API´s para aprimorar o desenvolvimento:
  – Game API;
  – Media API;
  – Secure Connection API;
• Uma aplicação MIDP é chamada de MIDlet. O
  software de gerenciamento da aplicação (AMS -
  Application Management Software) do
  dispositivo interage diretamente com o MIDlet
  com os métodos de criar, iniciar, pausar e
  destruir o MIDlet.
• O MIDlet é parte do pacote
  javax.microedition.midlet. Necessita estender a
  classe MIDlet. E pode requisitar parâmetros do
  AMS conforme definido no descritor da
  aplicação (JAD – Java Application Descriptor).
• Start – Onde é feita a Aquisição de
  recursos inicializando a execução
  (startApp);
• Pause – Liberação de recursos em um
  modo de espera, ou seja, pausado
  utilizado ao atender telefone, receber SMS
  dentre outra aplicação (pauseApp);
• Destroy – Liberação de todos os recursos
  (destroyApp);
• Hierarquia dos principais componentes gráficos
• Alguns recursos disponíveis:
   – RMS - Record Management System
   – GCF - Generic Connection Framework


• Principais pacotes opcionais:
   –   JABWT - Java API for Bluetooth
   –   WMA - Wireless Messaging API
   –   MMAPI - Mobile Media API
   –   WSA - J2ME Web Service API
   –   Game API
   –   Telephony API
• É preciso ter instalado:
   – JDK (Java Development Kit);
   – WTK (JME Wireless Toolkit);
   – IDE ou Editor para os códigos:
      •   Eclipse + EclipseME
      •   NetBeans + Mobility Pack;
      •   Gel;
      •   JBuilder;
• Ferramenta principal para desenvolvimento de
  J2ME MIDP
• Emula vários dispositivos e possibilita que
  outros sejam instalados.
• Possibilita conexão e na versão 2, testes de
  SMS e MMS
• É possível controlar a taxa de transmissão,
  quantidade de memória, tipo de http
• MIDlets precisam ser empacotados
  corretamente antes de serem enviados a um
  dispositivo para instalação. A classe principal
  MIDlet que age como o ponto de entrada
  principal para o MIDlet, juntamente com as
  classes que você construiu e quaisquer imagens
  ou outros arquivos para os quais precisa de
  acesso em tempo de execução, precisam ser
  empacotados em um único arquivo JAR.
• Um arquivo JAR (Java Archive file) contém a
  definição de empacotamento dos arquivos que
  são necessários para rodar a aplicação.
  Também é provida informação de
  empacotamento semelhante em outro arquivo
  chamado Java Aplication Descriptor (ou JAD)
  que é tratado separadamente do JAR. Um JAR
  pode conter mais de um MIDlet, neste caso
  todos os MIDlets devem estar dentro do mesmo
  MIDlet suite. O arquivo JAR deve conter todos
  os arquivos que fazem parte de um MIDlet suite
• Conteúdo de um arquivo JAD
MIDlet-1: Teste, Teste.png, Teste
MIDlet-Jar-Size: 100
MIDlet-Jar-URL: Teste.jar
MIDlet-Name: Teste
MIDlet-Vendor: Unknown
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-2.0
1.    // Bibliotecas Básicas:
2.    import javax.microedition.lcdui.*;
3.    import javax.microedition.midlet.*;
4.
5.    public class OlaMundo extends MIDlet implements CommandListener
6.    {
7.       private Display display;
8.       private Form formPrincipal;
9.       private Command cmdSair;
10.
11.      // Construtor:
12.      public AloMundo() {
13.              display = Display.getDisplay(this);
14.              formPrincipal = new Form("Titulo formPrincipal");
15.              cmdSair = new Command("Sair", Command.EXIT, 1);
16.
17.             formPrincipal.append(“Olá mundo!");
18.             formPrincipal.addCommand(cmdSair);
19.             formPrincipal.setCommandListener(this);
20.      }
21.     // Método chamado na inicialização do MIDlet
22.     public void startApp() {
23.                  display.setCurrent(formPrincipal);
24.     }
25.
26.     // Método chamado quando o MIDlet é pausado
27.     public void pauseApp() {}
28.
29.     // Método chamado quando o MIDlet é fechado
30.     public void destroyApp(boolean unconditional) {}
31.
32.     // Método chamado quando algum command é ativado
33.     public void commandAction(Command cmd, Displayable dis)   {
34.             if (cmd == cmdSair) {
35.                    destroyApp(false);
36.                    notifyDestroyed();
37.             }
38.     }
39. }
• Iniciem o NetBeans...
• JME (Java Micro Edition) é a plataforma Java direcionada para
  micro aplicativos. Ou seja, aplicativos destinados a dispositivos
  que possuem processamento, memória e vídeo limitados, como
  celulares, PDA’s, TVs, controle remotos e outros embarcados.
• A arquitetura JME é dividida em Configurações, Perfis, Máquina
  Virtual e API’s opcionais.
• As configurações definem as bibliotecas que são necessárias para
  o funcionamento da máquina virtual (JVM). As principais são: CLDC
  (Connected, Limited Device Configuration) e CDC (Connected
  Device Configuration).
• A primeira é destinada a dispositivos mais simples e menores, como
  celulares, pagers e PDAs, que possuem processamento de 16/32
  bits e memória de 128/512 kb. A segunda rege os dispositivos com
  capacidade um pouco maior: com pelo menos 32bits de
  processamento e 2 MegaBytes de memória, como TV digital,
  dispositivos sem fio de alto nível e sistemas automotivos.
• Os perfis são um conjunto de aplicações que complementam uma
  configuração e fornecem funcionalidades para desenvolver um
  aplicativo para um determinado dispositivo.
• Perfis para a configuração CLDC: MIDP (Mobile Information
  Device Profile) e PDAP (PDA Profile).
• MIDP é a biblioteca necessária para a execução de qualquer
  aplicativo escrito para J2ME, os chamados MIDlets. Ele possui
  classes de interface com o usuário e acesso a rede, entre outros. E
  PDAP é um ambiente de execução especialmente para PDAs.
• Para a CDC temos o Foundation Profile e o Personal Basis Profile.
  O primeiro é um perfil para dispositivos interconectados em rede e
  sem interface gráfica. E o segundo oferece suporte a gráficos.
• Quanto a máquina virtual temos a CVM (Compact Virtual Machine),
  que é vinculada a configuração CDC e a KVM (Kilo Virtual Machine)
  que é vinculada a CLDC.
Fonte: www.javamovel.com
• Java: www.java.com
• JDK (Java Development Kit):
  http://java.sun.com/javase/downloads
• Netbeans: www.netbeans.org
• Eclipse: www.eclipse.org
• Plugin EclipseME: www.eclipseme.org
• WTK (JME Wireless Toolkit):
  http://java.sun.com/javame/downloads
• Referêcnias:
  www.javafree.org
  www.javamovel.com
Introdução a Programação de Dispositivos Móveis

Introdução a Programação de Dispositivos Móveis

  • 2.
    • Sistemas deInformação, UFC-Quixadá (5º semestre) • Bolsista UFC: Monitor do Laboratório de Mobilidade e Tecnologia da Informação (MobiTI) • Mais? www.igorpimentel.com
  • 3.
    • 02/09 – Introdução – Por que desenvolver para dispositivos móveis? – Plataformas – Por que Java ME? – Java ME - Conceitos básicos – Ambiente de Desenvolvimento – Distribuição – Hello World – Praticando • 04/09 – Exemplos (Prática)
  • 4.
    Pequenos em tamanho • Memória limitada (Primária e secundária) • Poder de processamento limitado • Baixo consumo de energia • Robusto e confiável • Conectividade limitada • Curto tempo de inicialização
  • 5.
    • Clientes potenciaisem constante crescimento • Existe vários fabricantes, modelos e funcionalidades • Crescimento explosivo de dispositivos móveis – Celulares, PDAs, notebooks, netbooks, tocadores de mídia, ... • Diferentes recursos de multimídia – Tela, captura de imagens, armazenamento, processamento, comunicação
  • 6.
    • Redes Móveis – Maior largura de banda, melhor cobertura • Conteúdo – Crescimento da mídia digital – Mudanças na forma como o conteúdo é produzido • Tipos de aplicações – Comunicação via voz – Navegação pela Web – Acesso a arquivos de mídia – GPS – Jogos – Conectando com pessoas...
  • 7.
    • Baseado emJava • Não Java – Sun JavaME – Symbian (C/C++, – SuperWaba Python) – Google Android – Windows Mobile (Dot – RIM Blackberry Net Compact Framework) – PalmOS, Pocket PC (C/C++) – IPhone (Objective C) – BREW (C/C++) – Microbrowser (XHTML) – FlashLite (ActionScript)
  • 9.
    • Como programarem uma única linguagem de forma a garantir que a aplicação possa funcionar nos diversos tipos de dispositivos? – Independência de Plataforma – Orientação a Objetos – Networking – Segurança – Tratamento de Exceções – Multithreads – ...e o mais importante, PADRONIZAÇÃO
  • 10.
    • 1995: Surgimentoda linguagem Java • 1999: – Lançado o Java2 (Java 1.2) – Divisão das 3 plataformas: • J2EE (Java2 Enterprise Edition) • J2SE (Java2 Standard Edition) • J2ME (Java2 Micro Edition) • 2006: – Nova nomenclatura – Tachal “2”: • JEE (Java Enterprise Edition) • JSE (Java Standard Edition) • JME (Java Micro Edition)
  • 11.
    • Java EE Plataforma voltada a aplicações coorporativas, no lado do servidor. • Java SE Plataforma para aplicações do lado do cliente e demais aplicativos para computadores pessoais. • Java ME Plataforma Java voltada ao desenvolvimento de aplicações executadas em dispositivos com limitados recursos de hardware.
  • 12.
    O Java MEé uma versão reduzida da plataforma Java que permite que aplicativos sejam criados para dispositivos móveis com diversas vantagens da plataforma Java. Projetado para dispositivos com limitações de memória, tela e processamento. ATENÇÃO! – JME == Java Micro Edition – JME != Java Mobile Edition
  • 15.
    • Define umaplataforma Java para uma ampla variedade de dispositivos • Define recursos da linguagem Java e as bibliotecas Java básicas da JVM para essa configuração específica • Leva em consideração – Memória, vídeo, conectividade e processamento • Principais configurações – Conected Device Configuration (CDC) – Conected, Limited Device Configuration (CLDC)
  • 16.
    • Conjunto deAPI’s que complementa uma “Configuração” para prover funcionalidades para um determinado mercado ou dispositivo. • O perfil ajuda na portabilidade das aplicações • Principal configuração – Mobile Information Device Profile (MIDP) • Aplicações em dispositivos wireless sobre a CLDC
  • 17.
    • As JVMstransformam os arquivos .class em código de máquina para a plataforma específica • Isto torna os programas escritos em Java independentes de plataforma de execução • Cada SO deve possuir uma implementação da JVM
  • 18.
    • Para oCDC – Mesma especificação da JVM do J2SE • Para o CLDC – Kilo Virtual Machine (KVM)
  • 19.
    • CDC –Connected Device Configuration – Especifica o ambiente Java para TV Digital, dispositivos sem fio de alto nível e sistemas automotivos. – Dispositivos com cerca de 2MB de RAM (alguns PDA’s, telefones 3G, etc.) • CLDC – Connected Limited Device Configuration – Especifica o ambiente Java para telefones celulares, pagers e PDAs. – Equipamentos com baixíssimos níveis de processamento e capacidade de memória.
  • 20.
  • 21.
    • Foi oprimeiro perfil do Java ME • É focado em dispositivos implementados com o CLDC • É responsável por: – Ferramentas de tela (Display); – Interação com o usuário; – Persistência de dados; – "Messaging" (SMS, email, etc), segurança e comunicação através da rede wireless
  • 22.
    128 kB de memória não volátil; • 32 kB para heap; • 8 kB para persistência de dados; • Tela de 96x54 pixels; • Entrada de dados; • Conexões de rede (intermitentes); • Segurança – conceito de sandbox das applets;
  • 23.
    • Segurança: baseadoem permissões do JSE; • Novas API´s para aprimorar o desenvolvimento: – Game API; – Media API; – Secure Connection API;
  • 24.
    • Uma aplicaçãoMIDP é chamada de MIDlet. O software de gerenciamento da aplicação (AMS - Application Management Software) do dispositivo interage diretamente com o MIDlet com os métodos de criar, iniciar, pausar e destruir o MIDlet. • O MIDlet é parte do pacote javax.microedition.midlet. Necessita estender a classe MIDlet. E pode requisitar parâmetros do AMS conforme definido no descritor da aplicação (JAD – Java Application Descriptor).
  • 26.
    • Start –Onde é feita a Aquisição de recursos inicializando a execução (startApp); • Pause – Liberação de recursos em um modo de espera, ou seja, pausado utilizado ao atender telefone, receber SMS dentre outra aplicação (pauseApp); • Destroy – Liberação de todos os recursos (destroyApp);
  • 27.
    • Hierarquia dosprincipais componentes gráficos
  • 28.
    • Alguns recursosdisponíveis: – RMS - Record Management System – GCF - Generic Connection Framework • Principais pacotes opcionais: – JABWT - Java API for Bluetooth – WMA - Wireless Messaging API – MMAPI - Mobile Media API – WSA - J2ME Web Service API – Game API – Telephony API
  • 29.
    • É precisoter instalado: – JDK (Java Development Kit); – WTK (JME Wireless Toolkit); – IDE ou Editor para os códigos: • Eclipse + EclipseME • NetBeans + Mobility Pack; • Gel; • JBuilder;
  • 30.
    • Ferramenta principalpara desenvolvimento de J2ME MIDP • Emula vários dispositivos e possibilita que outros sejam instalados. • Possibilita conexão e na versão 2, testes de SMS e MMS • É possível controlar a taxa de transmissão, quantidade de memória, tipo de http
  • 33.
    • MIDlets precisamser empacotados corretamente antes de serem enviados a um dispositivo para instalação. A classe principal MIDlet que age como o ponto de entrada principal para o MIDlet, juntamente com as classes que você construiu e quaisquer imagens ou outros arquivos para os quais precisa de acesso em tempo de execução, precisam ser empacotados em um único arquivo JAR.
  • 34.
    • Um arquivoJAR (Java Archive file) contém a definição de empacotamento dos arquivos que são necessários para rodar a aplicação. Também é provida informação de empacotamento semelhante em outro arquivo chamado Java Aplication Descriptor (ou JAD) que é tratado separadamente do JAR. Um JAR pode conter mais de um MIDlet, neste caso todos os MIDlets devem estar dentro do mesmo MIDlet suite. O arquivo JAR deve conter todos os arquivos que fazem parte de um MIDlet suite
  • 35.
    • Conteúdo deum arquivo JAD MIDlet-1: Teste, Teste.png, Teste MIDlet-Jar-Size: 100 MIDlet-Jar-URL: Teste.jar MIDlet-Name: Teste MIDlet-Vendor: Unknown MIDlet-Version: 1.0 MicroEdition-Configuration: CLDC-1.0 MicroEdition-Profile: MIDP-2.0
  • 36.
    1. // Bibliotecas Básicas: 2. import javax.microedition.lcdui.*; 3. import javax.microedition.midlet.*; 4. 5. public class OlaMundo extends MIDlet implements CommandListener 6. { 7. private Display display; 8. private Form formPrincipal; 9. private Command cmdSair; 10. 11. // Construtor: 12. public AloMundo() { 13. display = Display.getDisplay(this); 14. formPrincipal = new Form("Titulo formPrincipal"); 15. cmdSair = new Command("Sair", Command.EXIT, 1); 16. 17. formPrincipal.append(“Olá mundo!"); 18. formPrincipal.addCommand(cmdSair); 19. formPrincipal.setCommandListener(this); 20. }
  • 37.
    21. // Método chamado na inicialização do MIDlet 22. public void startApp() { 23. display.setCurrent(formPrincipal); 24. } 25. 26. // Método chamado quando o MIDlet é pausado 27. public void pauseApp() {} 28. 29. // Método chamado quando o MIDlet é fechado 30. public void destroyApp(boolean unconditional) {} 31. 32. // Método chamado quando algum command é ativado 33. public void commandAction(Command cmd, Displayable dis) { 34. if (cmd == cmdSair) { 35. destroyApp(false); 36. notifyDestroyed(); 37. } 38. } 39. }
  • 38.
    • Iniciem oNetBeans...
  • 39.
    • JME (JavaMicro Edition) é a plataforma Java direcionada para micro aplicativos. Ou seja, aplicativos destinados a dispositivos que possuem processamento, memória e vídeo limitados, como celulares, PDA’s, TVs, controle remotos e outros embarcados. • A arquitetura JME é dividida em Configurações, Perfis, Máquina Virtual e API’s opcionais.
  • 40.
    • As configuraçõesdefinem as bibliotecas que são necessárias para o funcionamento da máquina virtual (JVM). As principais são: CLDC (Connected, Limited Device Configuration) e CDC (Connected Device Configuration). • A primeira é destinada a dispositivos mais simples e menores, como celulares, pagers e PDAs, que possuem processamento de 16/32 bits e memória de 128/512 kb. A segunda rege os dispositivos com capacidade um pouco maior: com pelo menos 32bits de processamento e 2 MegaBytes de memória, como TV digital, dispositivos sem fio de alto nível e sistemas automotivos.
  • 41.
    • Os perfissão um conjunto de aplicações que complementam uma configuração e fornecem funcionalidades para desenvolver um aplicativo para um determinado dispositivo. • Perfis para a configuração CLDC: MIDP (Mobile Information Device Profile) e PDAP (PDA Profile). • MIDP é a biblioteca necessária para a execução de qualquer aplicativo escrito para J2ME, os chamados MIDlets. Ele possui classes de interface com o usuário e acesso a rede, entre outros. E PDAP é um ambiente de execução especialmente para PDAs. • Para a CDC temos o Foundation Profile e o Personal Basis Profile. O primeiro é um perfil para dispositivos interconectados em rede e sem interface gráfica. E o segundo oferece suporte a gráficos. • Quanto a máquina virtual temos a CVM (Compact Virtual Machine), que é vinculada a configuração CDC e a KVM (Kilo Virtual Machine) que é vinculada a CLDC.
  • 42.
  • 43.
    • Java: www.java.com •JDK (Java Development Kit): http://java.sun.com/javase/downloads • Netbeans: www.netbeans.org • Eclipse: www.eclipse.org • Plugin EclipseME: www.eclipseme.org • WTK (JME Wireless Toolkit): http://java.sun.com/javame/downloads • Referêcnias: www.javafree.org www.javamovel.com