desenvolvimento de sistemas móveis em java com...

21
Desenvolvimento de Sistemas Móveis em Java com J2ME/MIDP Jorge H. C. Fernandes

Upload: others

Post on 21-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

Desenvolvimento de Sistemas Móveis em Java com

J2ME/MIDPJorge H. C. Fernandes

Page 2: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

Desenvolvimento J2ME/MIDPAgenda

• Plataforma e Edições Java 2• J2ME - Java 2 Micro Edition• MIDP - Mobile Information Device Profile• Biblioteca J2ME/MIDP

– Interface com o Usuário– Conectividade de Rede– Persistência de Registros

• Exemplos• Próximos passos

Page 3: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

Plataforma Java: O Desafio

Criar uma única plataforma para facilitar o desenvolvimento e

evolução de software e sistemas de computador, de micro, pequena,

média e larga escala

Page 4: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

Solução da Plataforma Java

• Máquina virtual com possíveis implementações distintas

• Sintaxe e semântica uniformes e controladas

• Formato binário único de distribuição de código

• Bibliotecas (APIs) padronizadas

Page 5: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

Resultados

• Um amplo espectro de:– Edições– Configurações – Perfis

• Satisfação de demandas conflitantes entre:– Flexibilidade– Desempenho– Escalabilidade– Manutenabilidade

Page 6: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

Edições Java 2 e Seus Dispositivos

Page 7: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

J2ME: Organização em Configurações e Perfis

...Profile

Mobile Information DeviceProfile (MIDP)

...Profile

...Profile

...Profile

...Profile

Connected DeviceConfiguration (CDC)

Connected, Limited DeviceConfiguration (CLDC)

JVM (CVM) KVM (Kilo Virtual Machine)

Foundation Profile

...Profile

...Profile

Page 8: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

MIDs e MIDLets: Mobile Information Device

• Características de um Dispositivo MIDP– Mobilidade

• Operado com bateria

– Memória (mínima)• 128KB de memória não volátil para implementação MIDP• 8KB de memória não volátil para persistir dados das aplicações• 32KB de runtime e heap

– Interface com o usuário (mínima)• Display com 1 bit de cor e resolução mínima de 96 x 54 pixels• Entrada de dados via teclado ou tela sensível ao toque

– Conexões de rede bidirecionais, com banda limitada

• MIDLet = Aplicações para MIDP– Downloadable– Permite criar serviços para consumidores de telefones celulares

• jogos e aplicações de comércio

Page 9: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

Evolução das Tecnologias de Sistemas Interativos na Web

HTML Browser

HTML + FORMS

HTML Browser + Java VM

Applet

WAP Cell Phone

WML

MIDP Cell Phone

MIDlet

Wireless

Desktop

Page 10: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

Applet 1

Applet 2

Applet 3

Interface Browser

WWW(HTTP(s))

Web BrowserWeb Server

Funcionamento dos Applets

Applet 1

Applet 2

Applet 3

Classe

Objeto

A p p l e t 1

A p p l e t 2

A p p l e t 3

Página HTML

SandboxClasse Applet

Objeto Applet

Page 11: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

Objeto MIDlet

WWW(HTTP(s))

Funcionamento dos MIDlets

SUITE 1

SUITE 2

SUITE 3

Web Server

SUITE 2

SUITE 1

SUITE 3

MIDlet B

MIDlet A

SUITE 2

SUITE 1

SUITE 3

MIDlet B

MIDlet A

MIDlet C

SUIT

E 3

SUIT

E 1

ClasseObjeto

A p p l e t 1

A p p l e t 2

A p p l e t 3Página HTML

Descritor de Aplicação (JAD)

Arquivos (Imagens, etc)

SandboxRepositórioWeb

RecordStore

Classe MIDlet

Page 12: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

