SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
ERISVALDO GADELHA SARAIVA JÚNIOR
Tecnólogo em Sistemas para Internet pelo IFPB
Graduando em Ciência da Computação pela UFPB
Pesquisador do LabTEVE (Laboratório de Tecnologias para o Ensino Virtual e Estatística)
E-mail: erisvaldojunior@gmail.com
Site: http://erisvaldojunior.com
Twitter: http://twitter.com/erisvaldojunior
Objetivo                           ROTEIRO
                              A plataforma J2ME
Desenvolver aplicações para
dispositivos        móveis
considerando fatores como     Exemplos Práticos
portabilidade,   uso     de
memória e processamento.      Interface X Portabilidade


                              Web / Pacotes Opcionais


                              Próximos Passos
Visão geral da plataforma Java




                 [SUN, 2008]
Configurações do JavaME




   CLDC 1.0 / CLDC 1.1
Perfis do CLDC


• Trata-se da especificação     • Revisão da especificação
original (JSR 37);              original (JSR 118);

•Provê o núcleo necessário
                                • Componentes          de
para aplicações móveis,
como componentes básicos        interface   aprimorados,
de interface e conexão de       HTTPS, suporte a jogos e
rede.                           aplicações multimídia.


                     MIDP 2 .1 . . . MIDP 3.0*
O que vamos usar
                       Possíveis pacotes opcionais

                       • Mobile   Media API
                       (MMAPI) – JSR 135;
                       • Wireless   Messaging
                       API (WMA) – JSR 205;
•É  o "padrão     de
                       •File       Connection
mercado" atual.        Optional       Package
                       (FCOP) – JSR 75.
Ciclo de vida de uma aplicação JavaME




               [FONSECA, 2005]
Estrutura básica de classes




                [FONSECA, 2005]
Estrutura expandida de classes




     Comum a todas as versões do MIDP   MIDP 2.0 ou superior
Expandindo mais ainda...
Muita hora nessa calma...

                                • Os     Commands        são
• Apesar     da      grande     essenciais.   Você     pode
quantidade de classes, elas     adicionar Commands em
são de muito fácil uso. Em      qualquer tela. Eles regem a
geral, basta apenas chamar      navegação da sua aplicação.
o construtor da classe, setar   Basta     implementar      o
alguns métodos e depois         método commandAction()
informar ao Display para        da                 interface
mostrá-la na tela;              CommandListener.
Persistência de Dados
• Através do RMS (Record   • Possui          recursos
Management Store), um      interessantes,       como
esquema             de     navegar pelos registros
armazenamento bastante     através        de      um
                           RecordEnumeration,
simples do JavaME;
                           filtrando-os da maneira
• Uma    aplicação pode    que achar conveniente
acessar múltiplos Record   (RecordFilter)           e
Stores e cada um poder     ordenando-os      também
ter N registros.           como                quiser
                           (RecordComparator).
Persistência de Dados




         Forma de armazenamento dos Record Stores
Tecnologias utilizadas


                         • Mobility
                           •Game Builder(Não)

                           •Visual Mobile
                           Designer (Não, é a
                           baba é?)
NetBeans 6.5 (Full ou Mobility)
•Suporte completo a plataforma
JavaME;


•Ferramenta RAD para navegação
de telas com o Visual Mobile
Designer;


•Ferramenta RAD para o design
dos jogos com o Game Builder.
Emuladores
             Sun Java Wireless
               Toolkit (JWT)


             Nokia S40/S60 SDK




               MotoDEV SDK
Emuladores
             Sun Java Wireless
               Toolkit (JWT)


             Nokia S40/S60 SDK




               MotoDEV SDK
Exemplo 1:
Olá Mundo!
Exemplo 2: FuelMIDlet (Parte 1/3)
Exemplo 2: FuelMIDlet (Parte 2/3)
Exemplo 2: FuelMIDlet (Parte 3/3)
Exemplo 3: PhoneBookMIDlet (Parte 1/3)
Exemplo 3:
PhoneBook
MIDlet
(Parte 2/3)
Exemplo 3: PhoneBookMIDlet (Parte 3/3)
Mas esses exemplos estão muito feios...

