ia368 tópicos em engenharia de computação v 1 semestre de...

30
Prof. José Mario De Martino [email protected] Bloco A – sala 317-A IA368 Tópicos em Engenharia de Computação V 1° semestre de 2008

Upload: others

Post on 21-Oct-2019

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

Prof. José Mario De [email protected]

Bloco A – sala 317-A

IA368 Tópicos em Engenharia de Computação V

1° semestre de 2008

Page 2: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 1

Agenda

Visão geral plataformas Java: Java EE, Java SE e Java MEJava MEMáquina virtual Java – KVMConfigurações CLDC e CDCCLDC 1.0 e CLDC 1.1Perfil MIDPMIDP 1.0 e MIDP 2.0Pacotes OpcionaisFragmentaçãoJSR 185 JTWI e JSR248 (MSA)

Page 3: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 2

Referências

J2ME in a NutshellKim TopleyO’Reilly – 2002

Wireless Java Developing with J2ME, Second EditionJonathan KnudsenApress – 2003

Learning Wireless JavaOusay MahmoudO’Reilly – 2001

Page 4: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 3

Referências

http://developers.sun.com/techtopics/mobility/allarticles (conjunto de artigos, alguns de interesse)

• Seção Application Models: Understanding J2ME Application Models• Seção Game: Getting Started with MIDP 2.0 Game API• Seção Getting Started• entre outros

http://java.sun.com/javame/overview/techpapers

http://java.sun.com/javame/index.jsp (Java ME at a Glance)

http://java.sun.com/javame/downloads/index.jsp (Downloads)

http://java.sun.com/javame/reference/apis.jsp (Java ME Technology APIs & Docs)

http://www.jcp.org/en/jsr/all (todas as Java Specification Requests - JSRs)

Page 5: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 4

Plataforma Java

Plataforma Java

• Linguagem (incluindo compilador e ferramentas de apoio)

• Ambiente de execução (Java Virtual Machine)

• Biblioteca (Java API – Application Programming Interface)

Page 6: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 5

Plataforma Java

Edições da Plataforma Java• Java SE (Java Plataform, Standard Edition) – edição padrão que

estabelece ambiente de desenvolvimento de aplicativos para computadores pessoais e estações de trabalho. Define um núcleo básico de funcionalidades, comum a todas as edições.

• Java EE (Java Plataform, Enterprise Edition) – é um superconjunto da edição padrão, voltada para o desenvolvimento de servidores e aplicativos corporativos orientados a transações e apoiado em bases de dados, para atender clientes, fornecedores e empregados.

• Java ME (Java Plataform, Micro Edition) – estabelece um ambiente de execução para sistemas embutidos/embarcados e dispositivos portáteis, incluindo telefones celulares, PDAs e set-top boxes, que possuem recursos limitados (memória, processamento, velocidade de comunicação,...), insuficientes para comportar as plataformas Java SE ou Java EE.

Page 7: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 6

Plataforma Java

Edições da Plataforma Java

Page 8: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 7

Plataforma Java ME

Modular e escalável, organizada em camadas

• Máquina virtual (KVM – Kilobyte Virtual Machine)

• Configuração (Configuration)

• Perfil (Profile) e Pacotes opcionais

Sistema Operacional

JVM

Configuração

Perfil

Hardware

Page 9: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 8

Plataforma Java ME

CLDCCDC

KVM

MIDP

Foundation Profile

IMPPersonal Basis Profile

Personal Profile

Pagers

Celulares

PDAsInternetAppliances

Set-topBoxes

JVM

DispositivosEmbarcados

Page 10: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 9

Máquina Virtual

Kilobyte Virtual Machine• Versão reduzida da JVM da edição J2SE• Tipicamente 40KB – 80KB• Para dispositivos com pouca memória (≤128KB)• Processador 16-32bits

CLDC-HI (CLDC HotSpot Implementation Virtual Machine)• Versão otimizada e aprimorada da KVM• Disponível sob licença para fabricantes de dispositivos

Page 11: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 10

Configuração (Configuration)

Define as características mínimas da plataforma estabelecendo categoria de dispositivos com recursos similares no que tange:• tipo e tamanho de memória• capacidade de processamento• tipo de conectividade

Uma determinada configuração estabelece:• Os aspectos da linguagem Java suportados• As características da máquina virtual java• As bibliotecas (APIs) básicas suportadas

A camada de configuração e a da máquina virtual estão intimamente relacionadas.

Page 12: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 11

Configuração (Configuration)

Duas configuração para duas categorias de dispositivos

• CLDC (Connected, Limited Device Configuration): tipicamente, dispositivo com pouca memória (160KB-512KB), processador de 16-32 bits e conexão wireless. Exemplos: celular e low-end PDA.

