desenvolvimento de sistemas móveis em java com...
Post on 21-Aug-2020
2 Views
Preview:
TRANSCRIPT
Desenvolvimento de Sistemas Móveis em Java com
J2ME/MIDPJorge H. C. Fernandes
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
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
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
Resultados
• Um amplo espectro de:– Edições– Configurações – Perfis
• Satisfação de demandas conflitantes entre:– Flexibilidade– Desempenho– Escalabilidade– Manutenabilidade
Edições Java 2 e Seus Dispositivos
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
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
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
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
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
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
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
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
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
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..*
Usando o J2ME Wireless Toolkit
J2MEWTK – Alguns Dispositivos Emulados Fonte: [J2MEWTK2001]
Arquitetura da Aplicação M-Commerce em J2EE [Gupta and Mayank, 2001]
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
Desenvolvimento de Sistemas Móveis em Java com
J2ME/MIDPJorge H. C. Fernandes
top related