Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf ·...

176
J2ME 1 Java 2 Platform, Micro Edition (J2ME) Alcione de Paiva – DPI – Granbery Partes deste material foram adaptadas de Mauro Nacif Masha Gutkhen Keren Gazit 2006

Transcript of Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf ·...

Page 1: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 1

Java 2 Platform, Micro Edition (J2ME)

Alcione de Paiva – DPI – Granbery

Partes deste material foram adaptadas de Mauro Nacif Masha GutkhenKeren Gazit

2006

Page 2: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 2

Conteúdo

O que é J2ME?J2ME conceitos básicos

Configurações (CLDC, CDC)Profiles (MIDP)

MIDlet, MIDlet SuiteClasses básicas da APIUso e instalação ExemplosExercícios

Page 3: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 3

Introdução

Dispositivos de informação inteligentes são uma necessidade em nossa moderna. Tais dispositivos podem ser:

Telefones celularessmart cardsPDAsPalmtopsDispositivos eletrônicos em geral

Estes dispositivos tendem a ser direcionados para um propósito específico, com recurso limitado, conectados em rede.

Page 4: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 4

MotivaçõesYears to Reach 25% Market Penetration

0

5

10

15

20

25

30

35

40

Telephone PC Cellular Internet Mobileinternet

Category

Year

s

=> penetração de 25% do mercado da Internet móvel em quatro anos (Forrester)

Page 5: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 5

Requisitos de ambiente

É necessário um ambiente adaptado para dispositivos com recursos limitados

As limitações são: Memória extremamente limitadaTamanho de tela pequena Métodos de entrada alternativos Processadores lentos

Page 6: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 6

Qual é a solução?

Devido à grande demanda a Sun decidiu desenvolver uma edição especial de Java: J2ME (Java 2 Micro Edition).

Page 7: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 7

Page 8: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 8

Penetração da Tecnologia Java

Developers.sun.com  (February 14-17, 2005)

110 operadoras no mundo permitem deployments em JavaUsados em mais de 400 modelos de mais de 40 fabricantes diferentesUsada em mais de 750 milhões de smartcards.

Page 9: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 9

Penetração da Tecnologia Java

Enterprise Developer News (Tuesday, April 12, 2005)

O desenvolvimento em J2ME cresceu 33% em apenas seis meses“É mais efetivo em termos de custo o desenvolvimento em J2ME uma vez que não é necessário reescrever a aplicação para dispositivos diferentes”.

Page 10: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 10

Edições de Java

Dispositivos diferentes têm exigências diferentes e expectativas diferentes de Java.Uma plataforma (solução) não pode abarcar todos os segmentos do mercado (servidor web , vídeo games etc.)Usuários/desenvolvedores querem flexibilidade.

Page 11: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 11

Edições de Java

A Plataforma Java 2 é dividida em três edições.Cada edição fornece um ambiente completo para executar aplicações baseadas em java, inclusive a máquina virtual Java (VM) e classes de tempo de execução. As três edições abordam tipos diferentes de aplicações que executam em tipos diferentes de dispositivos.

Page 12: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 12

Edições de Java

Java2 Standard Edition

(J2SE™)

Java2 Enterprise Edition

(J2EE™)

Java2 Micro Edition

(J2ME™)

Plataforma Java 2

Aplicações desktop &Aplicações workstation

Aplicações empresariaisde alto desempenho

Dispositivos comLimitações de memória e processamento

Page 13: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 13

Edições de Java

Cada edição define conjuntos diferentes de bibliotecas de classe. Existem milhares de classes básicas de J2SE, ocupando 10-20 megabytes de espaço. J2ME fornece um número

menor de classes.

J2ME

J2SE

J2EE

Page 14: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 14

PersonalJava e EmbeddedJava

J2ME não é a primeira tentativa de adaptar Java para ambientes restritos.PersonalJava

Usa as classes básicas de Java 1.1 com algumas características de Java 2.A implementação ainda exige para 2 megabytes de memória e um processador rápido para executar.

Page 15: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 15

PersonalJava e EmbeddedJava

EmbeddedJava Cada comportamento da JVM e das classes runtime são opcionais – o implementador pode escolher exatamente que classes e métodos são requeridos.Perda da portabilidade.

Page 16: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 16

J2ME Conceitos básicos

ConfigurationPlataforma mínima requerida para um grupo de dispositivos

ProfileAtende necessidades específicas de uma certa família de dispositivos

Pacotes opcionais

J2ME Profile

J2MELibraries

Java Virtual Machine

Prof

iles

Con

figur

atio

n

Sistema operacional

Java Language

Page 17: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 17

J2ME Conceitos básicos

JavaCardJ2ME

CLDC

J2EE

Application Server

Enterprise Services

Standard Library

J2SE

JVM (HotSpot)

JavaCard API

JCRE

CDC

CLDC Core APICLDC Core API

CVM KVM

PD

A

Profile

Mobile

Internet dispositiv

oO

ther P

rofile

Person

Profile

Foundation P

rofile

Java Language

Page 18: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 18

J2ME Conceitos básicos

Java Card Cerca de 50K de

memória Três componentes:

JCVM, JCRE, JC API

2 diferentes VMs: Conversor

