SlideShare a Scribd company logo
1 of 22
Download to read offline
Computação Móvel

  Veio para resolver um grande problema desta
                “Era da Informação”
   (ou excesso de Informação, segundo alguns)
Necessidade de acesso à informação
(qualquer lugar e a qualquer momento)
–Aumentar a eficiência do trabalho
–Facilidade no transporte de dispositivos
–Cada vez mais dispositivos
–Cada vez mais recursos
–Custos caindo...
Computação Móvel

                  Redes:
                   Wi Fi        Internet
                  Wi Max
                 Bluetooth




                  Serviços
Dispositivos      Telefonia   Operadoras
Portáteis ou       Celular
Embarcados
Computação Móvel
Principais problemas
Conectividade
–Perda de conexão
–Qualidade variável do enlace – sem QoS
–Regiões sem Cobertura
–Largura de Banda estreita
Dispositivos
–Possuem   poucos recursos
–Energia limitada
–Interface pobre
–Grandes diferenças entre eles
Por que Java?
●O JavaME (MicroEdition) é um retorno do Java
as origens, comunicação de pequenos
dispositivos heterogêneos.
●Foi criada pois o Java cresceu muito

●Diferentes Dispositivos:

–Multiplataforma   => Máquina Virtual
●Quantidade de desenvolvedores
●Suporte dos maiores fabricantes:

–Nokia,   Siemens, Motorola, Sony/Ericson, LG...
JavaME – as 2 Divisões

Padrão de arquitetura     Arquitetura CDC     Arquitetura CLDC
 Programa JavaME         Programa JavaME       Programa JavaME

        Perfil             FP / PBP / PP            MIDP

    Configuração               CDC                  CLDC

  Máquina Virtual            JVM-CDC                KVM

      Hardware             Bons Recursos        Muito Simples
                    Palm, Embarcados, SetupBox Celulares, Palm
JavaME - siglas
 Configurações
●CLDC: Conected Limited Device Configuration

–Poucos     recursos e conexão fraca -> Celulares
●   CDC: Conected Device Configuration
–Bons     recursos computacionais e de conexão
 Perfis
●MIDP: Mobile Information Device Profile

–Perfil   usado para desenvolvimento para celulares
●FP: Foundation Profile – sem GUI
●PBP: Personal Basis Profile – gráficos limitados

●PP: Personal Profile – quase Java padrão

–Este     3 perfis são utilizados com o CDC
JavaME – API´s MIDP

CLDC
 java.lang
 java.io              MIDP
 java.util              java.microedition.lcdui
 java.microedition.io   java.microedition.lcdui.game
                        java.microedition.midlet
                        java.microedition.rms
                        java.microedition.pki
                        java.microedition.media
                        java.microedition.media.control
MIDlet Suite
●Pacote que segue os padrões de MIDP
●“.jar” da aplicação para celular, inclui:

–Inclui   o arquivo “MANIFEST.MF”
–Inclui   recursos (imagens, sons)
–Inclui   uma ou mais MIDlets (aplicações MIDP)
●Acompanha arquivo “.jad“ (java descriptor),
normalmente usado para baixar, instalar e
configurar o .jar.
    Ex:      Jogo.jar – aplicativo - 45kb
             Jogo.jad – descritor - 150bytes
MIDP – arquivo MANIFEST.MF
●Arquivo de propriedades, incluído no “.jar”
●Descreve o conteúdo e configura a Suite

●Campos obrigatórios:

–MIDlet-<n>:info MIDlet n - Nome,Icone,Classe
–MIDlet-Vendor: autor
–MIDlet-Name: nome da Suite MIDlet
–MIDlet-Version: versão do aplicativo
–MicroEdition-Configuration: versão do CLDC
–MicroEdition-Profile: versão do MIDP
●A linha MIDlet-<n> se repete para cada MIDlet
dentro da suite.
MIDP – exemplo MANIFEST.MF
Manifest-Version: 1.0
MIDlet-1: Xadrez, torre.png , demo.Xadrez
MIDlet-2: Dama, disco.png , demo.Dama
MIDlet-3: Gamão, gamao.png, demo.Gamao
MIDlet-Vendor: Chicao SA.
MIDlet-Name: Jogos Demo
MIDlet-Description: Exemplo de Jogos JavaME
MIDlet-Version: 1.0.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.1
MIDP – Descritor “.jad”

●Arquivo externo ao “.jar”, usado na instalação
●Semelhante ao MANIFEST.MF e com

precedência sobre ele
●Tem o mesmo nome do pacote “.jar”

●Outros campos utilizados:

–MIDlet-Jar-Size:   tamanho em bytes do “.jar”
–MIDlet-Jar-URL:    localização do “.jar”
MIDP – exemplo JogosDemo.jad

