1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

49
1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por

Transcript of 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

Page 1: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

1

16 a 18 de Junho – Anhembi – SP/SP

MIDP 3.0: O Futuro do Java ME

Marlon Luz e Luiz AnjosPor

Page 2: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

2

AGENDA• Introdução

• Interface de Usuário

• Categoria de MIDlets

• Biblioteca Compartilhada

• Comunicação Inter-MIDlet

• MIDlets Concorrentes

• Eventos

• Persistência

Page 3: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

3

Introdução• MIDP 1.0 Setembro – 2000

• MIDP 2.0 Novembro – 2002

• MIDP 3.0 ?

Page 4: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

4

Introdução

• Formação Inicial – Março 2005

• Final Approval Ballot – Maio 2006

• 61 Empresas

• 10 Contribuidores individuais

Page 5: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

5

Introdução

• RequisitosMIDP 1.0

2000MIDP 2.0

2002MIDP 2.1

2007MIDP 3.0

2008

Memória Volátil 32 Kb 128 Kb 128 Kb 1024 Kb

Tamanho de Tela 96x54 96x54 96x54 176x220

Configurações CLDC 1.0CLDC 1.0CLDC 1.1CDC 1.0

CLDC 1.1CDC 1.0

CLDC 1.1CLDC 1.1.1

CDC 1.1

Page 6: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

6

AGENDA

• Introdução

• Interface de Usuário

• Categoria de MIDlets

• Biblioteca Compartilhada

• Comunicação Inter-MIDlet

• MIDlets Concorrentes

• Eventos

• Persistência

Page 7: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

7

Interface de Usuário

• Command

• Display

• File Selector

• Menu

• Notificações

• Tabbed Pane

Page 8: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

Interface de Usuário

• Command– Localização exata– Habilitado/Desabilitado– Suporte à imagens– Mutável

Page 9: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

9

Interface de Usuário• Display

– Display secundário

– Display.getDisplays(…)

– Características para um display secundário (SUPPORTS_COMMANDS, INPUT_EVENTS, FORMS, TICKER, TITLE, ALERTS, LISTS, TEXTBOXES, FILESELECTORS, TABBEDPANES)

Page 10: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

10

Interface de Usuário

• Display– Estado sobre o hardware (ENABLED,

DISABLED, ABSENT)– Estado sobre o display (foreground,

background, visible)– Suporte a orientação paisagem

Page 11: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

11

Interface de Usuário

• File Selector– Objetos Command default (OK, CANCEL)– Não permite novos Commands– Modos LOAD, SAVE e DIRECTORY– getDirectory(), getFile(),

setFilterExtensions(String extensions)

Page 12: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

12

Interface de Usuário

• Menu

Page 13: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

13

Interface de Usuário

• Menu– Container visual para objetos Command– Usado com a localização exata de um

Command– Choice.IMPLICIT– Pode conter sub-menus– CommandListener do objeto Displayable

Page 14: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

14

Interface de Usuário• MenuMenu m, sm1, sm2;

Command cmd1, cmd2, cmd3;

