Você está na página 1de 50

J2ME, Uma Platarfoma de programação para

Dispositivos Móveis

Jesseildo F. Gonçalves

07/10/2010

Jesseildo F. Gonçalves () 07/10/2010 1 / 50


1 Introdução ao J2ME
História
Arquitetura do J2ME
MIDLets

2 RMS: Record Management System

3 Conexões com Redes

4 GUI de Alto Nivel


Componentes
Tratamento de Eventos

5 Novidades
J4ME
J2ME Polish

Jesseildo F. Gonçalves () 07/10/2010 2 / 50


Introdução ao J2ME

Introdução ao J2ME

Jesseildo F. Gonçalves () 07/10/2010 3 / 50


Introdução ao J2ME História

História

Java foi criada para dispositivos eletrônicos de consumo (ex:


Geladeiras);
1998: Inicio do projeto “Spotless” com objetivo de investigar a
possibilidade de usar Java em dispositivos móveis antecipando a
idéia de que todos os dispositivos estariam conectados a Internet;
Testado num Palm Connected Organizer;
A idéia era tornar as aplicações:
Conectadas a Internet;
Customizáveis e pessoais.

Jesseildo F. Gonçalves () 07/10/2010 4 / 50


Introdução ao J2ME História

Por que Java?

Portável (Cross-Platform)
Criação de aplicações para os diversos tipos de dispositivos;
Linguagem de alto nı́vel para dispositivos móveis
Conteúdo dinâmico
Conteúdo determinado pela experiência do usuário;
Possibilidade de transferência de conteúdo entre configurações e
dispositivos.
Interoperabilidade;
Extensa documentação na Web.

Jesseildo F. Gonçalves () 07/10/2010 5 / 50


Introdução ao J2ME Arquitetura do J2ME

Arquitetura do J2ME

Jesseildo F. Gonçalves () 07/10/2010 6 / 50


Introdução ao J2ME Arquitetura do J2ME

KVM: Kilobyte Virtual Machine

A VM da SUN especı́fica para o CLDC;


Requer 40 a 80 kilobytes
Pode executar em processador de 16 bits
Gerenciamento de Memória, Tratamento de Erros
Fatais, Processamento de Eventos, Inicialização e
Limpeza de Código são dependente do dispositivo;

Jesseildo F. Gonçalves () 07/10/2010 7 / 50


Introdução ao J2ME Arquitetura do J2ME

Configurações

Define uma plataforma Java (VM + Conjunto mı́nimo de bibliotecas)


para um categoria ou grupo horizontal de dispositivos com requisitos
similares de memória e capacidade de processamento.

Contem funcionalidades mı́nimas de baixo nı́vel, principalmente de IO

Existem duas configurações:


CDC: Connected Device Configuration
CLDC: Connected Limited Device Configuration

Jesseildo F. Gonçalves () 07/10/2010 8 / 50


Introdução ao J2ME Arquitetura do J2ME

CDC: Connected Device Configuration

Utiliza Maquina Virtual Compactada (CVM);

Maior poder de processamento, Processadores de 32


bits

Inclui maior parte das classes J2SE;

Conectividade de rede, largura de banda persistente e


alta;

Jesseildo F. Gonçalves () 07/10/2010 9 / 50


Introdução ao J2ME Arquitetura do J2ME

CLDC: Connected Limited Device Configuration

Menor poder de processamento

Não suporta a interface Serializable;


Inclui poucas classes do J2SE
java.util
java.io
java.lang

Conexão intermitente com a rede nem sempre usando


TCP/IP;

Jesseildo F. Gonçalves () 07/10/2010 10 / 50


Introdução ao J2ME Arquitetura do J2ME

Profiles

Estende uma configuração;

Inclui bibliotecas especı́ficas para um domı́nio da


aplicação;

Definem a interface do usuario;

Qualquer aplicação escrita para um perfil deve rodar


em qualquer dispositivo que tenha suporte para aquele
perfil.

Jesseildo F. Gonçalves () 07/10/2010 11 / 50


Introdução ao J2ME Arquitetura do J2ME

MID, MIDP, MIDLets

MID (Dispositivo de Informação Móvel)


Corresponde as especificações do Hardware.

MIDP (Perfil de Dispositivo de Informação Móvel)


Conjunto de API J2ME, que define as Interfaces Gráficas.