MIDlet-Jar-Size: 15516
MIDlet-Jar-URL: JogosDemo.jar
MIDlet-Name: Jogos Demo
MIDlet-Vendor: Chicao SA.
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.1
MIDlet – Ciclo de Vida

   Construtor

           Pausado

                 pauseApp           destroyApp
startApp

           Rodando                   Destruido
                       destroyApp
Criando um MIDlet
●   Basta criar uma classe que estenda MIDlet
–javax.microedition.midlet.MIDlet
      ●

●   Implementar os métodos:
–Construtor()
–public void startApp()
–public void pauseApp()
–public void destroyApp(boolean     b)

Para executar ou instalar, deve estar empacotada
 como MIDlet Suite, com o MANIFEST.MF
Interface Gráfica
 Características:
Tela pequena – pouca resolução e cores
Interface pobre – sem apontador

Por isso não possui alguns objetos gráficos
 comuns, como botões, e deve haver uma
 grande preocupação com a navegação e
 troca de telas no projeto.
A API javax.microedition.lcdui é a responsável
 pelos recursos gráficos do MIDP
API javax.microedition.lcdui
                             Object


  Display      Displayable    Command      Item         Graphics


  Canvas         Screen      ChoiceGroup    DateField     Font

                             CustomItem     TextField    Image
Alert                         ImageItem      Gauge
        Form                                             Ticker
                              StringItem     Spacer
            TextBox
                      List                              AlertType
Classes para Exibição de Telas
Display
  Representa a tela do dispositivo
  Existe apenas uma para todo o MIDlet
  Obtida por: tela = Display.getDisplay(this)
     “tela” é um Display e “this” é um MIDlet

Displayable
  São as telas configuradas
  São alternadas no Display atraves de:
   tela.setCurrent(menu)
     “tela” é um Display e “menu” é um Displayable
Classes “Displayable”

               Displayable   Canvas - classe para telas de
                               baixo nível, desenhos e eventos

  Canvas         Screen      Screen - classe para telas de alto
                               nível, específicas, dos tipos:
                                Alert: mensagens de aviso
Alert
                                TextBox: apenas textos
        Form                    List: lista de opções, menus
           TextBox              Form: permite agrupar itens,
                     List         campos de entrada, seletores,
                                  medidores, imagens e textos
Classes “Item”
                                  Componentes gráficos usados
              Item                       em Displayable Form
                                 TextField – entrada texto
ChoiceGroup          DateField   DateField – entrada data
                                 StringItem – etiqueta “label”
CustomItem           TextField
                                 ChoiceGroup – seleção
 ImageItem            Gauge      ImageItem – imagem
 StringItem           Spacer     Gauge – medidor
                                 Spacer – espaçador
                                 CustomItem – crie o seu...
Comandos – Classe Command
Problema:
 “Não há padronização de botões em celulares!”
Solução:
São atribuídos a tipos: OK, CANCEL, SCREEN, STOP,
 BACK, EXIT, HELP e ITEM
            O Celular se encarrega de colocar o
              comando na posição “padrão do
              aparelho” pelo tipo.
            Caso haja vários comandos na mesma
              posição, mostra um menu com as
              várias opções.
CommandListener
Interface para tratamento dos eventos de
  Command.
Deve ser implementado pela classe que vai tratar
  os comandos
Método a ser implementado:
 public void commandAction(Command c, Displayable d)
   onde: “c” recebe o objeto que gerou o comando
         “d” recebe a tela onde foi dado o comando
Este método pode ser o mesmo para tratar
 diversos comandos, por isso é hábito testá-los
Por enquanto é só!

More Related Content

Similar to Intro javame

Introdução ao J2ME Conexão Java 2004
Introdução ao J2ME Conexão Java 2004Introdução ao J2ME Conexão Java 2004
Introdução ao J2ME Conexão Java 2004elliando dias
 
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesCurso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesLeonardo Melo Santos
 
Aplicações Móveis com J2ME
Aplicações Móveis com J2MEAplicações Móveis com J2ME
Aplicações Móveis com J2MEelliando dias
 
Introdução a JavaME
Introdução a JavaMEIntrodução a JavaME
Introdução a JavaMEfrgo
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidTiago Bencardino
 
Treinamento Windows Phone
Treinamento Windows PhoneTreinamento Windows Phone
Treinamento Windows PhoneMario Pimentel
 
Curso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoCurso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoLuiz Carvalho
 
Java - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionalJava - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionala41172
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao SwingArthur Emanuel
 
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_juniorJuarez Junior
 
Java para dispositivos móveis
Java para dispositivos móveisJava para dispositivos móveis
Java para dispositivos móveisJoão Gabriel Lima
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidJosé Alexandre Macedo
 

