Vous êtes sur la page 1sur 78

INTRODUÇÃO A J2ME

Prof. Dany Sanchez Dominguez


y@
dany@labbi.uesc.br
NBCGIB – Sala 01

Semana de Informática da UESC


Setembro - 2010

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 1


Tema 1

Introdução. Arquitetura J2ME.


Introdução J2ME
Ambiente de desenvolvimento.

Semana de Informática da UESC


Setembro - 2010

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 2


Sumário - 1
• Introdução ao J2ME
• Tecnologias JAVA
• Arquitetura J2ME
• Configurations,
Configurations profiles e APIs
• Configurações: CDC e CLDC
• Profile: MDIP
• Plataformas JTWI e MSA
• J2ME vs J2SE
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 3
O Que é J2ME?
• Uma tecnologia Java para dispositivos
móveis e sem fio.

• Um dispositivo móvel é aquele que pode ser


transportado
p pelo usuário durante a sua
p
operação.

• Um dispositivo sem fio é aquele capaz de


se comunicar com outro dispositivo ou uma
rede de dispositivos sem o uso de cabos.

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 4


Ciclo do JAVA
• Inicio dos 90s, desenvolvimento dos eletro-
eletrônicos,
g g
• Necessidade de uma linguagem independente
p
do dispositivo (portable),
• Linguagem simples e leve, leve orientada a
sistemas embarcados,
Oak/JAVA
• Aparece a JVM

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 5


Ciclo do JAVA
• Meados dos 90s, surgimento da internet (www),
• Necessidade de incorporar recursos avançados
as p
páginas
g web estáticas,,
• Aparecem os JAVA/Applets,

Oak/JAVA

Applets

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 6


Ciclo do JAVA
• Finais dos 90s, consolidação da internet (www),
• Necessidade de criar páginas web dinâmicas,
• Difusão
Dif são de aplicações na arq itet ra
arquitetura
cliente/servidor de duas camadas,
• Aparecem as servlets.
Oak/JAVA

Applets

Servlets

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 7


Ciclo do JAVA
• Ano 2000, expansão das TICs e as PCs,
• Necessidade de desenvolver aplicações de
propósito
p p geral,,
g
• Consolidação das aplicações webs
(internet/intranet),
(internet/intranet)
• Aplicações Oak/JAVA
cliente/servidor
multicamadas. J2SE/J2EE Applets
pp

Servlets

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 8


Ciclo do JAVA
• Meados 00s, ampliação no uso de dispositivos
moveis (celulares, pdas, GPS),
• Surgimento e consolidação das redes sem fio,
fio
• Retorno as origens J2ME,

• Simplificação da JVM, Oak/JAVA


J2ME
• Apenas os recursos
indispensáveis a API J2SE/J2EE Applets

JAVA.
Servlets

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 9


Tecnologias
g JAVA
• J2SE – núcleo da linguagem JAVA e APIs orientadas
a criação de aplicações c/s,
c/s desktop e applets,
applets
• J2EE – uma versão ampliada do J2SE com recursos
orientados a redes, internet e intranets. APIs para
desenvolver aplicações
p ç webs e c/s multi-camada.

• J2ME – Inclui algumas


características
t í ti do
d núcleo
ú l
de JAVA, API para
J2EE J2SE J2ME
d
desenvolver
l aplicações
li õ
em dispositivos

“pequenos”.”
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 10
Plataforma alvo do J2ME
• Características dos dispositivos (cliente-leve):
ƒ Memória
M ó i reduzida,
d id
ƒ Baixo poder de processamento,
ƒ Comunicação com estreita largura de banda,
ƒ Interface de usuário limitada,
• Smart card • Comunicadores de bolso
• P
Pages • Sistemas
Si t d
de navegação
ã
• Telefones celulares de vehiculos
• A i t t pessoais
Assistentes i • Internet TV
digitais (PDAs) • Set-top boxes
• Pontos
P t de d venda
d
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 11
Arquitetura J2ME
• Precisamos um especificação para dispositivos
“leves” que não apresentam um padrão de hardware.
• Objetivos:
Obj i
ƒ Suportar uma variedade de dispositivos com
diferente níveis de recursos.
recursos
ƒ Suportar funcionalidades específicas dos
diversos dispositivos.
dispositivos
ƒ Manter uma arquitetura comum.
2 Portabilidade
2.