•Vamos melhorá-los!


•SplashScreen herdando de Canvas;


•Uso                                de
RecordFilter/RecordComparator       no
Exemplo 3;


•Trocar os componentes de alto nível
(Alert, Form, List) por telas de baixo
nível herdando de Canvas.
Exemplo 3: NameComparator
Exemplo 3: NameFilter
Principais classes do JavaME




     Comum a todas as versões do MIDP   MIDP 2.0 ou superior
ClasseCanvas
• Classe abstrata que deve   • As     classes   que
ser especializada para a
confecção de uma tela em
                             herdam de Canvas
baixo nível;                 podem implementar
• As classes que herdam      o               método
de                Canvas     keyPressed(),      que
obrigatoriamente devem
implementar o método
                             verifica     se   uma
paint(), responsável por     determinada tecla foi
desenhar a tela;             pressionada.
ClasseCanvas

                         • Graphics      possui
•O   método paint()
                         diversos      métodos
recebe          como
                         para desenhar na
argumento         uma
                         tela,    tais   como:
instância de Graphics,
                         drawImage(),
com a qual é possível
                         drawRect(), fillRect(),
desenhar na tela;
                         drawString(), etc.
ClasseCanvas (Imagens x Portabilidade)

                         •Todos    os desenhos
• A altura e a largura
da tela podem ser        devem ser sempre
obtidas        pelos     posicionados de acordo
métodos getHeight()      com as dimensões de
e         getWidth(),    tela, permitindo a
respectivamente;         portabilidade       da
                         aplicação.
ClasseCanvas (Teclas x Portabilidade)

                         •As    "Soft   Keys"    não
• Qualquer tecla que o   possuem           constantes
usuário    pressionar    definidas em Canvas, ou
                         seja, o keyCode varia de
pode ser tratada pelo    aparelho para aparelho.
método                   Com isso, o uso de
                         Commands é recomendado,
keyPressed(int           visando evitar-se problemas
keyCode);                de portabilidade.
Exemplo de Splash Screen com Canvas
Constantes de teclas emCanvas
GameCanvas x Canvas

                         • Em GameCanvas, não
• O MIDP 2.0 apresenta
                         há necessidade de
a classe GameCanvas,
                         implementar o método
que herda de Canvas e
                         paint(). Graphics é
possui        algumas
                         obtido            com
vantagens em relação a
                         getGraphics()   e   o
anterior,        sendo
                         estado das teclas com
bastante   útil   para
                         getKeyStates().
jogos;
Constantes de teclas emGameCanvas
Integração com a WEB
• J2ME   é capaz de realizar
requisições HTTP, do tipo GET ou
POST, bem como tratar suas
respostas. Isso permite:
   • Envio de conteúdo para
     uma aplicação PhP, RoR
     ou um Servlet;
   • A aplicação Web pode
     integrar o conteúdo a
     um banco de dados;
   • O cliente JavaME pode
     mostrar a resposta da
     requisição.
Pacotes Opcionais
•FileConnection and PIM API (JSR 75);
•Java APIs for Bluetooth 1.1 (JSR 82);
•Mobile Media API 1.1 (JSR 135);
•Location API for J2ME 1.1 (JSR 179);
•Mobile 3D Graphics API for J2ME 1.1
(JSR 184);
•Wireless Messaging API 2.0 (JSR 205);
    • Advanced             Multimedia
       Supplements         1.1   (JSR
       234);
    • Mobile Sensor API (JSR
       256);
    • Entre outros...
JavaME

Weitere ähnliche Inhalte

Was ist angesagt?

Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAmazon Web Services LATAM
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSAmazon Web Services LATAM
 
DevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na práticaDevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na práticaAri Stopassola Junior
 
Webinar Melhores práticas e lições aprendidas com aplicações sem servidor
Webinar Melhores práticas e lições aprendidas com aplicações sem servidorWebinar Melhores práticas e lições aprendidas com aplicações sem servidor
Webinar Melhores práticas e lições aprendidas com aplicações sem servidorAmazon Web Services LATAM
 