Similar to Intro javame (20)

Introdução ao J2ME Conexão Java 2004
Introdução ao J2ME Conexão Java 2004Introdução ao J2ME Conexão Java 2004
Introdução ao J2ME Conexão Java 2004
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesCurso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
 
Aplicações Móveis com J2ME
Aplicações Móveis com J2MEAplicações Móveis com J2ME
Aplicações Móveis com J2ME
 
Introdução a JavaME
Introdução a JavaMEIntrodução a JavaME
Introdução a JavaME
 
Apostila JavaME
Apostila JavaMEApostila JavaME
Apostila JavaME
 
Android Aula 2
Android Aula 2Android Aula 2
Android Aula 2
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - Android
 
JavaME - Aula 1
JavaME - Aula 1JavaME - Aula 1
JavaME - Aula 1
 
Treinamento Windows Phone
Treinamento Windows PhoneTreinamento Windows Phone
Treinamento Windows Phone
 
Curso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoCurso de Introdução ao Android Básico
Curso de Introdução ao Android Básico
 
Java - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionalJava - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissional
 
Principais dicas para UIs do Android
Principais dicas para UIs do AndroidPrincipais dicas para UIs do Android
Principais dicas para UIs do Android
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao Swing
 
Android Aula 5
Android Aula 5Android Aula 5
Android Aula 5
 
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
 
Java swingcomponentes
Java swingcomponentesJava swingcomponentes
Java swingcomponentes
 
Java 03
Java 03Java 03
Java 03
 
Java para dispositivos móveis
Java para dispositivos móveisJava para dispositivos móveis
Java para dispositivos móveis
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento Android
 