1. Flexibilidade 3. Uniformidade
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 12
Arquitetura
q J2ME
• Como obter portabilidade, flexibilidade e
id d ?
uniformidade?
if
• Oppadrão foi definido em vários níveis,,
• J2ME é formado por Configurations, Profiles e API
opcionais
p
• Configuration
ƒ Especificação
p ç para uma família de dispositivos
p p
baseada na restrições de memória e poder de
p ocessa e o
processamento.
ƒ Define o ambiente de execução (JRE) e as
classes do núcleo JAVA disponíveis no
dispositivo.
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 13
Arquitetura
q J2ME
• Profiles
ƒ Provê uma API específica para um grupo de
dispositivos
p ou um único dispositivo.
p
ƒ Consiste em um grupo de classes que
implementam as funcionalidades encontradas em
um dispositivo.
ƒ Profiles são baseados em um determinada
configuration.
g

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 14


Arquitetura
q J2ME
• API Opcionais
ƒ Provê funcionalidades adicionais (específicas
para uma certa tecnologia) que podem ser
usadas
d em conjunto
j t com um ou mais i profiles.
fil

J2ME = Configuraton + Profile + APIs Opcionais

Aplicação
p ç J2ME

API
Profile
C fi
Configuration
ti
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 15
JAVA COMMUNITY PROCESS (JCP)
• JCP é o forum para desenvolvimento da tecnologia
J2ME,
J2ME
• Propostas de configurations, profiles e APIs
opcionais são enviadas ao forum,
• As propostas são avaliadas para obter o concenso
da comunidade e da industria de dispositivos,
• Um dos objetivos
j é evitar a fragmentação,
g ç ,
• Configurations, profiles e APIs opcionais aparecem
primeiro como uma requisição ou Java Specification
Request (JSR),
• Consultar o site www.jcp.org
www jcp org (visitar).
(visitar)
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 16
Configurations
• Configurations são especificações da arquitetura
J2ME que definem:
d fi
ƒ Caracteristicas da Linguagem Java
ƒ Biblioteca de Classes de Baixo Nível
ƒ Caracteristicas da Máquina Virtual

• Atualmente duas configurations são suportadas


em J2ME:
ƒ CDC - Connected Device Configuration
ƒ CLDC - Connected Limited Device Configuration

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 17


CDC - Configuration
• Requisitos de hardware:
e ó a ROM
ƒ Memória O mínima a5
512 Kb
b ((ideal
dea >2 Mb)
b)
ƒ Memória RAM mínima 256 Kb (ideal >1 Mb)
ƒ Algum tipo de conexão em rede (ideal banda
larga)
• Máquina Virtual:
ƒ CVM - C Virtual Machine
ƒ Compatível com a JVM mas a sua
implementação é otimizada para dispositivos
em rede
ƒ Garbage Collector separado da VM
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 18
CLDC - Configuration
• Requisitos de hardware:
ƒ Memória ROM mínima 160Kb
ƒ Memória RAM mínima 32Kb
ƒ Algum tipo de conexão em rede (banda
estreita ou intermitente)

• Maquina virtual:
ƒ KVM -K(ilobyte)Virtual
K(ilobyte)Virtual Machine
ƒ Versão simplificada da JVM

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 19


CLDC – Características da KVM
• CLDC 1.0 (elimina da JVM)
ƒ Java Native Interface
ƒ Tipos de Ponto Flutuante (float e double)
ƒ Verificação de classes
ƒ Simplifica o tratamentos de exceções
ƒ Funções avançadas de threads

• CLDC 1.1 (inclui na CLDC 1.0)


ƒ Suporte a ponto flutuante

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 20


CDC e CLDC - Dispositivos
• CDC:
ƒ Set-top boxes
ƒ Sistemas de navegação
ƒ Terminais de ponto de venda
ƒ Smartphones
• CLDC:
ƒ Pagers
ƒ Assistentes pessoais digitais (PDAs)
ƒ Telefones celulares,
ƒ Terminais dedicados
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 21
CDC e CLDC - Relação

CDC

CLDC 1.1

CLDC 1.0

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 22