Primeiros passos utilizando o AWS Mobile Hub
Primeiros passos utilizando o AWS Mobile HubPrimeiros passos utilizando o AWS Mobile Hub
Primeiros passos utilizando o AWS Mobile HubAmazon Web Services LATAM
 
Webinar: Como obter valor comercial com Big Data
Webinar: Como obter valor comercial com Big DataWebinar: Como obter valor comercial com Big Data
Webinar: Como obter valor comercial com Big DataAmazon Web Services LATAM
 
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRJBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRElvis Rocha
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAmazon Web Services LATAM
 
Construindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsConstruindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsCamila Carrera
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.Amazon Web Services LATAM
 
Bibliotecas de interface rica no jsf 2
Bibliotecas de interface rica no jsf 2Bibliotecas de interface rica no jsf 2
Bibliotecas de interface rica no jsf 2Pablo Nóbrega
 
DevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínuaDevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínuaAmazon Web Services LATAM
 
Webinar: Serviço de Distribuição de Conteúdo da AWS
Webinar: Serviço de Distribuição de Conteúdo da AWS Webinar: Serviço de Distribuição de Conteúdo da AWS
Webinar: Serviço de Distribuição de Conteúdo da AWS Amazon Web Services LATAM
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAmazon Web Services LATAM
 
Rodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvemRodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvemAmazon Web Services LATAM
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebElenilson Vieira
 

Was ist angesagt? (20)

ArcServe in the AWS Cloud - part II
ArcServe in the AWS Cloud - part IIArcServe in the AWS Cloud - part II
ArcServe in the AWS Cloud - part II
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
 
Front7 React Native
Front7 React NativeFront7 React Native
Front7 React Native
 
JavaEE
JavaEEJavaEE
JavaEE
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWS
 
DevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na práticaDevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na prática
 
Webinar Melhores práticas e lições aprendidas com aplicações sem servidor
Webinar Melhores práticas e lições aprendidas com aplicações sem servidorWebinar Melhores práticas e lições aprendidas com aplicações sem servidor
Webinar Melhores práticas e lições aprendidas com aplicações sem servidor
 
Primeiros passos utilizando o AWS Mobile Hub
Primeiros passos utilizando o AWS Mobile HubPrimeiros passos utilizando o AWS Mobile Hub
Primeiros passos utilizando o AWS Mobile Hub
 
Como começar com Amazon EKS
Como começar com Amazon EKSComo começar com Amazon EKS
Como começar com Amazon EKS
 
Webinar: Como obter valor comercial com Big Data
Webinar: Como obter valor comercial com Big DataWebinar: Como obter valor comercial com Big Data
Webinar: Como obter valor comercial com Big Data
 
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRJBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
Construindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsConstruindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOps
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
 
Bibliotecas de interface rica no jsf 2
Bibliotecas de interface rica no jsf 2Bibliotecas de interface rica no jsf 2
Bibliotecas de interface rica no jsf 2
 
DevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínuaDevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínua
 
Webinar: Serviço de Distribuição de Conteúdo da AWS
Webinar: Serviço de Distribuição de Conteúdo da AWS Webinar: Serviço de Distribuição de Conteúdo da AWS
Webinar: Serviço de Distribuição de Conteúdo da AWS
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
Rodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvemRodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvem
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 

Ähnlich wie JavaME

Minicurso de TotalCross e Litebase
Minicurso de TotalCross e LitebaseMinicurso de TotalCross e Litebase
Minicurso de TotalCross e LitebaseNécio de Lima Veras
 
Introdução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos MóveisIntrodução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos Móveisigorpimentel
 
Introdução a JavaME
Introdução a JavaMEIntrodução a JavaME
Introdução a JavaMEfrgo
 
Criando jogos digitais em java
Criando jogos digitais em javaCriando jogos digitais em java
Criando jogos digitais em javaMichel Montenegro
 
Java para dispositivos móveis
Java para dispositivos móveisJava para dispositivos móveis
Java para dispositivos móveisJoão Gabriel Lima
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Javalimadavi
 
