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

44

description

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

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

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

• Bolsista UFC:Monitor do Laboratório de Mobilidade e Tecnologia da Informação (MobiTI)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?– 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• 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 – 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– 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– Sun JavaME

– SuperWaba– Google Android– RIM Blackberry

• Não Java– Symbian (C/C++,

Python)

– Windows Mobile (DotNet CompactFramework)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– 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)• 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• 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 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íficaconfiguraçã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• 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 • 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.)PDA’s, telefones 3G, etc.)

• CLDC – Connected Limited DeviceConfiguration– 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);– 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;• 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;– 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 MIDletcom os métodos de criar, iniciar, pausar e 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 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– 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• 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 • 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 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 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 JADMIDlet-1: Teste, Teste.png, Teste

MIDlet-Jar-Size: 100

MIDlet-Jar-URL: Teste.jar

MIDlet-Name: TesteMIDlet-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 CommandListener6. {7. private Display display;8. private Form formPrincipal;9. private Command cmdSair;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 MIDlet22. public void startApp() {23. display.setCurrent(formPrincipal);24. }25.26. // Método chamado quando o MIDlet é pausado27. public void pauseApp() {}28.29. // Método chamado quando o MIDlet é fechado29. // Método chamado quando o MIDlet é fechado30. public void destroyApp(boolean unconditional) {}31.32. // Método chamado quando algum command é ativado33. 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 (ConnectedDevice 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 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 InformationDevice 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 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