m = new Menu(“Top Menu", "", menupict.gif);

sm1 = new Menu("Submenu 1", “", menupict.gif);

sm2 = new Menu("Submenu 2", “", menupict.gif);

cmd1 = new Command(“First",”", Command.ITEM, 1);

cmd2 = new Command(“Second",””, Command.ITEM, 1);

cmd3 = new Command("Third",”", Command.ITEM, 1);

m.append(cmd1);

m.append(sm1);

sm1.append(cmd2);

sm1.append(sm2);

sm2.append(cmd3);

Page 15: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

15

Interface de Usuário

• Notificações– NotificationManager / Notification– MIDlet não controla UI– Dependente da implementação– post() para registrar notificações

Page 16: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

16

Interface de Usuário

• Notificações

Notification n=NotificationManager.createNotification(nl);

n.setLabel("Mensagem não lida (1)");

n.setIcon("resources/mail1.jpg");

n.post();

Page 17: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

17

Interface de Usuário

• Tabbed Pane– Objetos Screen separados por abas– List e Form– Objetos Command (Tab e seu conteúdo)

Page 18: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

18

AGENDA

• Introdução

• Interface de Usuário

• Categoria de MIDlets

• Biblioteca Compartilhada

• Comunicação Inter-MIDlet

• MIDlets Concorrentes

• Eventos

• Persistência

Page 19: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

19

Categoria de MIDlets

• Screen Saver

• Auto Start

• Idle Screen

Page 20: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

20

Categoria de MIDlets

• Screen Saver– Aplicação executada automaticamente– Device no estado de “Idle”– Identificação baseado em atributo

• MIDlet-Category-n: ScreenSaver– Ativação e desativação baseados em eventos– Usuário ciente do processo de atualização

Page 21: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

21

Categoria de MIDlets

• Auto Start– “Power up” do device– Identificação baseada em atributo / permissão

• MIDlet-Category-n: autostart– Tentativa para reiniciar o MIDlet (AMS)– javax.microedition.midlet.AutoStartPermission

Page 22: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

22

Categoria de MIDlets• Idle Screen

– Adiciona conteúdo para a tela de “Idle”

Page 23: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

23

Categoria de MIDlets• Idle Screen

– Identificação baseada em atributo

• MIDlet-Category-n: IdleScreen

– IdleItem como elemento de UI

– IdleItem, subclasse de CustomItem

– Display.setIdleItem(idleItem)

Page 24: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

24

AGENDA

• Introdução

• Interface de Usuário

• Categoria de MIDlets

• Biblioteca Compartilhada

• Comunicação Inter-MIDlet

• MIDlets Concorrentes

• Eventos

• Persistência

Page 25: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

25

Biblioteca Compartilhada

• LIBlet

Page 26: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

26

Biblioteca Compartilhada

• LIBlet– Componente de Sofware– Não possui um contexto próprio– Atributos definidos nos arquivos JAD e JAR– Empacotado em um arquivo JAR– Dependências via atributo Dependency-<n>

Page 27: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

27

Biblioteca Compartilhada

• LIBlet– Dependência circular

Page 28: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

28

Biblioteca Compartilhada

• LIBlet

IMS MIDlet

Poc LIBlet JSR 281

Page 29: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

29

Biblioteca Compartilhada• MIDlet

IMSMIDlet JADMIDlet-1: IMSMIDlet, icon.png, IMSMIDletMIDlet-Name: IP Multimedia AppMIDlet-Version: 1.0MIDlet-Vendor: Multi SysMIDlet-Jar-Size: 12123Dependency-1: microedition.ims; JCP; 1.0+; standardDependency-2: PocLib; Poc Sys, Inc.; 1.1.2; libletLIBlet-Dependency-JAD-URL-2:

http://www.pocsys.com/liblets/poclib.jadLIBlet-Dependency-Jar-SHA1-2:

501A202E919B9C98343FAD6F46842412F7A0A783

Page 30: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

30

Biblioteca Compartilhada

• LIBlet

PocLib JAD

LIBlet-Name: PocLib

LIBlet-Version: 1.1.2

LIBlet-Vendor: Poc Sys, Inc.

LIBlet-Jar-Size: 12123

LIBlet-Jar-URL: http://www.pocsys.com/liblets/poclib.jar

Page 31: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

31

AGENDA

• Introdução

• Interface de Usuário

• Categoria de MIDlets

• Biblioteca Compartilhada

• Comunicação Inter-MIDlet

• MIDlets Concorrentes

• Eventos

• Persistência

Page 32: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

32

Comunicação Inter-MIDlet

• Protocolo IMC– Conexão assíncrona– Cliente e Servidor– MIDlet UID (nome + vendedor + versão)– IMCConnection / IMCServerConnection– Permite Push Registry

Page 33: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

33

Comunicação Inter-MIDlet

IMCConnection conn = (IMCConnection)Connector.open("imc:// *:com.foo.services.barServer:1.0;authmode=false");

try {DataOutputStream request = conn.openDataOutputStream();// escreve dados...request.flush();DataInputStream response = conn.openDataInputStream();// recupera dados...

} finally {conn.close();

}

Page 34: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

34

Comunicação Inter-MIDletIMCServerConnection serverConn = (IMCServerConnection)Connector.open(

"imc://:com.foo.barServer:1.0;authmode=false;);while(true) {

IMCConnection conn = (IMCConnection) serverConn.acceptAndOpen();try {

String requestedVersion = conn.getRequestedServerVersion();DataInputStream requestData = conn.openDataInputStream();DataOutputStream responseData = conn.openDataOutputStream();// faz a leitura de dados a partir da inpustreamint requestType = requestData.readInt();...// trata a requisição...// escreve a resposta para output streamresponseData.writeUTF(“Olá, eu sou barServer");responseData.close();

} finally {conn.close();

}}

Page 35: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

35

AGENDA

• Introdução

• Interface de Usuário

• Categoria de MIDlets

• Biblioteca Compartilhada

• Comunicação Inter-MIDlet

• MIDlets Concorrentes

• Eventos

• Persistência

Page 36: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

36

MIDlets Concorrentes

• Características– Implementação DEVE suportar que aplicações

executem simultaneamente– Dados estáticos não são compartilhados– Manipulação de erros– 1 MIDlet, 1 instância

Page 37: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

37

AGENDA

• Introdução

• Interface de Usuário

• Categoria de MIDlets

• Biblioteca Compartilhada

• Comunicação Inter-MIDlet

• MIDlets Concorrentes

• Eventos

• Persistência

Page 38: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

38

Eventos

• Características– Mudanças no estado do sistema– Comunicação Aplicação x Aplicação– EventManager, EventData, EventPermission,

EventDataListener

Page 39: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

39

Eventos• Características

– AUDIO_OUTPUT, BATTERY_CHARGING, BATTERY_LEVEL, BODY_OPEN, IDLE_SCREEN_MODE, SCREENSAVER_MODE, SYSTEM_STATE,VOICE_CALL

– Aplicações executadas automaticamente (1 instância)

– Registro estático / dinâmico para aplicações

Page 40: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

40

Eventos

• Consultando um evento de sistemaEventManager ssm = EventManager.getInstance(this);

EventData battery = null;

try {

battery = ssm.getCurrent(BATTERY_LEVEL);

} catch (SecurityException e) {

..

}

int batteryLevel = battery.getInt();

Page 41: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

41

Eventos

• Adicionando um EventListener

EventData battery;

boolean authmode = false;

EventManager ssm = EventManager.getInstance(this);

ssm.addEventListener(BATTERY_LEVEL, this, authmode, 10, 20);

Page 42: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

42

Eventos• Manipulando um evento

handleEvent(EventData event) {String eventName = event.getName();int batteryLevel;

if (eventName.equals(BATTERY_LEVEL)) {batteryLevel = event.getInt();

}}

Page 43: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

43

Eventos• Registro estático (App)

MIDlet-Name: PowerManagementMIDlet-Version: 1.0.1MIDlet-Vendor: FictionalCoMIDlet-1: PowerManager, /pwrmgt.png, com.fictionalco.PowerMgrMIDlet-Event-Launch-1: com.fictionalco.PowerMgr;authmode=false;

BATTERY_LEVEL=5,100MicroEdition-Profile: MIDP-3.0MicroEdition-Configuration: CLDC-1.1MIDlet-Jar-URL: http://www.fictionalco.com/SysUtils.jar

Page 44: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

44

Eventos• Registro dinâmico (App)

EventData battery;boolean authmode = false;EventManager ssm = EventManager.getInstance(this);try {

ssm.registerApplication(BATTERY_LEVEL, "com.fictionalco.PowerMgr",

authmode, 0, 10);} catch (SecurityException e) {..}

Page 45: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

45

AGENDA

• Introdução

• Interface de Usuário

• Categoria de MIDlets

• Biblioteca Compartilhada

• Comunicação Inter-MIDlet

• MIDlets Concorrentes

• Eventos

• Persistência

Page 46: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

46

Persistência• RMS

– Segurança• Algorítimo: AES 128-bit

– RMS Provisioning• Arquivos standalone / JAR da aplicação (MIDlet - LIBlet)• Persistent-Data-URL-1: data.rms overwrite encryptLocally• Persistent-Data-URL-2:

http://vendor.com/gamedata/coolgame.rms– Importação e Exportação– Tags

Page 47: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

47

AGENDA

• Introdução

• Interface de Usuário

• Categoria de MIDlets

• Biblioteca Compartilhada

• Comunicação Inter-MIDlet

• MIDlets Concorrentes

• Eventos

• Persistência

Page 48: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

48

Outras Mudanças• Interface de usuário

– Imagens Animadas– Splash Screen– Table Layout– TextInput– Font (TrueType)

• Segurança– Autorização de acesso em nível de aplicação

• Network– IPV6– Binding para adaptador de rede em nível de app– PUT e DELETE

Page 49: 1 16 a 18 de Junho – Anhembi – SP/SP MIDP 3.0: O Futuro do Java ME Marlon Luz e Luiz Anjos Por.

49

MIDP 3.0:

O futuro do Java ME

Luiz Anjos – [email protected]

Marlon Luz – [email protected]