MIDLets
São as aplicações móveis, podem executar com as Classes Java básicas
CLDC ou/e MIDP

Jesseildo F. Gonçalves () 07/10/2010 12 / 50


Introdução ao J2ME Arquitetura do J2ME

Arquitetura do J2ME

Jesseildo F. Gonçalves () 07/10/2010 13 / 50


Introdução ao J2ME MIDLets

MIDLets

Aplicativo Java projetado para ser executado em um


dispositivo móvel;

Similar a uma Applet J2SE;


Conjunto de MIDlets;
Varias MIDlets empacotadas em arquivo JAR;
compartilham recursos com mais segurança;

Jesseildo F. Gonçalves () 07/10/2010 14 / 50


Introdução ao J2ME MIDLets

JAD Java Application Descriptor

Fornece Informação para o Application Manager Software(AMS):


tamanho do JAR
nome da MIDlet
ı́cone da aplicação
Atributos obrigatórios em um .JAD:
MIDlet-Name
MIDlet-Version
MIDlet-Vendor
MIDlet-1
MIDlet-Jar-URL
MIDlet-Jar-Size
Application Manager:
Software do dispositivo responsável por instalar, executar e remover
MIDLets;

Jesseildo F. Gonçalves () 07/10/2010 15 / 50


Introdução ao J2ME MIDLets

Ciclo de Vida do MIDLet

Jesseildo F. Gonçalves () 07/10/2010 16 / 50


RMS: Record Management System

RMS: Record Management System

Jesseildo F. Gonçalves () 07/10/2010 17 / 50


RMS: Record Management System

Record Management System (RMS)

Mecanismo padrão para persistência oferecido pelo MIDP;


Dados são armazenados em locais dependentes do dispositivo e
não estão disponı́veis diretamente para uma MIDLet.
O RMS trabalha através do SO para realizar operações do Banco
de Dados;
O RMS é um sistema gerenciador de registros
Ele é composto de múltiplos record stores ou “armazéns de
registro”
Cada record store pode ser visualizado como uma coleção de
registros.

Jesseildo F. Gonçalves () 07/10/2010 18 / 50


RMS: Record Management System

Record Management System (RMS)

Cada registro é um array de bytes;


Registros não tem uma estrutura definida;
Cada Registro tem associado a ele um identificador
chamado recordID;
O recordID pode ser usado para recuperar um registro
dentro de uma Record Store;
Registros adjacentes não tem necessariamente
recordIDs consecutivos.

Jesseildo F. Gonçalves () 07/10/2010 19 / 50


RMS: Record Management System

Record Management System (RMS)

Jesseildo F. Gonçalves () 07/10/2010 20 / 50


RMS: Record Management System

Record Store

Cada Record Store possui um Nome

String de 32 carateres (Case sensitive)

O espaço de nomes é ligado a um conjunto de Midlets (Midlet


Suite)

Diferentes conjuntos de Midlets podem conter RSs com o mesmo nome

Um Record Store guarda informação de alteração usando um


atributo de tempo (timestamp: data e hora em milisegundos) e
outro de versão

Jesseildo F. Gonçalves () 07/10/2010 21 / 50


RMS: Record Management System

Metodos para acesso ao Record Store

A API do MIDP fornece os seguintes metodos para acesso ao Recor


Store:

Jesseildo F. Gonçalves () 07/10/2010 22 / 50


RMS: Record Management System

Record Store

Quando o trabalho com um Record Store terminar ela deve ser


fechada;

Cada instância de um Record Store é unico, ou seja, chamadas


subseqüentes para abrir a mesma RS receberão a mesma referência

Cada instância de uma RS guarda o número de vezes que ele foi


aberta

O Record Store não é realmente fechado enquanto o método


closeRecordStore() não for chamado o mesmo número de vezes que
openRecordStore.

Jesseildo F. Gonçalves () 07/10/2010 23 / 50


RMS: Record Management System

Registros

Não é possı́vel atualizar pedaços de um registro;

Primeiro é necessário construir todo o registro em memória como um


array de bytes;

Só então o registro pode ser adicionado ou atualizado em uma


chamada única;

byte[] rec = obs.toByteArray();


recordID = rs.addRecord(rec, 0, rec.length);

Jesseildo F. Gonçalves () 07/10/2010 24 / 50


