Programa Expresso de Capacitação Módulo J2ME Aula 7 – MIDP 2.0.

Slides:



Advertisements
Apresentações semelhantes
Sistemas distribuídos
Advertisements

Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Comunicação entre processos distribuídos
Segurança em Redes - Código Seguro
Configuração de um servidor FTP
Persistência de objetos em arquivo texto usando Java
CPU – based DoS Attacks Against SIP Servers
Arquiteturas de jogos e Animação 2D baseada em Sprites
Criptografia e segurança de redes Chapter 14
Programação Concorrente
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
Sistemas Operacionais SISTEMA DE ENTRADA E SAÍDA
Desenvolvimento para Dispositivos Móveis
Sistemas Distribuídos
Camada de Transporte: Portas, Sockets, Aplicações em Rede
Marcelo Korjenioski. Venda crescente de dispositivos com sistema operacional Android em 2011 favorecem o desenvolvimento para a plataforma. Jogos casuais.
Concorrência em Java Threads em Java.
Concorrência em Java Threads em Java.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – CIn/UFPE Davi Duarte Denyson José Eduardo Souza Ivan França Rafael Lima.
G ENERIC C ONNECTION F RAMEWORK Prof. André Assad
Capítulo 2 Java Servlets.
Interface Básica para um Servidor Universal
Web Services Uninorte Semana de Tecnologia da Informação
J2ME Mini Curso.
G AME API. Conjunto com 5 classes que simplificam o desenvolvimento de jogos 2D Provêem 2 importantes funcionalidades GameCanvas Estruturação do jogo.
Chamada Remota de Procedimentos
Programa Expresso de Capacitação Módulo J2ME Aula 5 – Record Management System.
Aula 1 Introdução à Java ME
Programa Expresso de Capacitação Módulo J2ME Aula 4 – Interface de alto e baixo nível.
Jornada de Cursos – J2me Conhecendo o ambiente. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.
Jornada de Cursos – J2ME Aula 2 – Configuração.
Programa Expresso de Capacitação Módulo J2ME Aula 1 – Overview e Conceitos básicos.
Conceitos de J2EE para a WEB
1 Mobilidade de Código com μcode Projeto Giga Alexandre Lages
Linhas de Pesquisa FRAMESEC
Pilhas Profa. Nádia Félix.
Programação Orientada à Objetos
Comunicação entre Processos - Sockets. Conceitos Básicos Sockets são uma forma de IPC ( InterProcess Communication ) fornecida pela 4.3 BSD que fornecem.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Implementando comunicação em JAVA via Sockets Alcides Calsavara - Leonardo R. Nunes -
Tecgraf PUC-Rio Setembro de 2013 Introdução ao Openbus.
RMI - JAVA.
MINI CURSO J2ME Vinícius Maran SEMINÁRIO REGIONAL DE INFORMÁTICA 2008.
IIS Web Server.
Tópicos Avançados em Redes de Computadores Prof. Fabiano Sabha.
MINI CURSO J2ME Vinícius Maran SEMINÁRIO REGIONAL DE INFORMÁTICA 2008.
Utilizando UML e Padrões Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Março de 2010.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public ITE PC v4.0 Chapter 1 1 RIP versão 1 Protocolos e Conceitos de Roteamento – Capítulo 5.
Jornada de Cursos - J2ME Aula 6 – MIDP 2.0. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan.
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Java Conexão com Baco de dados Saulo Bazzi Oberderfer Fonte:
Socket em Java.
Introdução à Criptografia Moderna Seminário do Projeto 2 8/6/20151André Guedes - agl / Rodrigo Diêgo - rdma.
16 de Setembro, Projeto Conceitual de Jogos Saulo Souto Geber Ramalho Saulo Souto
1/18 Java ME, MIDP 2.0 e SATSA: Segurança para MIDs Alexandre Ilha Márcia Cristina Cera Trabalho Leve 1 - Abril/2006.
Jornada de Cursos - J2ME Aula 7 – MIDlets conectados.
18 de setembro, Projeto Conceitual de Jogos Saulo Souto Geber Ramalho Saulo Souto
Redes de computadores: Aplicações Prof. Dr. Amine BERQIA
GOTO. Project treinamento expresso j2me Luiz Carlos d´Oleron lcadb at cin.ufpe.br.
Seminários.reply Introdução a JavaME Guilherme Carvalho.
Marlon Luz JavaME no mundo real: novas ferramentas Java para Série 40 da Nokia 1.
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Introdução ao OpenBus.
Segurança em Comércio Eletrônico Comércio tradicional realizado de maneira centralizada cercado de restrições legais Comércio eletrônico realização de.
SOCKET - É um canal de comunicação entre processos que estabelece uma conexão entre eles na forma de cliente-servidor. Por meio de sockets, os computadores.
Segurança de Rede Prof. Sales Filho Infra-estrutura de chaves públicas.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
ProgramaçãoConcorrente Glêdson Elias
Programa Expresso de Capacitação Módulo J2ME
Transcrição da apresentação:

Programa Expresso de Capacitação Módulo J2ME Aula 7 – MIDP 2.0

Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan Tokuda, Mestre Zen

Agenda MIDP 2.0 Technical Overview MIDP Desenvolvimento e Deployment API´s Wireless Messaging API Práticas de programação

Technical Overview

APIs de MIDP 1.0 Modelo de aplicação: Javax.microedition.midlet Persistência Javax.microedition.rms Rede Javax.microedition.io.HTTPConnection Interface gráfica Javax.microedition.lcdui IO e pacotes util de CLDC Java.lang Java.io Java.util

MIDP 2.0 Objetivos de MIDP 2.0 Compatibilidade com MIDP 1.0 Foco contínuo em telefones com poucos recursos Usar informação dos deployments MIDP 1.0 para criar um modelo mais aprimorado Foco em aplicações core necessárias a todos os dispositivos e aplicações

MIDP Novas características Novos protocolos de rede HTTPS, Comm, Datagram, SSL, Socket, ServerSocket Nota: Somente HTTP e HTTPS são requeridos pela especificação Funcionalidade Push Possibilidade de iniciar um MIDlet em resposta a uma mensagem OTA

Requisitos mínimos Display: Tamanho de tela: 96x54 Profundidade de display: 1 bit Pixel aspect ratio: 1:1 Input One or two handed keyboard, touch screen Memória: 256 kb de memória não-volátil 8 kb para dados persistentes 128 kb de memória volátil

Requisitos (cont.) Rede: Two-way Wireless Possibilidade de intermitência, com uma banda limitada Som Pode tocar tons, via HW ou SW

Desenvolvimento e Deployment

Verificação de classfiles em CLDC

Passos 1.Escreva sua aplicação 2.Compile-a 3.Use o preverifier 4.Empacote-a 1.Assine o JAR (só em MIDP 2.0) 5.Crie o descritor 6.Publique a suite MIDlet 7.Instale via OTA

Prática recomendada: OTA MIDP 1.0 deixou não especificado OTA MIDP expert group lançou OTA para clarificar detalhes Requisito core em MIDP 2.0

OTA

Versões Agora que temos MIDP 1.0 e 2.0, é preciso saber a versão que estamos trabalhando System.getProperty(“MicroEdition-Profile”) Por default, o AMS não instalará MIDP 2.0 em aparelhos MIDP 1.0

MIDP 2.0 APIs

Segurança e segurança em rede Push API Media APIs APIs de interface gráfica Game API

Segurança

Riscos de segurança inclusos Aplicações usando o dinheiro do usuário sem permissão Mensagens SMS podem custar 10 centavas por mensagem, e com 7 mensagens: 1k de dados Informações privadas sendo expostas Contatos DOS potenciais, códigos maliciosos, etc

Modelo de segurança do MIDP 2.0 MIDlet suites requerem segurança Cada MIDlet suite está atrelada a um único domínio de proteção contendo as permissões Restrições da API a funções fundamentais Extensível a APIs desenvolvidas independentemente (WMA, MMAPI, etc)