• CDC (Connected Device Configuration): tipicamente, dispositivo com mais memória (≥ 2MB), processor de 64 bits ou mais e conexão fixa (tipicamente). Exemplo: set-top box, web phone e high-end PDA.

Page 13: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 12

CLDC

CLDC 1.0 (JSR-30)

• Memória mínima 160KB (sendo 32KB para heap)• Processador 16-32 bits• Segurança: processo de pré-verificação• Não suporta ponto-flutuante• Limitações no tratamento de erros • Sem finalização automática - Object.finalize()• Não permite a chamada de código nativo (JNI - Java Native Interface)• Suporta multithreading, mas não grupos de threads e threads daemons

(thread que termina automaticamente, após o término de todas threadsnão daemons)

• Não suporta referências fracas - java.lang.ref (SoftReference, WeakReference, PhantomReference)

• Não suporta carregadores de classe definidos pelo usuário• Não suporta reflexão – java.lang.reflect

Page 14: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 13

CLDC

CLDC 1.1 (JSR-139)

• Memória mínima 192KB (sendo 32KB para heap)• Suporta ponto-flutuante• Suporte a referências fraca (WeakReference)• Threads com nomes

Page 15: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 14

CLDC

Processo de verificação

Pré-verificação Verificação

Page 16: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 15

CLDC

Processo de verificação

• Pré-verificação• Realizado na estação de desenvolvimento, após a compilação.• Geração e inserção de informações no arquivo de classe, que

permite o teste da integridade do arquivo no momento de carga.

• Verificação• Realizada no dispositivo.• Varredura do código e a informação gerada pela pré-verificação.• Verifica a aderência do código às regras da linguagem, entre

outras:• Variáveis locais devem ser inicializadas antes do uso;• Após a criação de um objeto, o seu construtor deve ser executado,

antes do uso do objeto;• Todo construtor deve começar evocando o construtor da superclasse.

Page 17: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 16

CLDC - Bibliotecas

Classes Java SE• CLDC um suporta um subconjunto de classes da plataforma Java SE.• As classes derivadas da plataforma Java SE são versões, em geral, com

um conjunto menor de métodos do que versão original Java SE.• Pacotes:

• java.lang• java.io• java.util

Classes CLDC (Generic Connection Framework)• Pacote javax.microedition.io• A funcionalidade suportada nos pacotes java.io e java.net da plataforma

Java SE foi condensada na CLDC. O pacote javax.microedition.io estende a funcionalidade do pacote java.io suportado pela CLDC, definindo o GCF (Generic Connection Framework), permitindo a inclusão de protocolos como: HTTP, HTTPS e WAP (Wireless Application Protocol)

Page 18: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 17

Perfil (Profile)

Suporta serviços de mais alto-nível para uma classe de dispositivos, incluindo:

• Criação e gerenciamento de aplicativos

• Interface com usuário (teclado / display)

• Armazenamento persistente

Page 19: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 18

Perfil (Profile)

Perfis de interesse

• MIDP 1.0 - Mobile Information Device Profile 1.0 (JSR 37)

• MIDP 2.0 (2.1) - Mobile Information Device Profile 2 (JSR 118)

• Mobile Information Device Profile 3 (JSR 271)

Page 20: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 19

MIDP – Mobile Information Device Profile

MIDP 1.0 (JSR 37) – requisitos mínimos• Memória

• 128KB de memória não-volátil para a implementação MIDP• 32KB de memória volátil para alocação dinâmica (heap)• 8KB de memória não-volátil para armazenamento persistente

• Display• Tamanho tela: 96x54 pixels• Cor: 1 bit (display depth) - monocromático• Aspect ratio: 1:1

• Entrada• Teclado de telefone (one-handed keypad) e/ou• Teclado QWERTY (two-handed keyboard) e/ou• Tela sensível ao toque (touch screen)

• Conectividade• 2-vias, wireless, possivelmente intermitente, e com faixa limitada

Page 21: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 20

MIDP – Mobile Information Device Profile

MIDP 1.0 (JSR 37) – bibliotecas• Pacotes

• javax.microediton.midlet (aplicativos para MID) • javax.microedition.lcdui (interface com o usuário)• javax.microedition.rms (memória persistente)

Page 22: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 21

Perfis (Profiles)

MIDP 2.0 (JSR 118) – requisitos mínimos• Memória

• 256KB de memória não-volátil para a implementação MIDP• 128KB de memória volátil para alocação dinâmica (heap)• 8KB de memória não-volátil para armazenamento persistente

• Display• Tamanho tela: 96x54 pixels• Cor: 1 bit (display depth) - monocromático• Aspect ratio: 1:1

• Entrada• Teclado de telefone (one-handed keypad) e/ou• Teclado QWERTY (two-handed keyboard) e/ou• Tela sensível ao toque (touch screen)

• Conectividade• 2-vias, wireless, possivelmente intermitente e com faixa limitada