Interpretador

Class file(s)

Converter

CAP files

Off-card installation program

CAD

On-card installer

Interpreter

Runtime environment

PC ou workstation

Smart card

Page 19: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 19

J2ME Conceitos básicos

JavaTV Baseado em J2SE VM no receptor de

TV & executa byte code

Aplicações sob-demanda

Applications & Applets

Java Platform

Digital TV Receiver

Device Drivers

Java TV API

Real Time OS

Application layer

Java technology layer

RTOS layer

Hardware layer

Page 20: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 20

J2ME Conceitos básicos

J2ME está baseada em 3 conceitos básicos: Configurations ProfilesPacotes opcionais

Page 21: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 21

Configurações

Uma configuration é um ambiente Java completo, consistindo de:

Uma Java virtual machine (VM) para executar Java bytecode Código nativo para interagir com o sistema subjacente Um conjunto de classes básicas Java de tempo de execução

Para usar uma configuration, um dispositivo deve atender alguns requerimentos mínimos.

Page 22: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 22

Configurações

O conjunto de classes básicas e pequeno e deve ser expandido com classes adicionais fornecidas pelo J2ME profiles ou pelo implementador da configuration.Configurations não define classes de interface com o usuário.

Page 23: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 23

Configurações

Configuration

CLDC CDC

Connected Limited Device Configuration

Connected Device Configuration

Page 24: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 24

CLDC vs. CDC

CLDC Para dispositivos muito limitados160 - 512 KB de memória totalProcessador de 16-bit ou 32-bitBaixo consumo de energia, com possível uso de bateriaConectividade com largura de banda limitada

CDC2 MB ou mais de memória Processador de 32-bitConectividade com banda larga, com o uso freqüente de TCP/IP

Page 25: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 25

CLDC vs. CDC - VM

Características ausentes naCLDC VM:

Tipos de Ponto flutuante (1.0)Finalização de objetos JNI ou reflectionThread groups ou daemon threadsClass loaders para usuário

Mudanças na verificação/ pre-verificação

O CDC suporta uma máquina virtual Java 2 completa

Page 26: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 26

KVM e CVM

KVM - Java virtual machines para o CLDC CVM - Java virtual machines para o CDCEscritas para trabalhar especificamente em ambientes limitados e para serem facilmente portadas para diferentes plataformas.

Page 27: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 27

CLDC vs. CDC – J2SE Subset

CLDC inclui classes da:

java.lang java.io java.util

Somente classes selecionadas de cada pacote foram incluídas.

CDC inclui 17 pacotes

Page 28: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 28

CLDC vs. CDC – J2SE Subset

CDC CLDCJ2SE

Page 29: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 29

Lidando com I/O

J2SE inclui várias classes para realizar I/O.Existe um número grande de classes I/O e elas tendem a encapsular modelos de I/O que não são necessariamente encontrados em todos os dispositivos. Por exemplo, alguns dispositivos handheld não possuem sistemas de arquivo. Suporte a Socket, também não é universal.

Page 30: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 30

Lidando com I/O em CLDC

CLDC define um conjunto novo de APIs para I/O chamado de Generic Connection Framework. O GCF, parte do novo pacote javax.microedition.io, define interfaces para os diferentes tipos de I/O que são possíveis.O CLDC não define, de fato, qualquer implementação de I/O. Isto fica a cargo do profiles e/ou do fabricante do dispositivo.

Page 31: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 31

GCF - exemploimport java.io.*; import javax.microedition.io.*;

StreamConnection conn = null; InputStream is = null; String url = "socket://somewhere.com:8909";

try { conn = (StreamConnection) Connector.open( url ); is = conn.openInputStream(); .... // etc. etc.

} …

Page 32: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 32

Lidando com I/O em CDC

Uma vez que CDC é um superconjunto do CLDC, ele inclui o GCF. CDC também requer suporte GCF para dois tipos específicos de conexões: arquivos e datagramas. A razão: CDC inclui as classes dos pacotes java.io e java.net.

Page 33: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 33

J2ME Conceitos básicos

J2ME está baseada em 3 conceitos básicos: Configurations ProfilesPacotes opcionais

Page 34: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 34

Profiles

Adiciona classes específicas do domínio para uma configuration:

Para adicionar funcionalidade ausentesPara suportar usos específicos do dispositivo

A maioria de profiles define classes de interface com o usuário para construir aplicações interativas.Para usar um profile, o dispositivo deve atender um mínimo de requisitos da configuration e do profile.

Page 35: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 35

Profiles

Profile

MIDP PDAP PPPBPFP

Mobile Information

device

Personal Digital

Assistant Profile

Foundation Profile

Personal Basis Profile

Personal Profile

Page 36: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 36

MIDP – MID Profile

MIDP é direcionada para uma classes de dispositivos conhecidos como mobile information devices (MIDs). Características Mínimas do MIDs:

Memória suficiente para executar aplicações MIDP Visor com pelo menos 96 X 56 pixels, monocromático ou coloridoUm keypad, teclado, ou tela sensível ao toqueCapacidade de rede sem fio bi-direcional

Page 37: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 37

MIDP - Especificação