Poo1 aula 1 - java - história e introdução
Poo1   aula 1 - java -  história e introduçãoPoo1   aula 1 - java -  história e introdução
Poo1 aula 1 - java - história e introduçãoDenis Sobrenome
 
Poo1 aula 1 - java - história e introdução
Poo1   aula 1 - java -  história e introduçãoPoo1   aula 1 - java -  história e introdução
Poo1 aula 1 - java - história e introduçãoDenis Sobrenome
 
Introdução a game api do java me
Introdução a game api do java meIntrodução a game api do java me
Introdução a game api do java meErisvaldo Junior
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Aécio Costa
 
JavaFX - Uma visão Geral
JavaFX - Uma visão GeralJavaFX - Uma visão Geral
JavaFX - Uma visão GeralEder Nogueira
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHPFlávio Lisboa
 
Apresentação java
Apresentação javaApresentação java
Apresentação javamunosai
 
Java alem das aplicacoes comerciais convencionais
Java alem das aplicacoes comerciais convencionaisJava alem das aplicacoes comerciais convencionais
Java alem das aplicacoes comerciais convencionaisLeonardo Simberg
 

Ähnlich wie JavaME (20)

JavaME - Aula 2
JavaME - Aula 2JavaME - Aula 2
JavaME - Aula 2
 
Minicurso de TotalCross e Litebase
Minicurso de TotalCross e LitebaseMinicurso de TotalCross e Litebase
Minicurso de TotalCross e Litebase
 
Introdução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos MóveisIntrodução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos Móveis
 
Introdução a JavaME
Introdução a JavaMEIntrodução a JavaME
Introdução a JavaME
 
Criando jogos digitais em java
Criando jogos digitais em javaCriando jogos digitais em java
Criando jogos digitais em java
 
Java para dispositivos móveis
Java para dispositivos móveisJava para dispositivos móveis
Java para dispositivos móveis
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Java
 
Poo1 aula 1 - java - história e introdução
Poo1   aula 1 - java -  história e introduçãoPoo1   aula 1 - java -  história e introdução
Poo1 aula 1 - java - história e introdução
 
Poo1 aula 1 - java - história e introdução
Poo1   aula 1 - java -  história e introduçãoPoo1   aula 1 - java -  história e introdução
Poo1 aula 1 - java - história e introdução
 
ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01
 
O Mundo Wireless
O Mundo WirelessO Mundo Wireless
O Mundo Wireless
 
Introdução a game api do java me
Introdução a game api do java meIntrodução a game api do java me
Introdução a game api do java me
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!
 
JavaFX - Uma visão Geral
JavaFX - Uma visão GeralJavaFX - Uma visão Geral
JavaFX - Uma visão Geral
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
Intro javame
Intro javameIntro javame
Intro javame
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
 
Java 01
Java 01Java 01
Java 01
 
Java alem das aplicacoes comerciais convencionais
Java alem das aplicacoes comerciais convencionaisJava alem das aplicacoes comerciais convencionais
Java alem das aplicacoes comerciais convencionais
 

Mehr von Elenilson Vieira

Mehr von Elenilson Vieira (20)

Aulão de JPA com Tomaz Lavieri
Aulão de JPA com Tomaz LavieriAulão de JPA com Tomaz Lavieri
Aulão de JPA com Tomaz Lavieri
 
JavaME no Mercado Mobile
JavaME no Mercado MobileJavaME no Mercado Mobile
JavaME no Mercado Mobile
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
Apresentação da Doom
Apresentação da DoomApresentação da Doom
Apresentação da Doom
 
Palestra sobre a Sun
Palestra sobre a SunPalestra sobre a Sun
Palestra sobre a Sun
 
Apresentação da RedeSoft
Apresentação da RedeSoftApresentação da RedeSoft
Apresentação da RedeSoft
 
Java Collections - Tomaz Lavieri
Java Collections - Tomaz LavieriJava Collections - Tomaz Lavieri
Java Collections - Tomaz Lavieri
 
A Sun no Meio Acadêmico - IESP/FatecPB
A Sun no Meio Acadêmico - IESP/FatecPBA Sun no Meio Acadêmico - IESP/FatecPB
A Sun no Meio Acadêmico - IESP/FatecPB
 