• Áudio• Suportar em hardware ou software WAV e MIDI

Page 23: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 22

Perfis (Profiles)

MIDP 2.0 (JSR 118) – bibliotecas• Pacotes

• javax.microediton.midlet (aplicativos para MID)• javax.microedition.lcdui (interface com o usuário)• javax.microedition.lcdui.game (suporte a jogos)• javax.microedition.rms (memória persistente)• javax.microedition.media (controle e processamento de áudio)• javax.microedition.media.control (controle e processamento de

áudio)

Page 24: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 23

Pacotes opcionais

Adicionalmente ao perfil, existem pacotes opcionais que suportam outros serviços.Pacotes opcionais de interesse:• JSR 120 – Wireless Message API (SMS)• JSR 135 – Mobile Media API (apresentação áudio e vídeo - básico )• JSR 178 – Mobile Game API (proposta rejeitada)• JSR 184 – Mobile 3D Graphics API for J2ME (gráficos 3D)• JSR 205 – Wireless Messaging API 2.0 (Short Message Service - SMS, Multimedia

Messaging Service - MMS)• JSR 209 – Advanced Graphics and User Interface Optional Package for J2ME

(em andamento)• JSR 226 – Scalable 2D Vector Graphics API for J2ME (gráfico vetorial 2D)• JSR 234 – Advanced Multimedia Supplements (câmera e recurso avançados de

áudio)• JSR 287 – Scalable 2D Vector Graphics API 2.0 for J2ME (em andamento)• JSR 297 – Mobile 3D Graphics API 2.0 (em andamento)• JSR 239 – JavaTM Binding for the OpenGL® ES API

Page 25: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 24

Fragmentação

Sistema operacional

CLDC/KVM

MIDlets

AplicativosNativos

ClassesOEM

AplicativosOEM

PacotesOpcionais

MIDP

Hardware do dispositivo

OEM: Original Equipment Manufacturer

Page 26: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 25

Fragmentação

JSR 185 – Java Tecnology for the Wireless Industry

JSR 248 – Mobile Service Architecture

JSR 249 – Mobile Service Architecture Advanced (em andamento)

Page 27: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 26

Fragmentação

JSR 185 – Java Tecnology for the Wireless Industry (JTWI)• Mandatório

• JSR 118 – MIDIP 2.0• JSR 120 – WMA 1.1 Wireless Messaging API (SMS)

• Opcional• JSR 135 – MMAPI 1.1 Mobile Media API• JSR 139 – CLDC 1.1

• Configuração mínima• JSR 30 – CLDC 1.0

• Dispositivo – requisitos mínimo• Display: 125x125; 4096 cores (12 bits)• Heap: 128KB

• Tamanho do aplicativo• Java Archive - JAR 64KB ()• Java Application Descriptor - JAD 5KB • Record Management System - RMS 30KB

Page 28: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 27

Fragmentação

JSR 248 – MSA Mobile Service Architecture• JSR 139 (CLDC 1.1)• JSR 118 (MIDP 2.1)• JSR 75 (file & pim)• JSR 82 (bluetooth)• JSR 135 (MMAPI 1.1)• JSR 184 (3D Graphics)• JSR 205 (WMAPI 2.0)• JSR 226 (2D Vector Graphics)• JSR 172 (web services)• JSR 177 (security and trust)• JSR 179 (location)• JSR 180 (SIP)• JSR 211 (content handler)• JSR 229 (payment)• JSR 234 (multimedia supplements)• JSR 238 (internationalization)

subsetMSA

Page 29: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 28

Atividade

Implantar sistema de desenvolvimento

• Java ME Wireless Toolkit 2.5.2http://java.sun.com/products/sjwtoolkit/download-2_2.html

• Eclipse sdk 3.3.2• http://www.eclipse.org/downloads/

• EclipseME 1.5.4• http://eclipseme.org/

Page 30: IA368 Tópicos em Engenharia de Computação V 1 semestre de …martino/disciplinas/ia368/notasaula/javame.pdf · IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario

IA368 Tópicos em Engenharia de Computação V - 1S2008 - Prof. JMario De Martino 29

Java ME Wireless Toolkit 2.5.2

API disponíveis• JSR 139 (CLDC 1.1)• JSR 118 (MIDP 2.1)• JSR 75 (file & pim)• JSR 82 (bluetooth)• JSR 135 (MMAPI 1.1)• JSR 184 (3D Graphics)• JSR 205 (WMAPI 2.0)• JSR 226 (2D Vector Graphics)• JSR 172 (web services)• JSR 177 (security and trust)• JSR 179 (location)• JSR 180 (SIP)• JSR 211 (content handler)• JSR 229 (payment)• JSR 234 (multimedia supplements)• JSR 238 (internationalization)• JSR 239 (OpenGL ES)