Profiles
• Profiles são conjuntos de especificações e APIs
necessárias ao desenvolvimento de aplicações
para um grupo mais restrito de dispositivos
dentro de uma determinada configuration

• Definições típicas de um profile


ƒ Tipo de interface com o usuário
ƒ Métodos de entrada
ƒ Mecanismo local de armazenamento
ƒ Mecanismo de conexão com a rede
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 23
Profiles
Configuration Profile Descrição
(46) Foundation Profile 1.0 É a base para o
desenvolvimento de outros
CDC p
profiles

(62) Personal Profile 1.0 Interfases avançadas,


múltiplas janelas
(217) Personal Basis Profile 1.1 Interfaces simples, uma
janela.
(118) Mobile Information Device Celulares e palm tops
CLDC Profile 2.0
((75)) PDA Profile 1.0 PDAs maior capacidade
p
de memória e tela maior

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 24


MIDP – Mobile Information
Device Profile
• Em adição as características da configuration
CLDC o MIDP 2.0 oferece:
ƒ Memória
M ó i ROM mínima í i 256 Kb
ƒ Memória RAM mínima 128 Kb
ƒ Memória Persistente mínima 8kb
ƒ Tela com pelo menos 96x54 pixels
ƒ Alguma dispositivo de entrada (teclado,
t l d numérico
teclado é i ou tela
t l sensível
í l ao toque)
t )
ƒ Conexão de duas vias em rede
(possivelmente intermitente)
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 25
APIs Opcionais
p

• ((75)) PDA Optional


p Packages
g for J2ME
• (82) Java APIs for Bluetooth
• (135)
( ) Mobile Media API 1.11
• (84) Mobile 3D Graphics http://jsp.org/jsr/detail/184.jsp
• (179) Location API for http://jcp.org/jsr/detail/179.jsp
• (120) Wireless Messaging API 1.0
10e22.0
0
• (172) Web Services APIs http://jsp.org/jsr/detail/172.jsp
• (66) RMI Optional Package http://jcp.org/jsr/detail/66.jsp

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 26


Configurations
g e Profiles em J2ME

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 27


Plataforma p
para celulares

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 28


Especificações
p ç = Padronização?
ç
• Para executar uma aplicação J2ME o dispositivo deve
das suporte a Configuration (hardware + JVM),
Profiles (hardware + interfase) e APIs Opcionais
(funcionalidades) utilizadas,
• Os fabricantes de dispositivos não seguem um padrão
específico ao construir e lançar seus equipamentos,
• Novas
N f
funcionalidades
i lid d aparecem a cada
d lançamento,
l t
• É díficil para o desenvolvedor saber os recursos
disponíveis no dispositivo alvo de de sua aplicação,
• Oq
que fazer?

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 29


Padronização
ç da plataforma
p
• Criar especificações guarda-chuva (plataformas),

• Provê uma API de referência e um kit de teste de


compatibilidade (TCK) para um determinado
ambiente
bi t (Configuration+Profile+APIs
(C fi ti P fil API Opcionais),
O i i )

• Plataformas disponíveis:
ƒ Java Technology for Wireless Industry – JTWI
ƒ Mobile Service Architecture - MSA

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 30


Plataforma JTWI
• Um dispositivo compatível com
a JTWI deve suportar:
ƒ CLDC 1.1,
11
ƒ MIDP 2.0,
ƒ Wireless Messaging API 1.0.
• Se o dispositivo JTWI suporta a
apresentação de vídeo e áudio,
o dispositivo deve suportar:
ƒ Mobile Media API 1.1
11

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 31


Plataforma MSA

JTWI

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 32


Plataforma celulares

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 33


Limitações
ç do J2ME
• J2ME não é J2SE, aplicações desenvolvidas
para J2SE não podem ser executadas
diretamente em J2ME,
J2ME
• O mantra: write-once-run-anywhere,
• A maquina virtual em J2ME tem características
particulares,
• Não existe command prompt, a execução de
aplicações é controlada pelo software de
gerenciamento de aplicações
g p ç ((AMS).
)

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 34


Gerenciamento de Aplicações
p ç (AMS)
( )
• O AMS interage com as aplicações nativas do
dispositivo,
• Controla o ciclo de vida da aplicação
(instalação, upgrades, controle de versão,
desinstalação),
• O AMS é responsável por iniciar, gerenciar,
executar e parar a aplicação,
• Garante a segurança no funcionamento dos
ç esencias do dispositivo.
serviços p

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 35


