slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
16 a 18 de Junho – Anhembi – SP/SP PowerPoint Presentation
Download Presentation
16 a 18 de Junho – Anhembi – SP/SP

Loading in 2 Seconds...

play fullscreen
1 / 49

16 a 18 de Junho – Anhembi – SP/SP - PowerPoint PPT Presentation


  • 59 Views
  • Uploaded on

16 a 18 de Junho – Anhembi – SP/SP. MIDP 3.0: O Futuro do Java ME. Por. Marlon Luz e Luiz Anjos. AGENDA. Introdução Interface de Usuário Categoria de MIDlets Biblioteca Compartilhada Comunicação Inter-MIDlet MIDlets Concorrentes Eventos Persistência. Introdução.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '16 a 18 de Junho – Anhembi – SP/SP' - nat


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

16 a 18 de Junho – Anhembi – SP/SP

MIDP 3.0: O Futuro do Java ME

Por

Marlon Luz e Luiz Anjos

agenda
AGENDA
  • Introdução
  • Interface de Usuário
  • Categoria de MIDlets
  • Biblioteca Compartilhada
  • Comunicação Inter-MIDlet
  • MIDlets Concorrentes
  • Eventos
  • Persistência
introdu o
Introdução
  • MIDP 1.0 Setembro – 2000
  • MIDP 2.0 Novembro – 2002
  • MIDP 3.0 ?
introdu o1
Introdução
  • Formação Inicial – Março 2005
  • Final Approval Ballot – Maio 2006
  • 61 Empresas
  • 10 Contribuidores individuais
introdu o2
Introdução
  • Requisitos
agenda1
AGENDA
  • Introdução
  • Interface de Usuário
  • Categoria de MIDlets
  • Biblioteca Compartilhada
  • Comunicação Inter-MIDlet
  • MIDlets Concorrentes
  • Eventos
  • Persistência
interface de usu rio
Interface de Usuário
  • Command
  • Display
  • File Selector
  • Menu
  • Notificações
  • Tabbed Pane
interface de usu rio1
Interface de Usuário
  • Command
    • Localização exata
    • Habilitado/Desabilitado
    • Suporte à imagens
    • Mutável
interface de usu rio2
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)
interface de usu rio3
Interface de Usuário
  • Display
    • Estado sobre o hardware (ENABLED, DISABLED, ABSENT)
    • Estado sobre o display (foreground, background, visible)
    • Suporte a orientação paisagem
interface de usu rio4
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)
interface de usu rio6
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
interface de usu rio7
Interface de Usuário
  • Menu

Menu 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);

interface de usu rio8
Interface de Usuário
  • Notificações
    • NotificationManager / Notification
    • MIDlet não controla UI
    • Dependente da implementação
    • post() para registrar notificações
interface de usu rio9
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();

interface de usu rio10
Interface de Usuário
  • Tabbed Pane
    • Objetos Screen separados por abas
    • List e Form
    • Objetos Command (Tab e seu conteúdo)
agenda2
AGENDA
  • Introdução
  • Interface de Usuário
  • Categoria de MIDlets
  • Biblioteca Compartilhada
  • Comunicação Inter-MIDlet
  • MIDlets Concorrentes
  • Eventos
  • Persistência
categoria de midlets
Categoria de MIDlets
  • Screen Saver
  • Auto Start
  • Idle Screen
categoria de midlets1
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
categoria de midlets2
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
categoria de midlets3
Categoria de MIDlets
  • Idle Screen
    • Adiciona conteúdo para a tela de “Idle”
categoria de midlets4
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)
agenda3
AGENDA
  • Introdução
  • Interface de Usuário
  • Categoria de MIDlets
  • Biblioteca Compartilhada
  • Comunicação Inter-MIDlet
  • MIDlets Concorrentes
  • Eventos
  • Persistência
biblioteca compartilhada1
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>
biblioteca compartilhada2
Biblioteca Compartilhada
  • LIBlet
    • Dependência circular
biblioteca compartilhada3

IMS MIDlet

Poc LIBlet

JSR 281

Biblioteca Compartilhada
  • LIBlet
biblioteca compartilhada4
Biblioteca Compartilhada
  • MIDlet

IMSMIDlet JAD

MIDlet-1: IMSMIDlet, icon.png, IMSMIDlet