Existem duas versões de MIDP:MIDP 1.0 – lançado em Setembro de 2000. Muitos dispositivos disponíveis no mercado suportam esta versão. MIDP 2.0 – lançado em Dezembro de 2002. Grande parte dos dispositivos o suportam.

Page 38: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 38

MIDP - Especificação

O MIDP adiciona APIs às APIs básicas definidas pelo CLDC. As novas características incluem:

Suporte para gerência do ciclo de vida da aplicação de modo similar aos applets no J2SE. Armazenamento persistente de dados. Conectividade baseada no HTTP no GCF. Suporte simples às interface com o usuário, com flexibilidade suficiente para construção de jogos e aplicações de negócio.

Page 39: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 39

MIDP - Especificação

A especificação MIDP 2.0 inclui novas APIs em relação a versão 1.0, sendo as principais:

javax.microedition.io.PushRegistry – classe responsável por lidar com push registry (um MIDlet responder a um evento externo sem estar ativo). javax.microedition.lcdui.game – pacote responsável por estender as capacidades do MIDP para jogos 2D, lidando com layers, sprites e transparências.

Page 40: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 40

MIDP - Especificação

Outros avanços da MIDP 2.0:Ampliação da capacidade de interface com o usuário. Suporte a mídia (wav)Ampliação da capacidade de conectividade (HTTPS, datagram, sockets, server sockets e comunicação com a porta serial)Suporte Over-the-air (OTA) – instalação automática pelo ar.

Page 41: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 41

MIDP Limitações das aplicações

Memória é um recurso particularmente escasso.

Os primeiros celulares Motorola habilitados para J2ME limitavam o tamanho de uma aplicação a 50K.

Page 42: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 42

J2ME Conceitos básicos

J2ME está baseada em 3 conceitos básicos:Configurations ProfilesPacotes opcionais

Page 43: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 43

Pacotes opcionais

Conjunto de APIs para suportar comportamentos adicionais comuns. Possui dependências específicas com uma configuration particular e/ou um ou mais profiles.Exemplos de pacotes opcionais :

RMIBluetoothJDBC

Page 44: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 44

Pacotes opcionais JCP APIs suportadas no J2ME Wireless Toolkit JSR    API Name    JSR 139   CLDC 1.1 Connected Limited Device Configuration JSR 118   MIDP 2.0 Mobile Information Device Profile    JSR 185   JTWI 1.0 Java Technology for the Wireless Industry   JSR 205   WMA 2.0 Wireless Messaging API    JSR 135   MMAPI 1.1 Mobile Media API    JSR 75    PIM and File PDA Optional Packages for the J2ME Platform   JSR 82    Bluetooth and OBEX Java APIs for Bluetooth    JSR 172   J2ME Web Services Specification    JSR 184   3D Graphics Mobile 3D Graphics API for J2ME  

Page 45: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 45

Em resumo

Configuration, profile e pacotes opcionais devem ser selecionados.profiles baseados em CDC tornam o desenvolvimento mais simples, mas não é adequado para dispositivos low-end. profiles baseados em CLDC tornam o desenvolvimento mais difícil, especialmente quando é necessário diminuir o tamanho de uma aplicação para executar em muitos dispositivos.

Page 46: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 46

Page 47: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 47

MIDlets – o coração de J2ME…

Do mesmo modo que os Applets e os Servlets as aplicações MIDP são executadas em um ambiente. As aplicação são denominadas de MIDlet, a qual é uma aplicação MID Profile.

Page 48: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 48

MIDlets – o coração de J2ME…

Toda aplicação deve estender a classe javax.microedition.midlet.MIDlet para permitir que o programa gerente de aplicação (AMS):

controle o MIDlet.Seja capaz de acessar as propriedades do descritor da aplicação. Notificar e requisitar mudanças de estado.

Page 49: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 49

MIDlets – o coração de J2ME…

A classe que estende a classe MIDlet é a classe principal da aplicação. A classe MIDlet define métodos abstratos que devem ser implementados pela subclasse (por exemplo: startApp(), destroyApp(), notifyDestroyed()).

Page 50: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 50

MIDlets – o coração de J2ME…

Page 51: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 51

MIDlet Suite

Um ou mais MIDlets são empacotados juntos em uma MIDlet suite, composta de:

Arquivo JAR (Java archive) Arquivo JAD (Java Application Descriptor)

Todas as classes definidas pelo usuário e recursos requeridos pelos MIDlets na suite devem estar no arquivo JAR.

Page 52: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 52

MIDlet Suite

O arquivo JAR file deve também incluir um manifest que descreve os MIDlets na suite. O descritor da aplicação (JAD) contém informação similar, e é usado por dispositivos para obter informação sobre uma MIDlet suite sem ter que baixar e instalar o MIDlet suite primeiro.

Page 53: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 53

Criando um MIDlet

Page 54: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 54

Criando um MIDletImportando pacotes

específicos do MIDP

import javax.microedition.lcdui.*;import javax.microedition.midlet.*;

Page 55: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 55

Criando um MIDletExtends MIDlet

Implements CommandListener