RMS: Record Management System

Metodos para manipulação de Registros

A API do MIDP fornece os seguintes metodos para manipulação de


registros:

Jesseildo F. Gonçalves () 07/10/2010 25 / 50


Conexões com Redes

Conexões com Redes

Jesseildo F. Gonçalves () 07/10/2010 26 / 50


Conexões com Redes

GCF - Generic Connection Framework

Hierarquia de classes e interfaces para criar conexões e fazer I/O:


http
Datagramas
Streams
Infra Vermelho
Bluetooth
Porta Serial (RS232)

Implementada pelo javax.microedition.io;

Abordagem Genérica para Conexões fornecendo uma API comum para


todos os tipos básicos de conexões;

Jesseildo F. Gonçalves () 07/10/2010 27 / 50


Conexões com Redes

GCF - Generic Connection Framework

Jesseildo F. Gonçalves () 07/10/2010 28 / 50


Conexões com Redes

GCF - Generic Connection Framework

Fabrica de Conexões

Todas as conexões criadas a partir de URLs (Uniform Resource


Locators) que indicam o tipo da conexão;

Connector.open(”socket://localhost:80”)

Connector.open(”http://localhost:80”)

Connector.open(”file://j2me.txt”)

Jesseildo F. Gonçalves () 07/10/2010 29 / 50


GUI de Alto Nivel

GUI de Alto Nivel

Jesseildo F. Gonçalves () 07/10/2010 30 / 50


GUI de Alto Nivel Componentes

Estrutura

A inicialização dos componentes da Interface Gráfica é uma das


primeiras tarefas a serem feitas;

Cada MIDLet possue uma referencia um objeto Display;

Só existe um objeto Display;

Os componentes exibidos devem herdar da classe Displayable;

MIDP’s possuem um único “CommandListener”;

Jesseildo F. Gonçalves () 07/10/2010 31 / 50


GUI de Alto Nivel Componentes

Estrutura

Jesseildo F. Gonçalves () 07/10/2010 32 / 50


GUI de Alto Nivel Componentes

Displayable

Screen: Superclasse de todas as classes que encapsulam Interfaces de


Alto Nı́vel de “alto nı́vel”
O “look and feel” de cada Screen é implementado pelo MIDP e
depende do dispositivo
Alert
List
TextBox
Form

Canvas: Superclasse usada por aplicações que necessitam manipular


gráficos e eventos de “baixo-nı́vel”

Jesseildo F. Gonçalves () 07/10/2010 33 / 50


GUI de Alto Nivel Componentes

Form

Um Form é uma tela que pode conter Itens;

O dispositivo manipula layout, fluxo e rolagem;

Rolagem horizontal não é encorajado e, geralmente,


não está disponı́vel na maioria das implementações;

Itens dentro de um Form sãoreferenciados por ı́ndices;

Jesseildo F. Gonçalves () 07/10/2010 34 / 50


GUI de Alto Nivel Componentes

Item

A Classe Item é superclasse de todos os componentes


que podem ser inseridos em um Form;

Um Item só pode existir em um Form de cada vez;

Para reusar um Item em um Form ele deve primeiro


ser retirado do outro Form;

Todo Item pode ter um Label;

Jesseildo F. Gonçalves () 07/10/2010 35 / 50


GUI de Alto Nivel Tratamento de Eventos

Tratamento de Eventos

A manipulação de comandos pela aplicação é baseada num modelo


Receptor (Listener);

Quando o usuário invoca um comando de uma tela, o receptor


daquela tela é chamado;

Cada objeto Displayable possui um único receptor;

Existem duas interfaces receptoras:


CommandListener
ItemStateListener

A ação associada a uma comando deve ser programada no receptor


de comandos:
void commandAction (Command c, Displayable d)
Jesseildo F. Gonçalves () 07/10/2010 36 / 50
GUI de Alto Nivel Tratamento de Eventos

Processamento de Eventos

Jesseildo F. Gonçalves () 07/10/2010 37 / 50


GUI de Alto Nivel Tratamento de Eventos

Comandos

Rótulo
Especifica o texto associado ao comando
Pode ser mostrado na tela ou dentro de um menu

Tipo
Especifica a nossa intenção de que o dispositivo mapeie diretamente
um comando a um botão especı́fico
BACK, CANCEL, EXIT, HELP, ITEM, OK, SCREEN, e STOP

Prioridade
Quanto mais alto o número, menor a prioridade
Podem ser úteis para o AMS organizar os comandos no menu (depende
do dispositivo)
O tipo pode influenciar na posição dos comandos em um dispositivo

Jesseildo F. Gonçalves () 07/10/2010 38 / 50


Novidades

Novidades

Jesseildo F. Gonçalves () 07/10/2010 39 / 50


Novidades J4ME

J4ME

Incrementa o J2ME adicionando melhorias como:


Interface Gráfica mais b̈onita¨;

Implementação de um log de exceções;

Traz embutido a implementação de modo GPS via Bluetooth (Depende


do Dispositivo);

http://code.google.com/p/j4me/

Jesseildo F. Gonçalves () 07/10/2010 40 / 50


Novidades J4ME

J4ME

Jesseildo F. Gonçalves () 07/10/2010 41 / 50


Novidades J2ME Polish

J2ME Polish
Conjunto de ferramentas e tecnologias destinadas a desenvolvedores
de softwares para dispositivos móveis e empresas no espaço móvel.

As principais caracteristicas incluem:

Lush: Um kit de ferramentas de interface do usuário que é altamente


flexı́vel e que pode ser concebido fora do código-fonte do aplicativo.

Janus: Um conjunto de ferramentas para a portabilidade de aplicações


móveis para diferentes aparelhos e plataformas tecnológicas diferentes.

Touch: Tecnologia para acessar o conteúdo do lado do servidor e se


comunicar com as partes remotas.

Trunk: Uma solução de persistência que permite a você carregar e


salvar dados complexos, com uma única linha de código.

Marjory: Banco de dados para dispositivos móveis.


Jesseildo F. Gonçalves () 07/10/2010 42 / 50
Novidades J2ME Polish

J2ME Polish: Lush

Permite personalizar sua aplicação, sem alterar o código fonte do seu


aplicativo.

O projeto, juntamente com animações e efeitos são especificados em


arquivos CSS externos, muito semelhante ao padrão da web.

Caracteristicas:

Designe similar ao desenvolvimento de paginas web;

Possibilidade de altera o design sem modificar o codigo fonte, somente


o arquivo CSS;

Facilidade de adaptar o visual para diferentes resoluções;

Compatı́vel com MIDP padrão.


Jesseildo F. Gonçalves () 07/10/2010 43 / 50
Novidades J2ME Polish

J2ME Polish: Lush

Jesseildo F. Gonçalves () 07/10/2010 44 / 50


Novidades J2ME Polish

J2ME Polish: Janus

Permite desenvolver uma aplicação em


ambiente desktop e compilá-la para J2ME
padrão;

Baseado em Ant, podendo usar Netebeans ou


Eclipse (Necessidade de instalação dos plugins)

Jesseildo F. Gonçalves () 07/10/2010 45 / 50


Novidades J2ME Polish

J2ME Polish: Touch

Permite conectar o dispositivo a um servidor


utilizando tecnologia RMI;

Reduz a transferência de dados, diminuindo o custo;

Utiliza qualquer servidor HTTP com suporte Java ou


XML-RPC;

Exibe HTML ou conteúdo RSS em aplicativos móveis.

Jesseildo F. Gonçalves () 07/10/2010 46 / 50


Novidades J2ME Polish

J2ME Polish: Trunk

Permite serialização automática ou manual de dados


em dispositivos móveis;

Permite serializar uma arvore completa de classes;

Permite a serialização de arquivos e imagens;

Jesseildo F. Gonçalves () 07/10/2010 47 / 50


Novidades J2ME Polish

J2ME Polish: Marjory

Um banco de dados para dispositivos móveis;

Não exclui a necessidade de serializar os dados;

Jesseildo F. Gonçalves () 07/10/2010 48 / 50


Novidades

Referências

Core J2ME: Technology and MIDP, John W. Mochow,


Pearson, 2004

Minicurso: J2ME - Java para dispositivos móveis,


Antonio L. Peloso

Jesseildo F. Gonçalves () 07/10/2010 49 / 50


Novidades

Chega de teória, está na hora do código!!!! ;-)

Jesseildo F. Gonçalves () 07/10/2010 50 / 50

Você também pode gostar