MIDlet-Name: IP Multimedia App

MIDlet-Version: 1.0

MIDlet-Vendor: Multi Sys

MIDlet-Jar-Size: 12123

Dependency-1: microedition.ims; JCP; 1.0+; standard

Dependency-2: PocLib; Poc Sys, Inc.; 1.1.2; liblet

LIBlet-Dependency-JAD-URL-2: http://www.pocsys.com/liblets/poclib.jad

LIBlet-Dependency-Jar-SHA1-2: 501A202E919B9C98343FAD6F46842412F7A0A783

biblioteca compartilhada5
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

agenda4
AGENDA
  • Introdução
  • Interface de Usuário
  • Categoria de MIDlets
  • Biblioteca Compartilhada
  • Comunicação Inter-MIDlet
  • MIDlets Concorrentes
  • Eventos
  • Persistência
comunica o inter midlet
Comunicação Inter-MIDlet
  • Protocolo IMC
    • Conexão assíncrona
    • Cliente e Servidor
    • MIDlet UID (nome + vendedor + versão)
    • IMCConnection / IMCServerConnection
    • Permite Push Registry
comunica o inter midlet1
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();

}

comunica o inter midlet2
Comunicação Inter-MIDlet

IMCServerConnection 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 inpustream

int requestType = requestData.readInt();

...

// trata a requisição

...

// escreve a resposta para output stream

responseData.writeUTF(“Olá, eu sou barServer");

responseData.close();

} finally {

conn.close();

}

}

agenda5
AGENDA
  • Introdução
  • Interface de Usuário
  • Categoria de MIDlets
  • Biblioteca Compartilhada
  • Comunicação Inter-MIDlet
  • MIDlets Concorrentes
  • Eventos
  • Persistência
midlets concorrentes
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
agenda6
AGENDA
  • Introdução
  • Interface de Usuário
  • Categoria de MIDlets
  • Biblioteca Compartilhada
  • Comunicação Inter-MIDlet
  • MIDlets Concorrentes
  • Eventos
  • Persistência
eventos
Eventos
  • Características
    • Mudanças no estado do sistema
    • Comunicação Aplicação x Aplicação
    • EventManager, EventData, EventPermission, EventDataListener
eventos1
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
eventos2
Eventos
  • Consultando um evento de sistema

EventManager ssm = EventManager.getInstance(this);

EventData battery = null;

try {

battery = ssm.getCurrent(BATTERY_LEVEL);

} catch (SecurityException e) {

..

}

int batteryLevel = battery.getInt();

eventos3
Eventos
  • Adicionando um EventListener

EventData battery;

boolean authmode = false;

EventManager ssm = EventManager.getInstance(this);

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

eventos4
Eventos
  • Manipulando um evento

handleEvent(EventData event) {

String eventName = event.getName();

int batteryLevel;

if (eventName.equals(BATTERY_LEVEL)) {

batteryLevel = event.getInt();

}

}

eventos5
Eventos
  • Registro estático (App)

MIDlet-Name: PowerManagement

MIDlet-Version: 1.0.1

MIDlet-Vendor: FictionalCo

MIDlet-1: PowerManager, /pwrmgt.png, com.fictionalco.PowerMgr

MIDlet-Event-Launch-1: com.fictionalco.PowerMgr;authmode=false;

BATTERY_LEVEL=5,100

MicroEdition-Profile: MIDP-3.0

MicroEdition-Configuration: CLDC-1.1

MIDlet-Jar-URL: http://www.fictionalco.com/SysUtils.jar

eventos6
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) {

..

}

agenda7
AGENDA
  • Introdução
  • Interface de Usuário
  • Categoria de MIDlets
  • Biblioteca Compartilhada
  • Comunicação Inter-MIDlet
  • MIDlets Concorrentes
  • Eventos
  • Persistência
persist ncia
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
agenda8
AGENDA
  • Introdução
  • Interface de Usuário
  • Categoria de MIDlets
  • Biblioteca Compartilhada
  • Comunicação Inter-MIDlet
  • MIDlets Concorrentes
  • Eventos
  • Persistência
outras mudan as
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
slide49
MIDP 3.0:

O futuro do Java ME

  • Luiz Anjos – anjos.luiz@gmail.com
  • Marlon Luz – marlon.luz@lightmobile.com.br