SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Mais procurados

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
Amazon Web Services LATAM
 
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
Amazon Web Services LATAM
 
Front7 React Native
Front7 React NativeFront7 React Native
Front7 React Native
Newton Angelini
 
JavaEE
JavaEEJavaEE
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
Amazon 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ática
Ari 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 servidor
Amazon 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 Hub
Amazon Web Services LATAM
 
Como começar com Amazon EKS
Como começar com Amazon EKSComo começar com Amazon EKS
Como começar com Amazon EKS
Amazon 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 Data
Amazon 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-BR
Elvis 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 Backup
Amazon Web Services LATAM
 
Construindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsConstruindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOps
Camila 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 2
Pablo 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ínua
Amazon 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 AWS
Amazon 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 nuvem
Amazon Web Services LATAM
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
Elenilson Vieira
 

Mais procurados (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
 

Semelhante a JavaME

JavaME - Aula 2
JavaME - Aula 2JavaME - Aula 2
JavaME - Aula 2
Elenilson Vieira
 
Minicurso de TotalCross e Litebase
Minicurso de TotalCross e LitebaseMinicurso de TotalCross e Litebase
Minicurso de TotalCross e Litebase
Né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óveis
igorpimentel
 
Introdução a JavaME
Introdução a JavaMEIntrodução a JavaME
Introdução a JavaME
frgo
 
Criando jogos digitais em java
Criando jogos digitais em javaCriando jogos digitais em java
Criando jogos digitais em java
Michel Montenegro
 
Java para dispositivos móveis
Java para dispositivos móveisJava para dispositivos móveis
Java para dispositivos móveis
João Gabriel Lima
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
Glaucio Scheibel
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Java
limadavi
 
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
Denis 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ção
Denis Sobrenome
 
ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01
ETEC Monsenhor Antonio Magliano
 
O Mundo Wireless
O Mundo WirelessO Mundo Wireless
O Mundo Wireless
elliando dias
 
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
Erisvaldo 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 Geral
Eder Nogueira
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
Flávio Lisboa
 
Intro javame
Intro javameIntro javame
Intro javame
Chicao OBao
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
munosai
 
Java 01
Java 01Java 01
Java 01
samuelthiago
 
Java alem das aplicacoes comerciais convencionais
Java alem das aplicacoes comerciais convencionaisJava alem das aplicacoes comerciais convencionais
Java alem das aplicacoes comerciais convencionais
Leonardo Simberg
 

Semelhante a 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
 

Mais de Elenilson Vieira

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
Elenilson Vieira
 
JavaME no Mercado Mobile
JavaME no Mercado MobileJavaME no Mercado Mobile
JavaME no Mercado Mobile
Elenilson Vieira
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
Elenilson Vieira
 
Apresentação da Doom
Apresentação da DoomApresentação da Doom
Apresentação da Doom
Elenilson Vieira
 
Palestra sobre a Sun
Palestra sobre a SunPalestra sobre a Sun
Palestra sobre a Sun
Elenilson Vieira
 
Apresentação da RedeSoft
Apresentação da RedeSoftApresentação da RedeSoft
Apresentação da RedeSoft
Elenilson Vieira
 
Java Collections - Tomaz Lavieri
Java Collections - Tomaz LavieriJava Collections - Tomaz Lavieri
Java Collections - Tomaz Lavieri
Elenilson Vieira
 
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
Elenilson Vieira
 
Mini-Curso de Sockets no Unipê
Mini-Curso de Sockets no UnipêMini-Curso de Sockets no Unipê
Mini-Curso de Sockets no Unipê
Elenilson Vieira
 
Concorrência com Java
Concorrência com JavaConcorrência com Java
Concorrência com Java
Elenilson Vieira
 
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ê
Elenilson Vieira
 
Mundo Livre e Aberto
Mundo Livre e AbertoMundo Livre e Aberto
Mundo Livre e Aberto
Elenilson Vieira
 
Apostila JavaME
Apostila JavaMEApostila JavaME
Apostila JavaME
Elenilson Vieira
 
Threads
ThreadsThreads
Sincronização - Glêdson Elias
Sincronização - Glêdson EliasSincronização - Glêdson Elias
Sincronização - Glêdson Elias
Elenilson Vieira
 
Collections e Generics
Collections e GenericsCollections e Generics
Collections e Generics
Elenilson Vieira
 
String e IO
String e IOString e IO
String e IO
Elenilson Vieira
 
Desenvolvimento
DesenvolvimentoDesenvolvimento
Desenvolvimento
Elenilson Vieira
 
Controle de Fluxo, Exceções, Assertivas
Controle de Fluxo, Exceções, AssertivasControle de Fluxo, Exceções, Assertivas
Controle de Fluxo, Exceções, Assertivas
Elenilson Vieira
 
Classes Internas
Classes InternasClasses Internas
Classes Internas
Elenilson Vieira
 

Mais de 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...