HelloWorldMIDlet: Implementaçãoimport javax.microedition.midlet.MIDlet;import javax.microedition.lcdui.*;public class HelloWorldMIDlet extends MIDlet implements CommandListener {

private Command exitCommand;private TextBox textBox;public HelloWorldMIDlet() {

exitCommand = new Command("Exit", Command.EXIT, 1/*Priority*/);textBox = new TextBox("OláMundo MIDlet” /* Nome do componente */,

"Olá, Mundo!“ /* conteúdo */, 15 /*tamanho máximo */, 0 /*máscara*/);textBox.addCommand(exitCommand);textBox.setCommandListener(this);

}protected void startApp() {

Display.getDisplay(this).setCurrent(textBox);}protected void pauseApp() {}protected void destroyApp(boolean unconditional) {}public void commandAction(Command c, Displayable d) {

if (c == exitCommand) {destroyApp(false);notifyDestroyed();

}}

}

// Adapta para tratar comandos// Para associar a softkey// Para entrada de dados

// Criação e // interligação

// entre objetos

// Exec.quando MIDLet é ativado

// Exec. quando MIDlet é suspenso// Exec. quando MIDLet é destruído

// Exec. quando comando é acionado

Page 13: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

HelloWorldMIDlet em Ação: Diagrama de Objetos

:TextBoxtextBox

<<displayable>>

1.1 – Criação de um textBox (Displayable) para preencher o display

:HelloWorldMIDlet

1 – new HelloWorldMIDlet() - Criação do MIDlet

:CommandexitCommand

1.2 – Criação de comandos para inserir no Displayable

:DisplaytheDisplay

2 – startApp() - Associação do Displayable ao Display

current

3 – commandAction() – Ativação do comando “Exit”3.1 – destroyApp() – Desativação do MIDlet

current

Page 14: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

Packages MIDP 1.0J2SE

CDC

CLDC

javax.microedition.lcdui javax.microedition.midlet javax.microedition.rms

java.util

MIDP1.0javax.microedition.io

java.lang java.io

Page 15: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

MIDP 1.0 - Package javax.microedition.lcdui

javax.microedition.lcdui

Display Displayable Command

Screen Canvas

TextBox

<<Interface>>CommandListener

+commandAction(c:Command, d:Displayable)

Form List Alert

Item

Gauge ChoiceGroupTextField DateField ImageItemStringItem

Ticker

Image FontGraphics

current 0..1

listener

0..*items

ticker

image

graphics

font

commands_0..*0..1current commands_0..*

0..1

items0..*

ticker

image

graphics

font

Page 16: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

MIDP 1.0 – Package javax.microedition.rmsjavax.microedition.rms

RecordStore

+listRecordStores() : String[]+openRecordStore(name:String, createIfNecessary:boolean) : RecordStore+deleteRecordStore(name:String)+closeRecordStore()+getName() : String+getSize() : int+getSizeAvailable() : int+getLastModified() : long+getNextRecordId() : int+getNumRecords() : int+getVersion() : int+enumerateRecords(filter:RecordFilter, comparator:<<interface>>RecordComparator, keepUpdated:boolean)+addRecord(data:byte[], offset:int, numBytes:int) : int+getRecord(recordId:int) : byte[]+getRecord(recordId:int, buffer:byte[], offset:int) : int+deleteRecord(recordId:int)+getRecordSize(recordId:int) : int+setRecord(recordId:int, newData:byte[], offset:int, numBytes:int)+addRecordListener(listener:RecordListener)+removeRecordListener(listener:RecordListener)

<<interface>>RecordComparator

+EQUIVALENT : int+FOLLOWS : int+PRECEDES : int

+compare(rec1:byte[], rec2:byte[]) : int

<<Interface>>RecordFilter

+matches(candidate:byte[]) : boolean

<<Interface>>RecordEnumeration

+numRecords() : int+hasNextElement() : boolean+nextRecord() : byte[]+hasPreviousElement() : boolean+previousRecord() : byte[]+nextRecordId() : int+previousRecordId() : int+keepUpdated()+isKeptUpdated() : boolean+rebuild()+reset()+destroy()

<<Interface>>RecordListener

+recordAdded(store:RecordStore, recordId:int)+recordChanged(store:RecordStore, recordId:int)+recordDeleted(store:RecordStore, recordId:int)

listeners0..*

listeners0..*

Page 17: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

Usando o J2ME Wireless Toolkit

Page 18: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

J2MEWTK – Alguns Dispositivos Emulados Fonte: [J2MEWTK2001]

Page 19: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

Arquitetura da Aplicação M-Commerce em J2EE [Gupta and Mayank, 2001]

Page 20: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

Próximos passos

• Instalar o WTK 1.0.4• Instalar o J2SDK• Cadastrar em wireless.java.sun.com• Participar de programa de

desenvolvedores J2ME– www.motorola.com

Page 21: Desenvolvimento de Sistemas Móveis em Java com J2MEjhcf/MyBooks/itjava/slides/DesenvolvimentodeSist… · J2EE [Gupta and Mayank, 2001] Próximos passos • Instalar o WTK 1.0.4

Desenvolvimento de Sistemas Móveis em Java com

J2ME/MIDPJorge H. C. Fernandes