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

19,464 views

Published on

Minicurso ministrado durante o WTISC 2009, na UFC campus Quixadá.

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

  1. 1. • 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
  2. 2. • 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)
  3. 3. • 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
  4. 4. • 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
  5. 5. • 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...
  6. 6. • 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)
  7. 7. • 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
  8. 8. • 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)
  9. 9. • 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.
  10. 10. 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
  11. 11. • 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)
  12. 12. • 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
  13. 13. • 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
  14. 14. • Para o CDC – Mesma especificação da JVM do J2SE • Para o CLDC – Kilo Virtual Machine (KVM)
  15. 15. • 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.
  16. 16. • CLDC
  17. 17. • 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
  18. 18. • 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;
  19. 19. • Segurança: baseado em permissões do JSE; • Novas API´s para aprimorar o desenvolvimento: – Game API; – Media API; – Secure Connection API;
  20. 20. • 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).
  21. 21. • 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);
  22. 22. • Hierarquia dos principais componentes gráficos
  23. 23. • 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
  24. 24. • É 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;
  25. 25. • 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
  26. 26. • 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.
  27. 27. • 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
  28. 28. • 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
  29. 29. 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. }
  30. 30. 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. }
  31. 31. • Iniciem o NetBeans...
  32. 32. • 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.
  33. 33. • 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.
  34. 34. • 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.
  35. 35. Fonte: www.javamovel.com
  36. 36. • 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

×