Tipos de permissão Permissões Allowed Sem prompt para verificar se é válido Permissões de usuário Garantidas com aprovação do usuário Usuário escolhe a frequência de prompt: Blanket – válido até o usuário configurar o contrário Session – válido para uma invocação Oneshot – válido para uma chamada da API Um datagrama sendo enviado

Dois tipos de domínio de proteção Untrusted domains Sandbox, como MIDP 1.0 Tipicamente, dispositivo pergunta ao usuário por acesso Trusted domains Dispositivo tem mecanismo para validar a suite Pode permitir acesso sem prompt Geralmente implementado usando criptografia de chave pública para assinar o JAR

Modelo de segurança

Modelo de segurança – Cont.

Trusted signed applications Descritor de aplicação inclui: Assinatura do JAR Certificados necessários para verificar assinatura Permissões requeridas pela aplicação Dispositivo autentica assinatura Usando chave pública raiz do dispositivos Cercado pelo domínio de proteção

Permissões no WTK Atributos MIDlet-Permissions e MIDlet-Permissions-opt do painel Projetc | Settings

Assinando MIDlets Assinar com keytool, JADtool e MEKeytool pode ser complexo WTK oferece assinar MIDlets via GUI Cria um par de chaves e um alias Crie o certificado Adicione um certificado de par de chaves ao JAD Assine o JAR e adicione a assinatura ao JAD

Segurança em rede HTTP e HTTPS necessários para MIDP 2.0 Datagrama – pouco overhead, mas inseguro Socket – streams confiáveis Socket seguro – stream confiável sobre SSL/TLS Conexão a porta serial Wireless Messaging – WMAPI

Segurança em MIDP 2.0 HTTPConnection e HTTPSConnection Possibilidade de utilizar sockets puros (SecureConnection) MIDP 2.0 define a interface SecurityInfo para informações detalhadas