Mini-Curso de Sockets no Unipê
Mini-Curso de Sockets no UnipêMini-Curso de Sockets no Unipê
Mini-Curso de Sockets no Unipê
 
Concorrência com Java
Concorrência com JavaConcorrência com Java
Concorrência com Java
 
Programas Acadêmicos da Sun no Unipê
Programas Acadêmicos da Sun no UnipêProgramas Acadêmicos da Sun no Unipê
Programas Acadêmicos da Sun no Unipê
 
Mundo Livre e Aberto
Mundo Livre e AbertoMundo Livre e Aberto
Mundo Livre e Aberto
 
Apostila JavaME
Apostila JavaMEApostila JavaME
Apostila JavaME
 
Threads
ThreadsThreads
Threads
 
Sincronização - Glêdson Elias
Sincronização - Glêdson EliasSincronização - Glêdson Elias
Sincronização - Glêdson Elias
 
Collections e Generics
Collections e GenericsCollections e Generics
Collections e Generics
 
String e IO
String e IOString e IO
String e IO
 
Desenvolvimento
DesenvolvimentoDesenvolvimento
Desenvolvimento
 
Controle de Fluxo, Exceções, Assertivas
Controle de Fluxo, Exceções, AssertivasControle de Fluxo, Exceções, Assertivas
Controle de Fluxo, Exceções, Assertivas
 
Classes Internas
Classes InternasClasses Internas
Classes Internas
 

