Jorge Dias Jr.
Aplicações Móveis com J2ME
2/48
Java 2 Micro Edition
Edições do Java
Java 2 Standard Edition (J2SE)
execução em máquinas simples de computadores pessoais e estações de trabalho
Java 2 Enterprise Edition (J2EE)
suporte interno para servlets, JSP e XML. É destinada a aplicativos baseados no servidor
Java 2 Micro Edition (J2ME)
Aplicações para pequenos dispositivos
Edições do Java
Motivação
Grande interesse da população por celulares e outros pequenos dispositivos
- Expandir a utilidade do celular e outros dispositivos
Tendência mundial na utilização de Java como a plataforma de desenvolvimento de
aplicações para tais dispositivos
Mercado de US$ 6 bilhões em ‘mobile games’ em 2004. Fonte: Gartner Group
Mercado de US$ 12,9 bilhões em aplicações ‘mobile office’ em 2005. Fonte: Yankee
5/48
Java 2 Micro Edition
Algumas empresas que suportam J2ME
6/48
Java 2 Micro Edition
Introdução ao J2ME
Java 2 Micro Edition: Conjunto de tecnologias e especificações voltadas para “dispositivos limitados”
–Memória
–Processamento
–Conectividade
7/48
Java 2 Micro Edition
Como colocar Java em pequenos
dispositivos?
Java Web Start Plugins Swing, AWT
JDBC
8/48
Java 2 Micro Edition
Como colocar Java em pequenos
dispositivos?
Subset do J2SE API + API complementar
+ JVM adequada
Criando-se uma JRE apropriado para as capacidades do dispositivo
9/48
Java 2 Micro Edition Organizado em:
– Configurações: Define uma plataforma Java para um conjunto de dispositivos
– Perfis: Define especificações de mais alto nível, específicas para dispositivos: GUI, I/O e Rede
– Pacotes opcionais: APIs específicas de um determinado modelo de aparelho. Ex: Nokia, Motorola, etc.
Introdução ao J2ME
A combinação desses 3 elementos é feita satisfazendo a capacidade de memória, processamento e E/S de cada categoria de dispositivos (ex: Celulares ou Set-top Box).
10/48
Java 2 Micro Edition
Diferentes tipos de dispositivos
Set-top Box
Pager Celular
Palm
Configurações
Inclui a máquina virtual e o mínimo de classes suportada pelo dispositivo.
Foram criadas 2 configurações para abranger os vários dispositivos:
CLDC – Connected Limited Device
Configuration
Ex: Celulares, PDAs, Pagers, etc.
CDC – Connected Device Configuration
Ex: Set-top box, etc.
Sistema Operacional Máquina Virtual Java
Configuration
Configuration
Profile
CDC – Connected Device Configuration
Dispositivos de no mínimo 2MB de memória
total (RAM + ROM). Processadores com 32 bits. Algum tipo de conexão de rede. especifica o uso do Java 2 platform VM
completo, que neste contexto échamado de
Compact Virtual Machine (CVM).
Sistema Operacional Máquina Virtual Java
Configuration
Configuration
13/48
Java 2 Micro Edition CLDC – Connected Limited Device Configuration
Dispositivos de 160 KB a 512 KB de memória total.
Processadores de 16 ou 32 bits mas com um baixo poder de processamento.
Conexão de rede quase sempre wireless. Usa uma máquina virtual bem reduzida denominada KVM (Kilo Virtual Machine).
Sistema Operacional Máquina Virtual Java
Configuration
Configuration
Profile
14/48
Java 2 Micro Edition
Kilo Virtual Machine
(KVM)
Máquina virtual reduzida
Compacto, desenhado para pequenos dispositivos
Requer de 40 – 80 kilobytes de memória Somente 20 – 40 kilobytes de memória dinâmica
Pode rodar em processadores de 16 bits com clock de 25 MHz
Mais informações:
http://java.sun.com/products/kvm
Sistema Operacional
Máquina Virtual Java
Configuration
Configuration Profile
15/48
Java 2 Micro Edition
Profile (Perfil)
Fornece bibliotecas para desenvolver aplicações para um tipo particular de dispositivo.
Profile define características das aplicações, tais como: modo do ciclo de vida, interface gráfica, acesso a propriedades específicas do dispositivo.
Profiles devem ser associados a uma Configuration.
Sistema Operacional Máquina Virtual Java
Configuration
Configuration
Profile
16/48
Java 2 Micro Edition
Arquitetura usando MIDP
17/48
Java 2 Micro Edition
J2ME & MIDP
18/48
Java 2 Micro Edition Profile MIDP (Mobile Information Device Profile)
Usado com o CLDC, fornece um ambiente Java completo para desenvolvimento de aplicações móveis
Aplicações neste contexto são denominadas MIDlets
Muitos celulares já estão vindo com suporte ao MIDP
Atualmente na versão 2.0
Sistema Operacional Máquina Virtual Java
Configuration
Configuration
Profile
Características do MIDP
128 KB de memória não-volátil para Java 32 KB de memória volátil para tempo de execução
8 KB de memória não-volátil para armazenamento de dados
Uma tela de pelo menos 96 x 54 pixels Capacidade de entrada de dados
Capacidade de receber e enviar dados em conexão
Pacotes Opcionais
Está no topo da camada Profile
Oferecem APIs para usar tecnologias como: - bluetooth
- web services (KSOAP) - wireless messaging - multimidia
21/48
Java 2 Micro Edition
java.lang java.io java.util javax.microedition.io javax.microedition.lcdui javax.microedition.midlet javax.microedition.rms
Pacotes
CLDC
MIDP
22/48Java 2 Micro Edition
MIDlets
Application Manager Ciclo de vida Midlet Básico Interface gráfica Ferramentas de desenvolvimento Arquivos do MIDlet InstalaçãoPersistência dos dados MIDP para PalmOS
23/48
Java 2 Micro Edition
MIDlet Básico
import javax.microedition.midlet.MIDlet;
public class UmMidlet extends MIDlet {
public UmMidlet() {} public void startApp() {} public void pauseApp() {}
public void destroyApp(boolean flag) {} }
24/48
Java 2 Micro Edition
Gerenciador de Aplicações
(Application Manager)
Controla os aplicativos a serem instalados, onde e como serão armazenados e como serão executados e removidos.
Assim que o MIDlet é invocado, a AM executa o método startApp(), colocando o midlet em estado Ativo.
Enquanto o MIDlet é executado, o mesmo pode ser pausado, a AM invoca o método pauseApp() (estado Pausado).
25/48
Java 2 Micro Edition
Ciclo de vida do MIDlet
Pausado (Paused): O Midlet encontra-se
pausado, ou seja, seu código não está sendo executado
Ativo (Active): O Midlet encontra-se em
execução
Destruído (Destroyed): O Midlet terminou sua
execução e foi encerrado pelo Application Manager
26/48
Java 2 Micro Edition
Ciclo de vida do MIDlet
Interface no MIDP
Interface simples que satisfaz a limitação de tela dos dispositivos
A Interface do MIDP foi dividida em duas partes:
- Interface de Alto nível: Objetos de interface - Interface de Baixo nível: Área livre para gráficos
Interface no MIDP (Alto nível)
MIDP fornece alguns componentes GUI limitados– Form – Alert – Choice e ChoiceGroup – List – StringItem – TextBox – TextField – DateField – Gauge – Ticker – Image
29/48
Java 2 Micro Edition
Interface no MIDP
Apenas um componente pode ser mostrado na tela por vez
Passos:
1) Instancia objeto da classe Display 2) Declara o componente a ser utilizado 3) Declara os comandos a serem utilizados naquele componente
4) Vincula os comandos aos componentes 5) Mostra na tela o componente
30/48
Java 2 Micro Edition
Interface no MIDP
A tela do dispositivo é representado por uma instância da classe Display.
Ex: Display display = Display.getDisplay(this); Os componentes são declarados.
Ex: List list = new List(“Menu", Choice.IMPLICIT);//lista de opçoes
Ações do usuário são gerenciadas por comandos, os quais são adicionados aos componentes.
Ex:Command cmExit = new Command("Sair", Command.EXIT, 1);
list.addCommand(cmExit);
Na tela são mostrados componentes, objetos já instanciados, os quais são chamados pelo método
setCurrent().
Ex: display.setCurrent(list);
31/48
Java 2 Micro Edition
Ferramentas de Desenvolvimento
JDK 1.2 ou superiorwww.java.sun.com
J2ME Wireless Toolkit
www.java.sun.com/j2me
Nokia Developer’s Suite 2.0 for J2ME
www.forum.nokia.com
Eclipse
www.eclipse.org
Plugin Antenna para o Eclipse
antenna.sourgeforge.net
32/48
Java 2 Micro Edition
Etapas no desenvolvimento de Midlets
Arquivo fonte (arquivo.java) Binário (arquivo.class) Binário pré-verificado (arquivo.class) Arquivo.jar (png + class) Arquivo.jad javac preverify jar
33/48
Java 2 Micro Edition
Passos para criação de um Midlet
1) Instalar Software
– JDK 1.2 ou mais atual, CLDC, MIDP
– JDK 1.2 ou mais atual, Toolkit
2) Configurar o Ambiente (Com toolkit, estes passos não são necessários ) 3) Escrever o MIDlet
4) Compilar MIDlet
– C:\javac -d .\ -bootclasspath c:\MIDPClassPath; C:/MIDletPath HelloMIDlet.java
5) Preverificar o MIDlet
– C:\preverify -classpath c:\MIDPClassPath;C:\MIDletPath HelloMIDlet.class
6) Testar o MIDlet
– C:\Example\output>midp HelloMIDlet
7) Empacotar o MIDlet
– C:\jar cf Hello.jar HelloMIDlet.class
8) Escrever o Arquivo Descriptor (JAD) para o MIDlet 9) Rodar o MIDlet
– C:\midp -descriptor Hello.jad
34/48
Java 2 Micro Edition
Arquivos do MIDlet para Celular
Arquivo JAD- Um ou mais MIDlets (MIDlet Suite) devem possuir apenas um arquivo JAD que contém as informações da aplicação e a referência para o arquivo JAR
Arquivo JAR
- O arquivo JAR deve conter todas as classes da aplicação e mais o arquivo manifest - O arquivo manifest tem informações sobre o empacotamento JAR (parecido com o JAD)
Arquivo JAD (Java Application Descriptor)
MIDlet-Name MIDlet-Version MIDlet-Vendor MIDlet-Jar-URL MIDlet-Jar-Size MIDlet-<n>
Arquivo de informação sobre um ou mais
MIDlets
Manifest
MIDlet-Name MIDlet-Version MIDlet-Vendor MIDlet-<n> MicroEdition-Profile MicroEdition-Configuration37/48
Java 2 Micro Edition
Instalação do Midlet
WEB SERVER Arquivo.jar Arquivo.jad http://www.../Arquivo.jad Arquivo.jad http://www.../Arquivo.jar Arquivo.jar application/java-archive .jar JAR text/vnd.sun.j2me.app-descriptor .jad JAD MIME-TYPE EXTENSÃO TIPO 38/48Java 2 Micro Edition
Exemplo
HelloWorld
39/48
Java 2 Micro Edition
Record Management System (RMS)
Estrutura de armazenamento simples: possui apenas um ID e um array de Bytes.
int ID byte[] dados int ID byte[] dados int ID byte[] dados
int ID byte[] dados
Cada registro pode ser lido ou modificado
através do seu ID, o qual é retornado quando um registro é inserido.
Pacote: javax.microedition.rms
40/48
Java 2 Micro Edition
Conexão
Para fornecer uma estrutura compatível com as limitações dos dispositivos foi criado o GCF (Generic Connection Framework)
Idéia básica: classe Connector pode criar qualquer tipo de conexão
Exemplos:
Connector.open(“http://www.josejorge.com”); Connector.open(“socket://josejorge:6000”); Connector.open(“file://arquivo.txt”);
41/48
Java 2 Micro Edition
Conexão
Classe Connector é definida na CLDC, porém a implementação real dos protocolos se dá em nível de perfil
O MIDP 1.0 possui obrigatoriamente conexão HTTP (HttpConnection)
Conexão com socket e datagrama é opcional No MIDP 2.0 o HTTPS entra no lugar do HTTP
42/48
Java 2 Micro Edition
Exemplo: J2ME/J2EE
O Midlet conecta ao servidor e chama um servlet via HTTP. Este servlet faz uma consulta ao BD e retorna o valor ao Midlet.
HTTP
BD
JDBCMidlet
J2MEServlet
J2EEMIDP para Palm OS
Midlets precisam ser convertidos (JAD/JAR para PRC)
Emulador para Palm OS (POSE) e ROMs:
www.palmos.com/
MIDP para Palm:
www.java.sun.com/products/midp4palm/
MIDP para Palm OS
MIDP4PALMPossui o software Java para Palm OS (Java HQ). Basta transferir o arquivo MIDP.prc para o dispositivo
PRC Converter Tool
- É uma aplicação java swing que vem junto com o midp4palm
- Converte os arquivos JAD/JAR em PRC para serem instalados no Palm
45/48
Java 2 Micro Edition
MIDP para Palm OS
46/48
Java 2 Micro Edition
Sites interessantes
www.midlet.org www.microjava.com www.codeblood.com.br www.forum.nokia.com www.java.sun.com/j2me www.j2meolympus.com www.j2mepolish.org 47/48Java 2 Micro Edition
Referências
http://www.java.sun.com/j2me
O'Reilly. J2ME in a Nutshell
MUCHOW, J. W. Core J2ME Technology & MIDP
TAYLOR, Michael. Strategies For J2ME MIDP/J2EE Integration Over HTTP
48/48
Java 2 Micro Edition