SecureConnection Define uma conexão com sockets seguros Uma conexão segura é estabelecida com Connector.open() quando “SSL” é especificado Na URI, por exemplo: Connector.open(“ssl://host.com:70”); A implementação escolhe entre: Protocolo TLS versão 1.0 Protocolo SSL versão 3.0

SecurityInfo Define os métodos para acessar informação numa conexão segura Oferece o certificado, protocolo, versão, suite de cifragem, etc. Uso: SecureConnection sc = (SecureConnection) Connector.open(“ssl://host.com:70”); SecurityInfo info = sc.getSecurityInfo(); System.out.print(“Protocol ” + info.getProtocolName);...

Push (ou AutoLaunch)

Aplicação de rede Não é possível criar MIDlets do tipo servidor Limitações de plataforma: Sem multi-threading Sem processos daemon Limitações de recursos computacionais Segurança Solução – conexão offline ao servidor Confia num proxy para cuidar da primeira invocação Conexão inbound

PushRegistry MIDP 2.0 define um mecanismo de push MIDlets podem ser acordados por eventos externos Push Registry é manuseado pelo AMS Duas maneiras de se registrar: Estática: MIDlet-Push- no JAD Dinâmica: PushRegistry.registerConnection()

Esquema geral

MMAPI

MMAPI em MIDP 2.0 MIDP 2.0 Media API é um subconjunto da Mobile Media API (JSR 135) Somente Sons Pacotes: javax.microedition.media java.microedition.media.control

Áudio em MIDP 2.0 Implementações têm que suportar geração de tons e WAV Tipos adicionais são opcionais Para geração de tons: Manager.playTone(); Para playback de algum som em formato WAV, crie um objeto Player O objeto Player tem os métodos start/stop/pause

Exemplos de código Geração de tons: try{ Manager.playTone( ToneControl.C4, // nota 5000, //ms 100); //volume } catch(MediaException mee) {} Playback com looping try{ Player p = Manager.createPlayer( p.setLoopCount(5); p.start(); }...

Interface Gráfica

Interface com o usuário Popup ChoiceGroup Alerts podem ter comandos Comandos podem ser associados a Item Layout para Form e Item Custom Itens

Game API

Conjunto com 5 classes que simplificam o desenvolvimento de jogos 2D Provêem 2 importantes funcionalidades GameCanvas Estruturação do jogo em camadas

GameCanvas Subclasse de Canvas Fornece offscreen buffer Armazena o estado de pressionamento das teclas, podendo serem consultados a qualquer momento int keyState = getKeyStates(); if ((keyState & LEFT_PRESSED) != 0) { sprite.move(-1, 0); }

Loop de jogo com Canvas public class MicroTankCanvas extends Canvas implements Runnable { public void run() { while (true) { // Update the game state. repaint(); // Delay one time step. } public void paint(Graphics g) { // Painting code goes here. } protected void keyPressed(int keyCode) { // Respond to key presses here. }

Loop de jogo com GameCanvas public class MicroTankCanvas extends GameCanvas implements Runnable { public void run() { Graphics g = getGraphics(); while (true) { // Update the game state. int keyState = getKeyStates(); // Respond to key presses here. // Painting code goes here. flushGraphics(); // Delay one time step. }

Layer Representa um elemento visual do jogo Possui posição relativa à tela (x,y) além de dimensões (largura, altura) Método paint a ser implementado Em um dado momento pode estar visível ou não

Layer - Métodos int getHeight() int getWidth() int getX() int getY() paint(Graphics g) setVisible(boolean visible)

TiledLayer

TiledLayer – cont.

TiledLayer - métodos TiledLayer (int columns, int rows, Image image, int tileWidth, int tileHeight) int getCell (int col, int row) paint (Graphics g) setCell (int col, int row, int tileIndex)

LayerManager Gerencia uma série de layers Define a ordem na qual os layers são renderizados e em qual região da tela Simplifica o processo de renderização Define regiões em relação ao eixo-z

LayerManager – cont.

LayerManager - métodos void append (Layer l) Layer getLayerAt (int index) void insert (Layer l, int index) paint (Graphics g, int x, int y) setViewWindow (int x, int y, int width, int height)

Sprite Elemento visual do jogo que pode ser renderizado a partir de um ou mais frames Possui métodos para rotação, colisão e animação

Wireless Messaging API

Wireless Messaging API – JSR 120 Acesso padrão a mensages WMA foi desenhada para rodar em qualquer configuração Endereça as seguintes tecnologias: Short Message Service – SMS Cell Broadcast Service – CBS Suporta mensagens multimidia, incluindo sons, imagens e texto

Wireless Messaging API – JSR 120 Baseada no Generic Connection Framework Design da funcionalidade é parecida com UDPDatagramConnection Já que existem diferenças entre mensagens e datagramas, WMA interfaces definidas em javax.wireless.messaging Dois modos de receber mensagens Usando o metodo receive Bloqueia a Thread atual Definindo um MessageListener

MessageListener Implementa o ouvinte para receber objetos mensagem Define um único método notifyIncomingMessage(), que é invocado cada vez que uma mensagem chega Para se registrar para mensagens, use o método MessageConnection.setListener()

Boas práticas

Cuidado com exceções de segurança Design para rede de um modo assíncrono Use uma thread para ler Use uma thread para escrever Registro para autolaunch

Exceções de segurança Não use getMessage(), o usuário não quer ver isso Ofereça uma sugestão Use imagens Espere pela confirmação do usuário

Desenhe para threads I/O blocks numa thread Separada Exceções de I/O Feche as conexões

Usando uma thread para ler Mantenha thread ativa Até ser mandado um stop Ou ocorrer uma exceção

Use threads para enfileirar escritas Use o open connection Enfileire os dados a serem escritos Use uma thread separada para escrever

Usando uma thread para escrita No método run, enfileire as chamadas Desenfileire os dados a serem escritos Crie um datagrama para e mande-o

Checando autolaunch Pegue uma lista das conexões ativas Abra as conexões ativas Manuseie I/O normalmente

Referências Core J2ME Site da Sun Wireless Programming with J2ME: Cracking the code, ISBN:

Agora que acabou "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan Tokuda, Mestre Zen Alguém finalmente entendeu o que danado é isso????