J2ME vs J2SE
• Limitações nas operações de ponto flutuante
(parcialmente resolvido no MIDP2.0),
• Ausência do método finalize(),
finalize() utilizado em
J2SE sempre que um termina instancia de
classe (verificação e liberação de recursos),
• Redução no tratamento de exceções e erros,
• Não existe o carregador de classes (o
carregador é fornecido pelo fabricante do
p ),
dispositivo),

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 36


J2ME vs J2SE
• Não esta disponível a classe ThreadGroup, a
programação multi-thread é implementada a
nível de objeto,
objeto
• Não podem ser utilizados programas ou APIs
escritos em outras linguagens,
• Não existe o Security Manager na JVM para
realizar a verificação de classes, é feita uma
pre-verificação em tempo de compilação.
Devemos ter cuidado com código
g malicioso.

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 37


Sumário - 2
• Desenvolvendo aplicações MIDP
• A classe MIDlet,
• Ciclo de vida de uma MIDlet,
MIDlet
• Ambiente de desenvolvimento,
• Minha primeira MIDlet,
• O emulador WTK,
WTK
• Múltiplas MIDlets no MIDlet suite,
• Boas práticas em J2ME,
• Atividade p
prática.
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 38
Desenvolvendo aplicações
p ç MIDP
• Uma aplicação MIDP é uma aplicação J2ME
desenhada para executar em um dispositivo com
suporte a MIDP,
MIDP
• Uma aplicação MIDP é chamada de MIDlet,
• Toda aplicação MIDP é uma instância de uma
sub-classe da classe abstrata MIDlet,,
• A MIDlet estabelece uma interface entra a
aplicação e o software
soft are de gerenciamento de
aplicações (AMS) no dispositivo,

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 39


Desenvolvendo aplicações
p ç MIDP
• O AMS controla a instalação, execução e mudanças
d estados
de d ded uma aplicação
li MIDl
MIDlet,
• Uma MIDlet é a porta de entrada de todas as
aplicações MIDP,
• Frequentemente
q varias MIDlets relacionadas são
agrupadas em um MIDlet suite,
• Todas as MIDlets dentro de um MIDlet suite são
instaladas e desinstaladas como um grupo,
• Os membros de um MIDlet suite compartilham
recursos do dispositivo e instancias de classes na
KVM
KVM,
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 40
Desenvolvendo aplicações MIDP
• Se três MIDlets de um MIDlet suite executam a
mesma classe apenas uma instancia da classe é
criada na KVM,
• As MIDlets de um MIDlet suite são carregadas
simultaneamente, entretanto elas podem ser
executadas por separado.

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 41


Desenvolvendo aplicações MIDP
• Para distribuir uma aplicação três arquivos devem
ser fornecidos:
ƒ MIDlet_Suite_Name.jar, arquivo executavel
Java
ƒ manifest.fm, lista de atributos e definições
utilizados pelo AMS para instalar a aplicação
no dispositivo.
di ii
ƒ MIDlet_Suite_Name.jad, Descriptor de
aplicações Java, provê informações adicionais
ao AMS sobre a estrutura do arquivo jar.
jar
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 42
Arquivo de manifesto

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 43


Arquivo JAD

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 44


Ciclo de desenvolvimento - MIDlet
• Edição do Código Fonte

• Compilação

• Pré-Verificação

• Empacotamento

• Testes

• Distribuição

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 45


A Classe Abstrata MIDlet

• startApp,
t tA Q
Quandod a aplicação
li ã MIDlet
MIDl t é instanciada,
i t i d o
AMS do dispositivo faz uma chamada para este método,
• pauseApp, Este método é chamado quando o
dispositivo necessita suspender a atividade da MIDlet
para executar outra atividade,
• destroyApp, Este método é chamado quando o
dispositivo solicita que a aplicação seja fechada.
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 46
A menor aplicação MIDlet

• O argumento unconditional no método destroyApp


informa se a aplicação deve ser irremediavelmente
destruída (true) ou pode,
pode através de uma exceção,
exceção
tentar continuar rodando (false).
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 47
O Ciclo de Vida de uma MIDlet