JavaME

  • 1. ERISVALDO GADELHA SARAIVA JÚNIOR Tecnólogo em Sistemas para Internet pelo IFPB Graduando em Ciência da Computação pela UFPB Pesquisador do LabTEVE (Laboratório de Tecnologias para o Ensino Virtual e Estatística) E-mail: erisvaldojunior@gmail.com Site: http://erisvaldojunior.com Twitter: http://twitter.com/erisvaldojunior
  • 2. Objetivo ROTEIRO A plataforma J2ME Desenvolver aplicações para dispositivos móveis considerando fatores como Exemplos Práticos portabilidade, uso de memória e processamento. Interface X Portabilidade Web / Pacotes Opcionais Próximos Passos
  • 3.
  • 4. Visão geral da plataforma Java [SUN, 2008]
  • 5. Configurações do JavaME CLDC 1.0 / CLDC 1.1
  • 6. Perfis do CLDC • Trata-se da especificação • Revisão da especificação original (JSR 37); original (JSR 118); •Provê o núcleo necessário • Componentes de para aplicações móveis, como componentes básicos interface aprimorados, de interface e conexão de HTTPS, suporte a jogos e rede. aplicações multimídia. MIDP 2 .1 . . . MIDP 3.0*
  • 7. O que vamos usar Possíveis pacotes opcionais • Mobile Media API (MMAPI) – JSR 135; • Wireless Messaging API (WMA) – JSR 205; •É o "padrão de •File Connection mercado" atual. Optional Package (FCOP) – JSR 75.
  • 8. Ciclo de vida de uma aplicação JavaME [FONSECA, 2005]
  • 9. Estrutura básica de classes [FONSECA, 2005]
  • 10. Estrutura expandida de classes Comum a todas as versões do MIDP MIDP 2.0 ou superior
  • 12. Muita hora nessa calma... • Os Commands são • Apesar da grande essenciais. Você pode quantidade de classes, elas adicionar Commands em são de muito fácil uso. Em qualquer tela. Eles regem a geral, basta apenas chamar navegação da sua aplicação. o construtor da classe, setar Basta implementar o alguns métodos e depois método commandAction() informar ao Display para da interface mostrá-la na tela; CommandListener.
  • 13. Persistência de Dados • Através do RMS (Record • Possui recursos Management Store), um interessantes, como esquema de navegar pelos registros armazenamento bastante através de um RecordEnumeration, simples do JavaME; filtrando-os da maneira • Uma aplicação pode que achar conveniente acessar múltiplos Record (RecordFilter) e Stores e cada um poder ordenando-os também ter N registros. como quiser (RecordComparator).
  • 14. Persistência de Dados Forma de armazenamento dos Record Stores
  • 15.
  • 16. Tecnologias utilizadas • Mobility •Game Builder(Não) •Visual Mobile Designer (Não, é a baba é?)
  • 17. NetBeans 6.5 (Full ou Mobility) •Suporte completo a plataforma JavaME; •Ferramenta RAD para navegação de telas com o Visual Mobile Designer; •Ferramenta RAD para o design dos jogos com o Game Builder.
  • 18. Emuladores Sun Java Wireless Toolkit (JWT) Nokia S40/S60 SDK MotoDEV SDK
  • 19. Emuladores Sun Java Wireless Toolkit (JWT) Nokia S40/S60 SDK MotoDEV SDK
  • 21. Exemplo 2: FuelMIDlet (Parte 1/3)
  • 22. Exemplo 2: FuelMIDlet (Parte 2/3)
  • 23. Exemplo 2: FuelMIDlet (Parte 3/3)
  • 27. Mas esses exemplos estão muito feios... •Vamos melhorá-los! •SplashScreen herdando de Canvas; •Uso de RecordFilter/RecordComparator no Exemplo 3; •Trocar os componentes de alto nível (Alert, Form, List) por telas de baixo nível herdando de Canvas.
  • 30.
  • 31. Principais classes do JavaME Comum a todas as versões do MIDP MIDP 2.0 ou superior
  • 32. ClasseCanvas • Classe abstrata que deve • As classes que ser especializada para a confecção de uma tela em herdam de Canvas baixo nível; podem implementar • As classes que herdam o método de Canvas keyPressed(), que obrigatoriamente devem implementar o método verifica se uma paint(), responsável por determinada tecla foi desenhar a tela; pressionada.
  • 33. ClasseCanvas • Graphics possui •O método paint() diversos métodos recebe como para desenhar na argumento uma tela, tais como: instância de Graphics, drawImage(), com a qual é possível drawRect(), fillRect(), desenhar na tela; drawString(), etc.
  • 34. ClasseCanvas (Imagens x Portabilidade) •Todos os desenhos • A altura e a largura da tela podem ser devem ser sempre obtidas pelos posicionados de acordo métodos getHeight() com as dimensões de e getWidth(), tela, permitindo a respectivamente; portabilidade da aplicação.
  • 35. ClasseCanvas (Teclas x Portabilidade) •As "Soft Keys" não • Qualquer tecla que o possuem constantes usuário pressionar definidas em Canvas, ou seja, o keyCode varia de pode ser tratada pelo aparelho para aparelho. método Com isso, o uso de Commands é recomendado, keyPressed(int visando evitar-se problemas keyCode); de portabilidade.
  • 36. Exemplo de Splash Screen com Canvas
  • 38. GameCanvas x Canvas • Em GameCanvas, não • O MIDP 2.0 apresenta há necessidade de a classe GameCanvas, implementar o método que herda de Canvas e paint(). Graphics é possui algumas obtido com vantagens em relação a getGraphics() e o anterior, sendo estado das teclas com bastante útil para getKeyStates(). jogos;
  • 39. Constantes de teclas emGameCanvas
  • 40.
  • 41. Integração com a WEB • J2ME é capaz de realizar requisições HTTP, do tipo GET ou POST, bem como tratar suas respostas. Isso permite: • Envio de conteúdo para uma aplicação PhP, RoR ou um Servlet; • A aplicação Web pode integrar o conteúdo a um banco de dados; • O cliente JavaME pode mostrar a resposta da requisição.
  • 42. Pacotes Opcionais •FileConnection and PIM API (JSR 75); •Java APIs for Bluetooth 1.1 (JSR 82); •Mobile Media API 1.1 (JSR 135); •Location API for J2ME 1.1 (JSR 179); •Mobile 3D Graphics API for J2ME 1.1 (JSR 184); •Wireless Messaging API 2.0 (JSR 205); • Advanced Multimedia Supplements 1.1 (JSR 234); • Mobile Sensor API (JSR 256); • Entre outros...