Intro javame

  • 1. Computação Móvel Veio para resolver um grande problema desta “Era da Informação” (ou excesso de Informação, segundo alguns) Necessidade de acesso à informação (qualquer lugar e a qualquer momento) –Aumentar a eficiência do trabalho –Facilidade no transporte de dispositivos –Cada vez mais dispositivos –Cada vez mais recursos –Custos caindo...
  • 2. Computação Móvel Redes: Wi Fi Internet Wi Max Bluetooth Serviços Dispositivos Telefonia Operadoras Portáteis ou Celular Embarcados
  • 3. Computação Móvel Principais problemas Conectividade –Perda de conexão –Qualidade variável do enlace – sem QoS –Regiões sem Cobertura –Largura de Banda estreita Dispositivos –Possuem poucos recursos –Energia limitada –Interface pobre –Grandes diferenças entre eles
  • 4. Por que Java? ●O JavaME (MicroEdition) é um retorno do Java as origens, comunicação de pequenos dispositivos heterogêneos. ●Foi criada pois o Java cresceu muito ●Diferentes Dispositivos: –Multiplataforma => Máquina Virtual ●Quantidade de desenvolvedores ●Suporte dos maiores fabricantes: –Nokia, Siemens, Motorola, Sony/Ericson, LG...
  • 5. JavaME – as 2 Divisões Padrão de arquitetura Arquitetura CDC Arquitetura CLDC Programa JavaME Programa JavaME Programa JavaME Perfil FP / PBP / PP MIDP Configuração CDC CLDC Máquina Virtual JVM-CDC KVM Hardware Bons Recursos Muito Simples Palm, Embarcados, SetupBox Celulares, Palm
  • 6. JavaME - siglas Configurações ●CLDC: Conected Limited Device Configuration –Poucos recursos e conexão fraca -> Celulares ● CDC: Conected Device Configuration –Bons recursos computacionais e de conexão Perfis ●MIDP: Mobile Information Device Profile –Perfil usado para desenvolvimento para celulares ●FP: Foundation Profile – sem GUI ●PBP: Personal Basis Profile – gráficos limitados ●PP: Personal Profile – quase Java padrão –Este 3 perfis são utilizados com o CDC
  • 7. JavaME – API´s MIDP CLDC java.lang java.io MIDP java.util java.microedition.lcdui java.microedition.io java.microedition.lcdui.game java.microedition.midlet java.microedition.rms java.microedition.pki java.microedition.media java.microedition.media.control
  • 8. MIDlet Suite ●Pacote que segue os padrões de MIDP ●“.jar” da aplicação para celular, inclui: –Inclui o arquivo “MANIFEST.MF” –Inclui recursos (imagens, sons) –Inclui uma ou mais MIDlets (aplicações MIDP) ●Acompanha arquivo “.jad“ (java descriptor), normalmente usado para baixar, instalar e configurar o .jar. Ex: Jogo.jar – aplicativo - 45kb Jogo.jad – descritor - 150bytes
  • 9. MIDP – arquivo MANIFEST.MF ●Arquivo de propriedades, incluído no “.jar” ●Descreve o conteúdo e configura a Suite ●Campos obrigatórios: –MIDlet-<n>:info MIDlet n - Nome,Icone,Classe –MIDlet-Vendor: autor –MIDlet-Name: nome da Suite MIDlet –MIDlet-Version: versão do aplicativo –MicroEdition-Configuration: versão do CLDC –MicroEdition-Profile: versão do MIDP ●A linha MIDlet-<n> se repete para cada MIDlet dentro da suite.
  • 10. MIDP – exemplo MANIFEST.MF Manifest-Version: 1.0 MIDlet-1: Xadrez, torre.png , demo.Xadrez MIDlet-2: Dama, disco.png , demo.Dama MIDlet-3: Gamão, gamao.png, demo.Gamao MIDlet-Vendor: Chicao SA. MIDlet-Name: Jogos Demo MIDlet-Description: Exemplo de Jogos JavaME MIDlet-Version: 1.0.0 MicroEdition-Configuration: CLDC-1.1 MicroEdition-Profile: MIDP-2.1
  • 11. MIDP – Descritor “.jad” ●Arquivo externo ao “.jar”, usado na instalação ●Semelhante ao MANIFEST.MF e com precedência sobre ele ●Tem o mesmo nome do pacote “.jar” ●Outros campos utilizados: –MIDlet-Jar-Size: tamanho em bytes do “.jar” –MIDlet-Jar-URL: localização do “.jar”
  • 12. MIDP – exemplo JogosDemo.jad MIDlet-Jar-Size: 15516 MIDlet-Jar-URL: JogosDemo.jar MIDlet-Name: Jogos Demo MIDlet-Vendor: Chicao SA. MIDlet-Version: 1.0 MicroEdition-Configuration: CLDC-1.1 MicroEdition-Profile: MIDP-2.1
  • 13. MIDlet – Ciclo de Vida Construtor Pausado pauseApp destroyApp startApp Rodando Destruido destroyApp
  • 14. Criando um MIDlet ● Basta criar uma classe que estenda MIDlet –javax.microedition.midlet.MIDlet ● ● Implementar os métodos: –Construtor() –public void startApp() –public void pauseApp() –public void destroyApp(boolean b) Para executar ou instalar, deve estar empacotada como MIDlet Suite, com o MANIFEST.MF
  • 15. Interface Gráfica Características: Tela pequena – pouca resolução e cores Interface pobre – sem apontador Por isso não possui alguns objetos gráficos comuns, como botões, e deve haver uma grande preocupação com a navegação e troca de telas no projeto. A API javax.microedition.lcdui é a responsável pelos recursos gráficos do MIDP
  • 16. API javax.microedition.lcdui Object Display Displayable Command Item Graphics Canvas Screen ChoiceGroup DateField Font CustomItem TextField Image Alert ImageItem Gauge Form Ticker StringItem Spacer TextBox List AlertType
  • 17. Classes para Exibição de Telas Display Representa a tela do dispositivo Existe apenas uma para todo o MIDlet Obtida por: tela = Display.getDisplay(this) “tela” é um Display e “this” é um MIDlet Displayable São as telas configuradas São alternadas no Display atraves de: tela.setCurrent(menu) “tela” é um Display e “menu” é um Displayable
  • 18. Classes “Displayable” Displayable Canvas - classe para telas de baixo nível, desenhos e eventos Canvas Screen Screen - classe para telas de alto nível, específicas, dos tipos: Alert: mensagens de aviso Alert TextBox: apenas textos Form List: lista de opções, menus TextBox Form: permite agrupar itens, List campos de entrada, seletores, medidores, imagens e textos
  • 19. Classes “Item” Componentes gráficos usados Item em Displayable Form TextField – entrada texto ChoiceGroup DateField DateField – entrada data StringItem – etiqueta “label” CustomItem TextField ChoiceGroup – seleção ImageItem Gauge ImageItem – imagem StringItem Spacer Gauge – medidor Spacer – espaçador CustomItem – crie o seu...
  • 20. Comandos – Classe Command Problema: “Não há padronização de botões em celulares!” Solução: São atribuídos a tipos: OK, CANCEL, SCREEN, STOP, BACK, EXIT, HELP e ITEM O Celular se encarrega de colocar o comando na posição “padrão do aparelho” pelo tipo. Caso haja vários comandos na mesma posição, mostra um menu com as várias opções.
  • 21. CommandListener Interface para tratamento dos eventos de Command. Deve ser implementado pela classe que vai tratar os comandos Método a ser implementado: public void commandAction(Command c, Displayable d) onde: “c” recebe o objeto que gerou o comando “d” recebe a tela onde foi dado o comando Este método pode ser o mesmo para tratar diversos comandos, por isso é hábito testá-los