• Estados:
ƒ paused, uma instancia da MIDlet foi construída
e esta
t inativa,
i ti

ƒ active, a instancia da MIDlet esta ativa,

destroyed a MIDlet foi terminada e esta pronta


ƒ destroyed,
para ser tratada pelo coletor de lixo.

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 48


O Ciclo de Vida de uma MIDlet

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 49


O Ciclo de Vida de uma MIDlet
• Uma MIDlet pode controlar seus estados através
dos métodos:
notifyPaused() uma MIDlet ativa chama este
ƒ notifyPaused(),
método para ser desativada.
ƒ notifiyDestroyed(), uma MIDlet ativa ou inativa
chama
h este
t método
ét d para ser destruida,
d t id
() uma MIDlet inativa chama
ƒ resumeRequest(),
q
este método para ser ativada.

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 50


O ambiente de desenvolvimento
• Java Developer Kit (JDK), versão 1.6 ou superior
• Sun JAVA Wireless Toolkit for CLDC 2.5.2:
ƒ Interfase de usuário q
que automatiza a criação
ç
de aplicações MIDPs (projetos, compilar,
preverificar,
ifi empacotar,
t executar),
t )
ƒ Emulador para executar aplicações,
ƒ Ferramentas auxiliares (Monitor de memória e
rede Assinatura de MIDlets,
rede, MIDlets Obfuscated)
• Editor de textos (Jedit, www.jedit.org)

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 51


Minha primeira MIDlet
• Exemplo: HelloWorld.java

• A MIDlet HelloWorld.java ilustra três funções


bá i
básicas encontradas
t d na maioria
i i das
d MIDlets:
MIDl t
ƒ Mostra um texto na tela,
ƒ Implementa um comando (ação),
ƒ Processa eventos (listening) quando a
MIDlet esta executando.
• Mostrar: HelloWorld.java

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 52


Criando minha primeira MIDlet
• Criando um projeto no WTK
• Executar o WTK
• New Project:
ƒ Nome do projeto: Primeira_MIDlet_Suite
ƒ Nome da MIDlet: HelloWorld

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 53


Criando minha primeira MIDlet
• Dialogo Settings for project
ƒ API Selection (JTWI)
ƒ Atributos requeridos
ƒ Atributos opcionais
ƒ MIDlets

• Diretório de trabalho do WTK:


ƒ C:\Documents and Settings\User\j2mewtk\2.5.2
Settings\User\j2mewtk\2 5 2

ƒ User é o nome da conta de usuário

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 54


Criando minha primeira MIDlet
• Conteúdo do diretório do trabalho:
ƒ .settings
settings – Contiene o arquivo
security.properties.
ƒ appdb – Banco de dados de aplicações,
aplicações
ƒ apps – Inicialmente vácio, é onde são
armazenadosd os códigos
ódi f t
fontes d
dos projetos,
j t
cada projeto terá uma pasta neste diretório.
ƒ wtklib – Contiene os arquivos de propriedades
do emulador, e informações de estado HTTP e
WMA,
ƒ sessions – diretório auxiliar utilizado pelas
ferramentas de monitoração.
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 55
Criando minha primeira MIDlet
• Diretorio do projeto
ƒ bin – Diretório onde é armazenado o arquivo q
executável (*.jar), o arquivo de manifesto e o
descriptor de aplicações.
ƒ classes – armazena os arquivos das classes
compiladas (*.class),
ƒ lib – diretório
di tó i para incluir
i l i bibliotecas
bibli t d
desenvolvidas
l id
por terceiros,
ƒ res – diretório de recursos,
recursos armazena os arquivos de
imagens e sonidos. Estes arquivos no
empacotamento
e pacota e to são incluidos
c u dos nooaarquivo
qu o jajar.
ƒ src – armazena os códigos fontes das classes (*.java)
ƒ tmpclasses - diretório auxiliar uso do WTK,
ƒ tmplib - diretório auxiliar uso do WTK
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 56
Criando minha primeira MIDlet
• Arquivo de manifesto,
• Arquivo JAD,
• Criando o arquivo fonte da classe
HelloWorld.java,
• Compilando e pre-verificando o projeto,
• Cria o arquivo HelloWorld.class,
• Executando o aplicativo,
aplicativo

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 57