public class HelloMIDlet extends MIDlet implements CommandListener {

Page 56: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 56

Criando um MIDlet

Criando um form,

adicionando Commands

public HelloMIDlet() { mMainForm = new Form("HelloMIDlet"); mMainForm.append(new StringItem(null,

"Hello, Seminar Software Design!")); mMainForm.addCommand(new Command("Exit",

Command.EXIT, 0)); mMainForm.setCommandListener(this); }

Page 57: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 57

Exemplos de classes da API MIDP

MIDletFormCommand

CommandListenerItemCommandListener

Item

Page 58: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 58

Exemplos de classes da API

MIDlet – Base class Form Command

CommandListener ItemCommandListener

Item

Page 59: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 59

MIDlet class API

protected abstract void startApp() protected abstract void pauseApp()protected abstract void destroyApp(boolean unconditional)public final String getAppProperty(String key) public final void notifyDestroyed()

Page 60: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 60

Exemplos de classes da API

MIDlet

FormCommand

CommandListenerItemCommandListener

Item

Page 61: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 61

Classe Form

Um Form é uma Screen (tela) que contém uma mistura arbitrária de itens: imagens, campos de texto read-only, campos de texto editáveis, campos de data editáveis, medidores, grupos de escolha e itens adaptados. De modo geral, qualquer subclasse da classe Item pode estar contida em um form. A implementação lida com o layout, navegação e rolamento (scrolling).

Page 62: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 62

Classe Form API

Gerência de Itempublic int append(Item item)public Item get(int itemNum)

Layoutpublic void setItemStateListener(ItemStateListener iListener)

Page 63: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 63

Exemplos de classes da API

MIDletFormCommand

CommandListenerItemCommandListener

Item

Page 64: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 64

Classe Command

A classe Command representa o significado de uma ação. Objetos Command estão presentes na interface com o usuário.A ação é, de fato, implementada em um objeto CommandListener. O objeto CommandListener é associado com um objeto Displayable ou um Item.Uma vez que o Comando é acionado, o CommandListener é invocado e a ação é realizada.

Page 65: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 65

Classe Command

Command labelpublic String getLabel()

Command type public int getCommandType()

Command prioritypublic int getPriority()

Page 66: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 66

Classe Command

new Command(“Compre", Command.ITEM, 1);

new Command("Info", Command.ITEM, 1);

new Command(“voltar", Command.BACK, 1);

Label tipo prioridade

Page 67: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 67

Classe Command

Tipo

BACK Comando navigacional para retornar à tela anterior.CANCEL Comando padrão de cancelamento.EXIT Comando padrão de saída da aplicação.HELP Comando para solicitação de ajuda on-line.ITEM Comando relacionado com itens na tela ou elementos de escolha.OK Comando padrão de resposta positiva a um dialogo. SCREEN Especifica um comando definido pela aplicação que pertence à tela corrente. STOP Comando para parar o processo em execução no momento.

          

Page 68: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 68

Classe CommandPrioridade

A aplicação usa o valor de prioridade para descrever a importância deste comando relativamente a outros comandos na mesma tela. Valores de prioridade são inteiros, onde um número menor indica maior importância.

Tipicamente, a implementação escolhe a colocação de um comando primeiro baseado no tipo de comando e então comandos semelhantes em lugares baseado em uma ordem de prioridade. Isto poderia significar que o comando com a prioridade mais alta é colocado de forma que usuário pode ativá-lo diretamente e o comando com mais baixa prioridade é colocado em um menu.

Page 69: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 69

classe CommandListener API

O objeto é um listener para Commands que estão associados à Displayable. public void commandAction(Command c, Displayable d)

Page 70: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 70

classe ItemCommandListener API

Quando um command (associado a um Item) é invocado, a aplicação é notificada por meio da chamada ao método commandAction() de um objeto ItemCommandListener que foi associado ao Item.public void commandAction(Command c, Item item)

Page 71: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 71

Exemplos de classes da API

MIDletFormCommand

CommandListenerItemCommandListener

Item

Page 72: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 72

Classe Item

Uma superclasse para componentes que podem ser adicionados a um Form. Todos os objetos Item possuem um campo labelEscolha o layout, tamanho e aparência do Item Associe Commands

Page 73: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 73

Classe Item API

public void setDefaultCommand(Command cmd) public void setItemCommandListener(ItemCommandListener listener)public void notifyStateChanged()public int getPreferredWidth()

Page 74: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 74

Iniciando…

Passo 1: Baixe J2ME Wireless Toolkit da sun: http://java.sun.com/products/j2mewtoolkit/download-2_2.htmlPasso 2: Instale J2SE SDKPasso 3: Instale o J2ME Toolkit.

Page 75: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 75

Após a instalação….

Atalhos estão disponíveis no menu iniciar.

Novos diretórios são criados

Page 76: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 76

Usando KToolbar

Page 77: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 77

Criando uma nova Aplicação

Clique “New Project”.Entre o nome do projeto e o nome da MIDlet.Novos diretórios serão criados automaticamente.

Page 78: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 78

Onde colocar os arquivos?

Bibliotecas de classes externas, (JAR ou ZIP) para todos projetos KToolbar.J2ME/apps/lib

Arquivos fonteJ2ME/apps/{proj}/src

Arquivos de recursosJ2ME/apps/{proj}/res

Bibliotecas de classes externas, (JAR ou ZIP) para um projeto específico

J2ME/apps/{proj}/lib

JAR, JAD, arquivos manifest descompactados.

J2ME/apps/{proj}/bin

fontes, recursos, e arquivos bináriosJ2ME/apps/{proj}

Page 79: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 79

Depois?

Escolha a plataformaEscreva seu códigograveBuild (Compilar + Preverify)execute

Page 80: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 80

Distribuição para dispositivos reais

Crie um pacoteColoque o pacote em algum lugar da Internet.Atualize o arquivo .jad Download a aplicação para o celularExecute…

Page 81: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 81

Exemplos

OlaMundo Ola2 Envio de mensagem e registro Push Comunicação HTTP

Page 82: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 82

Exemplo: OlaMundoimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class OlaMundoMIDlet extends MIDlet implements CommandListener {

private Command exitCommand; // The exit command private Display display; // The display for this MIDlet public OlaMundoMIDlet() { display = Display.getDisplay(this); exitCommand = new Command(“Sair", Command.SCREEN, 2); }

Comando de tela para sair

Page 83: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 83

Exemplo: OlaMundopublic void startApp() { TextBox t = new TextBox("Ola Mundo", "Ola mundo!", 256, 0); t.addCommand(exitCommand); t.setCommandListener(this); display.setCurrent(t); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { if (c == exitCommand) { destroyApp(false); notifyDestroyed(); } }}

Cria a caixa de textoRelaciona o comando com o texto

Define quem vai escutar o comando

Mostra a tela

Implementa a saída da aplicação

Se verdadeiro o MIDlet deve liberar todos os recursos. Se falso o MIDlet pode lançar MIDletStateChangeException para indicar que não quer ser destruído neste momento.

Page 84: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 84

Exemplo: OlaMundo Criando o projeto no WTK

Page 85: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 85

Exemplo: OlaMundo Criando o projeto no WTK

Edite o código fonte e o grave em {toolkit}\apps\OlaMundo\src\OlaMundo.java

Build

Execute

Page 86: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 86

Exemplo: OlaMundo Simulando o OTA (Over The Air) para

deployment

Page 87: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 87

Exemplo: OlaMundo Simulando o OTA (Over The Air) para

deployment

Page 88: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 88

Exemplo: OlaMundo Simulando o OTA (Over The Air) para

deployment

Page 89: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 89

Exemplo: OlaMundo Simulando o OTA (Over The Air) para

deployment

Page 90: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 90

Exemplo: OlaMundo Simulando o OTA (Over The Air) para

deployment

Page 91: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 91

Exemplo: OlaMundo Simulando o OTA (Over The Air) para

deployment

Page 92: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 92

Exemplo: OlaMundo Simulando o OTA (Over The Air) para

deployment

Page 93: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 93

Exemplo: OlaMundo (outra versão)

import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class OlaMundoMIDlet extends MIDlet implements CommandListener {

public void startApp() { Display display = Display.getDisplay(this); Form mainForm = new Form("OlaMundoMIDlet"); mainForm.append("Ola Mundo!"); Command exitCommand = new Command("Exit", Command.EXIT, 0); mainForm.addCommand(exitCommand); mainForm.setCommandListener(this); display.setCurrent(mainForm); }

Page 94: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 94

Exemplo: OlaMundo public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { if (c.getCommandType() == Command.EXIT ) { notifyDestroyed(); } }}

Page 95: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 95

Exemplo: OlaMundo no NetBeans Mobile Edition

Novo Projeto

Page 96: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 96

Exemplo: OlaMundo no NetBeans Mobile Edition

Desmarque o Create Hello MIDlet

Page 97: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 97

Exemplo: OlaMundo no NetBeans Mobile Edition

Pressione Finish

Page 98: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 98

Exemplo: OlaMundo no NetBeans Mobile Edition

Selecione New File

Page 99: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 99

Exemplo: OlaMundo no NetBeans Mobile Edition

Pressione Finish

Page 100: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 100

Exemplo: OlaMundo no NetBeans Mobile Edition

Copie o conteúdo da transparência para o MIDLet Execute o projeto

Page 101: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 101

Exemplos

OlaMundo Ola2 Envio de mensagem e registro Push Comunicação HTTP

Page 102: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 102

Exemplo: Ola2import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

// Ola que pergunta o nome do usuário

public class Ola2Midlet extends MIDlet implements CommandListener { private Command exitCommand = new Command("Sair", Command.EXIT, 1); private Command okCommand = new Command("OK", Command.OK, 1); private Form mainForm; private Display display; public Ola2Midlet() { mainForm = new Form("Ola"); }

Page 103: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 103

Exemplo: Ola2 public void startApp() { display = Display.getDisplay(this); mainForm.append( new TextField("Entre com seu nome", "", 15, TextField.ANY)); mainForm.addCommand(exitCommand); mainForm.addCommand(okCommand); display.setCurrent(mainForm); mainForm.setCommandListener(this); } public void pauseApp() { } protected void destroyApp(boolean unconditional) { }

Indica o tipo do TextField: ANY, DECIMAL, EMAILADDR, INITIAL_CAPS_SENTENCE,

INITIAL_CAPS_WORD, NON_PREDICTIVE, NUMERIC, PHONENUMBER, PASSWORD,

SENSITIVE, UNEDITABLE, URL

Page 104: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 104

Exemplo: Ola2 public void commandAction(Command c, Displayable s) { if (c == exitCommand) { destroyApp(false); notifyDestroyed(); } else if (c == okCommand) { TextField t = (TextField)mainForm.get(0); mainForm.append( new TextField("", "Ola "+ t.getString(), 15, TextField.ANY)); } }}

Page 105: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 105

Exemplos

OlaMundoOla2Envio de mensagem e registro PushComunicação HTTP

Page 106: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 106

Exemplos: Envio de mensagens

O J2ME Wireless Toolkit suporta a Wireless Messaging API (WMA) com um ambiente sofisticado de simulação.

WMA 1.1 (JSR 120) permite que os MIDlets enviem e recebam mensagens SMS (Short Message Service) ou CBS (Cell Broadcast Service).

WMA 2.0 (JSR 205) também inclui suporte para mensagens MMS (Multimedia Message Service).

Page 107: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 107

Exemplos: Envio de mensagens

No entanto, para se beneficiar completamente do uso de mensagens, seria útil que a aplicação pudesse ser despertada automaticamente, a partir da chegada de uma mensagem ou de um outro evento, como um evento de timer.

Este é o conceito capturado pelo registro push, especificado pelo na MIDP 2.0 (JSR 118).

Page 108: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 108

Exemplos: Envio de mensagens

Deste modo poderemos ter aplicações que recebem e tratam os dados automaticamente, como por exemplo uma aplicação que gera um gráfico das ações da bolsa.

Ou uma aplicação que atualiza automaticamente um roteiro de visitas para trabalhadores na rua, em função da chegada de pedidos.

Page 109: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 109

Exemplos: Envio de mensagens

Page 110: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 110

Exemplos: Envio de mensagens

Page 111: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 111

Exemplos: Envio de mensagens

O registro de uma aplicação para ser acordada por tempo ou por mensagens pode ser dinâmico ou estático.Dinâmico – em tempo de execução, por meio de chamadas

a métodos:

registerConnection(String connection, String midlet, String filter)

registerAlarm(String midlet, long time)

Estático – pela definição no arquivo JADMIDlet-Push-<n>: <ConnectionURL>,<MIDletClassName>, <AllowedSender>

MIDlet-Push-2: socket://:100, corej2me.NewsLink, *

Page 112: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 112

Exemplos: Envio de mensagens

Neste exemplo faremos um MIDLet que é ativado automaticamente pela chegada de uma mensagem sms, e que exibe seu conteúdo no display. O registro será estático.

Page 113: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 113

Exemplos: Envio de mensagensimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;import javax.microedition.io.*;import javax.wireless.messaging.*;import java.io.IOException;

public class PushTeste extends MIDlet implements CommandListener{ private Display display; private Command cmExit; private Alert alertaMen; int porta = 1000; MessageConnection conexao = null; // Conexao para receber a mensagem Message mensagem;

Page 114: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 114

Exemplos: Envio de mensagens

public void pauseApp() { } public void destroyApp(boolean unconditional) { }

public PushTeste() { display = Display.getDisplay(this); alertaMen = new Alert("Mensagem recebida!"); alertaMen.setTimeout(Alert.FOREVER); cmExit = new Command("Sair", Command.EXIT, 1); alertaMen.addCommand(cmExit); alertaMen.setCommandListener(this); }

Page 115: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 115

Exemplos: Envio de mensagenspublic void startApp() { String connectList[]; connectList = PushRegistry.listConnections(true); if (connectList == null || connectList.length == 0) { // iniciado pelo usuario, sair destroyApp(false); notifyDestroyed(); } else { // iniciado por conexao try { conexao = (MessageConnection) Connector.open("sms://:" + porta); mensagem = conexao.receive(); if(mensagem != null && mensagem instanceof TextMessage) { alertaMen.setTitle("Enviado por: " + mensagem.getAddress()); alertaMen.setString(((TextMessage)mensagem).getPayloadText()); display.setCurrent(alertaMen); } }

Page 116: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 116

Exemplos: Envio de mensagens catch(IOException e) { System.out.println("Exceção!"); } } } public void commandAction(Command c, Displayable s) { if (c == cmExit) { destroyApp(false); notifyDestroyed(); } }}

Page 117: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 117

Exemplos: Envio de mensagensTeste e Instalação

Registro estático (alteração no JAD)

Page 118: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 118

Exemplos: Envio de mensagensTeste e Instalação

Inserindo permissões

Page 119: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 119

Exemplos: Envio de mensagensTeste e Instalação

Criando o pacote Executando via OTAEnviando mensagens por meio do WMA console

Page 120: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 120

Exemplos: Envio de mensagensTeste e Instalação

Criando o pacote Executando via OTAEnviando mensagens por meio

do WMA console

Page 121: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 121

Exemplos: Envio de mensagensTeste e Instalação

Criando o pacote Executando via OTAEnviando mensagens por meio do WMA console

Page 122: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 122

Exemplos: Envio de mensagensTeste e Instalação

Criando o pacote Executando via OTAEnviando mensagens

por meio do WMA console

Page 123: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 123

Exemplos: Envio de mensagensTeste e Instalação

Criando o pacote Executando via OTAEnviando mensagens

por meio do WMA console

Page 124: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 124

Exemplos

OlaMundoOla2Envio de mensagem e registro PushComunicação HTTP

Page 125: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 125

Exemplos: comunicação HTTP

Os MIDlets podem comunicar por meio do protocolo HTTPNeste exemplo o MIDlet faz uma conexão com um Servlet e recebe a contagem de quantas vezes o Servlet foi requisitado

Page 126: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 126

Exemplos: comunicação HTTPO Servlet

import javax.servlet.http.*; import javax.servlet.*; import java.io.*;

public class HitServlet extends HttpServlet { private int mCount;

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String message = "Hits: " + ++mCount;

response.setContentType("text/plain"); response.setContentLength(message.length()); response.getWriter().println(message); }}

Page 127: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 127

Exemplos: comunicação HTTPO arquivo web.xml

<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application

2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>bob</servlet-name> <servlet-class>HitServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>bob</servlet-name> <url-pattern>/hits</url-pattern> </servlet-mapping> </web-app>

Page 128: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 128

Exemplos: comunicação HTTPA instalação

Page 129: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 129

Exemplos: comunicação HTTPO MIDlet

import java.io.*;import javax.microedition.io.*;import javax.microedition.lcdui.*;import javax.microedition.midlet.*;

public class HitMIDlet extends MIDlet implements CommandListener { private Display mDisplay; private Form mMainForm; private StringItem mMessageItem; private Command mExitCommand, mConnectCommand;

public void pauseApp() {} public void destroyApp(boolean unconditional) {}

Page 130: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 130

Exemplos: comunicação HTTPO MIDlet

public void startApp() { mDisplay = Display.getDisplay(this); mDisplay.setCurrent(mMainForm); } public HitMIDlet() { mMainForm = new Form("HitMIDlet"); mMessageItem = new StringItem(null, ""); mExitCommand = new Command("Exit", Command.EXIT, 0); mConnectCommand = new Command("Connect", Command.SCREEN, 0); mMainForm.append(mMessageItem); mMainForm.addCommand(mExitCommand); mMainForm.addCommand(mConnectCommand); mMainForm.setCommandListener(this); }

Page 131: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 131

Exemplos: comunicação HTTPO MIDlet

public void commandAction(Command c, Displayable s) { if (c == mExitCommand) notifyDestroyed(); else if (c == mConnectCommand) { Form waitForm = new Form("Waiting..."); mDisplay.setCurrent(waitForm); Thread t = new Thread() { public void run() { connect(); } }; t.start(); } }

Page 132: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 132

Exemplos: comunicação HTTPO MIDlet

private void connect() { HttpConnection hc = null; InputStream in = null; String url = getAppProperty("HitMIDlet.URL");

try { hc = (HttpConnection)Connector.open(url); in = hc.openInputStream();

int contentLength = (int)hc.getLength(); byte[] raw = new byte[contentLength]; int length = in.read(raw);

in.close(); hc.close();

Page 133: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 133

Exemplos: comunicação HTTPO MIDlet

String s = new String(raw, 0, length); mMessageItem.setText(s); } catch (IOException ioe) { mMessageItem.setText(ioe.toString()); } mDisplay.setCurrent(mMainForm); }}

Page 134: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 134

Exemplos: comunicação HTTPA configuração

Page 135: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 135

Exemplo:Desenvolvimento de uma aplicação visualmente pelo NetBeans

Fazer um MIDLet onde o usuário digite uma temperatura em Fahrenheit e o programa transforme para o equivalente em celcius. C = (F-32)*5/9

Page 136: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 136

Exemplo:Desenvolvimento de uma aplicação visualmente pelo NetBeans

Novo Projeto

Page 137: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 137

Exemplo:Desenvolvimento de uma aplicação visualmente pelo NetBeans

Novo MIDLet visual

Page 138: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 138

Exemplo:Desenvolvimento de uma aplicação visualmente pelo NetBeans

Novo MIDLet visual

Page 139: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 139

Exemplo:Desenvolvimento de uma aplicação visualmente pelo NetBeans

Page 140: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 140

Exemplo:Desenvolvimento de uma aplicação visualmente pelo NetBeans

Criar dois formulários e alterar os nomes

Page 141: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 141

Exemplo:Desenvolvimento de uma aplicação visualmente pelo NetBeans

Inserir comandos para a navegação e execução

Page 142: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 142

Exemplo:Desenvolvimento de uma aplicação visualmente pelo NetBeans

Criar a navegação

Page 143: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 143

Exemplo:Desenvolvimento de uma aplicação visualmente pelo NetBeans

Desenhar as telas

Page 144: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 144

Exemplo:Desenvolvimento de uma aplicação visualmente pelo NetBeans

Desenhar as telas

Page 145: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 145

Exemplo:Desenvolvimento de uma aplicação visualmente pelo NetBeans

Desenhar as telas

Page 146: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 146

Exemplo:Desenvolvimento de uma aplicação visualmente pelo NetBeans

Inserir o código para conversão

Colocar o código aqui

Page 147: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 147

Exemplo:Desenvolvimento de uma aplicação visualmente pelo NetBeans

Inserir o código para conversão

Page 148: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 148

Exemplo:Desenvolvimento de uma aplicação visualmente pelo NetBeans

Resultado

Page 149: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 149

J2ME e Web Services

O que é um Web Services

É uma aplicação que existe em um ambiente distribuído, como a Internet. Um Web service aceita uma requisição, realiza a função requisitada e retorna uma resposta.

Tanto a requisiçao quanto a pergunta, usualmente, são registradas em um documento XML (SOAP), e enviada sobre um protocolo de rede, como o HTTP.

É uma nova forma de RPC.

Page 150: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 150

J2ME e Web Services

O que é um Web Services

A codificação XML para as mensagens obedecem a especificação SOAP.

SOAP: Simple Object Access Protocol. Um protocolo leve com o objetivo de trocar informação estruturada em um ambiente descentralizado e distribuído. Ele provê, por meio de XML, um meio de construir mensagens que podem ser trocadas sobre uma variedade de protocolos.

Page 151: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 151

J2ME e Web Services

Universal Description, Discovery, and Integration

Page 152: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 152

J2ME e Web Services

Java fornece uma api para manipular mensagens SOAP: JAX-RPC.

JAX-RPC é uma tecnologia para construir Web services e clientes que usam chamadas remotas a procedimentos e XML.

Com JAX-RPC, o desenvolvedor não precisa lidar com SOAP. JAX-RPC cria uma camada que elimina esta complexidade.

Page 153: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 153

J2ME e Web Services

No lado do servidor, o desenvolvedor especifica procedimentos remotos por meio da definição de métodos e interfaces Java.

O desenvolvedor também codifica uma ou mais classes que implementam esses métodos.

No lado cliente uma proxy é criada (um objeto local representando o serviço) o programa cliente invoca os método da proxy.

Page 154: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 154

J2ME e Web Services

WS-I Basic Profile

Provê Compatibilidade

Requer: HTTP binding for SOAP HTTP posts WSDL 1.1 RPC/literal ou document/literal

Page 155: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 155

J2ME e Web Services

WSA (Web Services API)

JSR 172: J2ME Web Services API (WSA)

Estende plataforma J2ME para suporte a WS através de duas características: Remote Service Invocation XML parsing

Page 156: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 156

J2ME e Web Services

WSA (Web Services API)

Requer Conformidade ao WS-I Basic Profile.

Suporta SOAP 1.1

Page 157: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 157

J2ME e Web Services

WSA não suporta:

SOAP Message Attachments

Message HandlersBibliotecas para service end pointsUDDI (Universal Description, Discovery and Integration)

Page 158: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 158

J2ME e Web Services

WSA

Page 159: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 159

J2ME e Web Services

WSA

Page 160: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 160

J2ME e Web Services

Exemplo:

Primeiramente desenvolveremos um WS, que será acessado posteriormente por uma aplicação J2ME.

Page 161: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 161

J2ME e Web Services

Exemplo:Passo: Criar uma aplicação Web

Page 162: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 162

J2ME e Web Services

Exemplo:Passo: Criar uma aplicação Web

Page 163: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 163

J2ME e Web Services

Exemplo:Passo: Criar um Web service

Page 164: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 164

J2ME e Web Services

Exemplo:Passo: Criar um Web service

Page 165: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 165

J2ME e Web Services

Exemplo:Passo: Adicionar um serviço

Page 166: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 166

J2ME e Web Services

Exemplo:Passo: Adicionar um serviço

Page 167: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 167

J2ME e Web Services

Exemplo:Passo: Adicionar um serviço

Page 168: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 168

J2ME e Web Services

Exemplo:Passo: testar o serviço

Page 169: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 169

J2ME e Web Services

Exemplo:Passo: Criar uma aplicação movel

Page 170: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 170

J2ME e Web Services

Exemplo:Passo: Criar uma aplicação movel

Page 171: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 171

J2ME e Web Services

Exemplo:Passo: Criar uma aplicação movel

Page 172: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 172

J2ME e Web Services

Exemplo:Passo: criar o cliente do Web Service

Page 173: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 173

Apêndice A: Tópicos adicionais

PersistênciaComunicação via BluetoothJXTA - P2PWiFi

Page 174: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 174

Apêndice B: Ambientes de desenvolvimento

Netbeans com Mobility Pack (Gratuito)Nokia Carbide (pago)

Sun Java Wireless Toolkit (Gratuito) EclipseME (Gratuito) Motorola J2ME™ SDK

(http://www.motocoder.com/motorola)

Page 175: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 175

Apêndice C: Links

Nokia - www.forum.nokia.com Sun - http://java.sun.com/javame/ http://www.jasonlam604.com/ Motorola (http://www.motocoder.com/motorola)

Page 176: Java 2 Platform, Micro Edition (J2ME) - dpi.ufv.brdpi.ufv.br/~nacif/cmovel/j2me2006a.pdf · Aplicações empresariais de alto desempenho Dispositivos com Limitações de memória

J2ME 176

FIM