O emulador WTK
• Fornece um ciclo de desenvolvimento fechado
em um computador,
• Não representa um dispositivo específico,
específico
• Proporciona uma correta implementação das
APIs suportadas pela plataforma,
• A interfase funciona como um telefone celular.

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 58


O emulador WTK
• Esquemas:
Nombre Display Tela Cores Entrada
DefaultColorPhone 240 x 320 240 x 289 4096 ITU-T
DefaultGrayPhone 180 x 208 180 x 177 4096 ITU-T
MediaControlSkin 180 x 208 180 x 177 4096 ITU-T
Q
QwertyDevice
t D i 636 x 235 540 x 204 4096 QWERTY

• Atalhos:
Botão do emulador Teclado do computador
Botão de ação esquerdo F1
Botão de ação direito F2
Botão desligar Esc
Botão selecionar Enter
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 59
Desenvolvimento - Simplificado
1. Editar código fonte
2. Build aplication (compilar, pre-verificar)
3 Executar
3.

• O arquivo *.jar não foi criado.

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 60


Desenvolvimento - Completo

1. Editar código fonte


2. Empacotar (compilar, pre-verificar, criar
arquivo *.jar)
* )
3 Instalar
3.
4. Executar

• P
Para empacotar:
t P j t -> Package
Project P k ->
Create Package
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 61
Desenvolvimento - Instalar

• Um “pacote” contendo uma MIDlet pode ser


instalado em um dispositivo ou no emulador,
• O emulador apresenta as etapas de
instalação utilizando um AMS genérico,
genérico
• Para instalar uma MIDlet no emulador:
Project -> Run via OTA,
• D
Demonstração.
t ã

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 62


Usando o Obfuscator
• O obfuscator é uma ferramenta para reduzir o
tamanho dos arquivos de classes,
ƒ MIDlets suites precisam ser compactos para:
ƒ Minimizar o tempo de download,
ƒ Atender limitações de tamanho impostas pelos
fabricantes de dispositivos,
ƒ P t
Proteger o código
ódi fonte,
f t
• Para utilizar a ferramenta devemos:
ƒ Instalar o ProGuard (http://proguard.sourceforge.net/)
ƒ Project -> Package -> Create Obfuscated
Package
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 63
Múltiplas MIDlets no MIDlet Suite
• Criando minha segunda MIDlet
ƒ Crie a MIDlet GoodbyeWorld.java,
ƒ Adicione
Adi i a MIDlet
MIDl t ao projeto,
j t
ƒ Build application,
pp ,
ƒ Execute o MIDlet Suite.

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 64


Múltiplas MIDlets no MIDlet Suite
MIDlet Suite
CLASSES
HelloWorld.java
Primeira_MIDlet_Suite.jar
j GoodbyeWorld.java
META-INF
manifest.mf
Primeira_MIDlet_Suite.jad

• MIDlets suites são empacotadas em arquivos JAR


para encapsular em um único arquivo assinaturas
digitais,
g , informações
ç de segurança,
g ç , meta-informações
ç
e arquivos de classes Java compilados.
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 65
Ambiente de desenvolvimento
• Criar um Novo Projeto (MIDlet Suite)
• Selecionar a Plataforma Alvo
• Adicionar
Adi i MIDl t ao Projeto
MIDlets P j t
• Adicionar os Códigos
g Fonte
• Editar Meta-Informações
• Compilar a MIDlet Suite
• Rodar a MIDlet Suite
S ite
• Empacotar
p e distribuir a MIDlet Suite

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 66


Problemas ao executar MIDlets
• Minha MIDlet roda apropriadamente no
emulador e não consigo instalar ou executar
em um dispositivo:
di iti
ƒ O AMS do dispositivo
p rejeita
j sua MIDlet
(verifique os arquivos de meta-informações),
ƒ O dipositivo não tem suporte a plataforma de
desenvolvimento escolhida.

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 67


Boas praticas em J2ME
• Mantenha sua aplicação (MIDlet) simples:
ƒ Projeto convencional: ƒ Projeto J2ME:
− Aplicação é dividida em − Aplicação é dividida em
objetos peças
− Objetos: atributos e − Granularidade fina
métodos
ét d
Objeto
j MAIL MIDlet Suite MAIL
Métodos: MIDlet 1: INBOX
‰INBOX
MIDlet 2: SENT
‰SENT
‰ADDRESS BOOK MIDlet 3: ADD. BOOK

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 68


Boas praticas em J2ME
• Crie aplicações pequenas:
ƒ O tamanho da aplicação é crítico para uma
distrinuição eficiente,
ƒ Remova todos os recursos desnecessários
(imagens, sonidos, animações),
ƒ Se aplicação for muito grande divida em
várias MIDlets menores.

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 69


Boas praticas em J2ME
• Minimize o uso da memória:
ƒ Prefira tipos-escalares a tipos-objeto,
ƒ Utilize o menor tipo possível para armazenar
um dado,,
ƒ Exemplo: sinalizadores (int vs boolean)
ƒ Instancie seus objetos no momento de serem
utilizados e não no inicio da aplicação,
aplicação
ƒ Reusar objetos vs Novos objetos,
ƒ Minimize o tratamento de exeções.
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 70
Boas praticas em J2ME
• Realize o processamento pesado no servidor:
ƒ Para aplicações com elevados requerimentos
de processamento,
ƒ Utilize a arquitetura cliente-servidor,
cliente-servidor
ƒ Camada cliente: Interfase,
ƒ Camada servidor: lógica de negocio +
processamento.

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 71


Boas praticas em J2ME
• Gerencie apropriadamente o uso da rede:
ƒ Rede intermitente com largura de banda
estreita,
estreita
ƒ Minimize o tamanho dos pacotes enviados,
ƒ Divida pacotes grandes em vários pacotes
pequenos,
ƒ Exemplo: Cliente de email
− Lista de “FROM” e “SUBJECT”
− Mostra apenas o email escolhido

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 72


Boas praticas em J2ME
• Gerencie apropriadamente o uso da rede...
ƒ Exemplo: Lista de itêns
− Um único item
− Opções de navegação (First, Previous, Next,
L t)
Last)
ƒ Mantenha no dispositivo um mecanismo de
recuperação (Chaves primaria).

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 73


Boas praticas em J2ME
• Simplifique a interfase de usuário:
ƒ Uma aplicação é formada por várias telas,
telas
utilize telas simples,
ƒ Considere as limitações do dispositivo:
Menu convencional Menu J2ME
(A) Opção 1 (A) Opção 1
(B) Opção 2 (D) Opção 2
(C) Opção 3 (G) Opção 3

ƒ Minimize as entradas do usuário (não


preencher formulários),
ƒ Maximize as listas e escolhas.
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 74
Boas praticas em J2ME
• Utilize variáveis locais:
ƒ Encapsulamento: Atributos e métodos são
utilizados para controlar o acesso a dados,
ƒO acesso a um atributo requer uma
sobrecarga de processamento,
ƒ Prefira variáveis locais a atributos de classes.

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 75


Boas praticas em J2ME
• Popule suas listas (Dropdown list):
ƒ Listas são uma boa alternativa para mostrar
um conjunto de escolhas,
ƒ Freqüentemente listas são populadas
dinamicamente utilizando uma fonte de
dados (DB ou arquivo),
ƒ Preencha suas listas estaticamente.

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 76


Boas praticas em J2ME
• Seja cuidadoso como o método startApp():
ƒ O método startApp() é chamado após o
construtor e cada resume da MIDlet,
ƒ Instruções que devem ser executadas
apenas uma vez no ciclo de vida da MIDlet
devem ser colocadas no construtor,
ƒ Exemplo: Inicializar contador.

Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 77


Atividade pratica
• Repita os passos seguidos na apresentação
para criar a Primeira_MIDlet_Suite
1. Crie um projeto com a MIDlet HelloWorld.java
2. Execute o projeto no emulador
3 Adicione
3. Adi i a MIDlet
MIDl t GoodbyeWorld.java
G db W ld j ao
projeto
4. Execute o projeto no emulador
5. Empacote o projeto, instale e execute no
emulador,
6 Execute
6. E t o projeto
j t em um dispositivo.
di iti
Prof. Dany S. Dominguez/dany@labbi.uesc.br Tema 1 – Slide 78

Vous aimerez peut-être aussi