You are on page 1of 79

Java para Dispositivos Mveis

J. Gabriel Lima gabriel@ecomp.eng.br http://jgabriellima.wordpress.com Laboratrio de Planejamento de Redes de Alto Desempenho LPRAD Empresa Jnior de Engenharia de Computao /UFPa

Roteiro
Por que java?

Onde esto as oportunidades de Negcio


Plataforma Java Java Mobile Edition Conceitos Importantes Implementao Projetando Aplicativos Como comear? A Tecnologia Java muito alm do convencional

Por que Java?


At hoje, a plataforma Java j atraiu mais de 6,5 milhes de desenvolvedores de software. utilizada em todos os principais segmentos da indstria, estando presente em uma ampla gama de dispositivos,

computadores e redes.
Sua versatilidade, eficincia, portabilidade de plataforma e segurana fazem dela a tecnologia ideal para a computao em rede. A tecnologia Java est em todo lugar! Ela pode ser encontrada em laptops, datacenters, consoles de jogo, supercomputadores cientficos, telefones celulares e at na

Internet.
A tecnologia Java est presente em mais de 4,5 bilhes de dispositivos, incluindo:
Mais de 800 milhes de PCs 2,1 bilhes de telefones celulares e outros dispositivos portteis 3,5 bilhes de cartes inteligentes

Alm de set-top boxes, impressoras, webcams, jogos, sistemas de navegao para automveis, terminais lotricos, dispositivos mdicos, guichs de pagamento de estacionamento etc.

Aplicaes mveis devem crescer 102% ao ano


Estudo da Mobile Business Applications and Services concludo pela ABI Research

Crescimento de 102% ao ano nos prximos 5 anos


Liberao dos dados especficos do negcio para dar suporte ao trabalho de campo Melhoria expressiva dos recursos dos dispositivos de acesso

Uso da mobilidade nas reas de vendas, de manuteno e assistncia tcnica, de transportes e de sade

Onde esto as Oportunidades de Negcio?


Games
Entretenimento em Geral

Servios
Pagamentos, Consultas e meio de identificao

Contedo
Provedor de Noticia e Notificaes

Plataformas Java
Java Standard Edition (JSE):
Define a JVM e as bibliotecas que rodaro em PCs padres e em estaes de trabalho.

Java Enterprise Edition (JEE):


a plataforma JSE adicionada a um conjunto de APIs para as mquinas servidoras, containers e ferramentas.

Java Micro Editon (JME):


a plataforma projetada para pequenos dispositivos (PDAs, pagers,eletrodomsticos, telefones celulares e smart cards). Possui uma mquina virtual mais leve e um mnimo de bibliotecas.

A Plataforma JME Arquitetura

A Plataforma JME - Estrutura


A plataforma JME definida em termos de configuraes e perfis. Uma configurao projetada para um dispositivo especfico, baseada nos limites de memria e na capacidade de processamento.

A configurao especifica:
Qual Java Virtual Machine que ser instalada no dispositivo;

O subconjunto das APIs da JSE que sero utilizadas na plataforma;


As APIs adicionais, se necessrias;

Conceitos Importantes
Java Community Process (JCP)
Processo formalizado que permite que as partes interessadas se envolvam nas definies de verses futuras e adio de funcionalidades da plataforma Java.

Quem faz/pode fazer parte da JCP?


Operadoras (NTT DoCoMo); Desenvolvedores de dispositivos mveis (Nokia, Sony Ericsson, Motorola); Desenvolvedoras de IDE (Eclipse Foundation); Outras Empresas (Mitsubishi, Texas Instruments); Desenvolvedores em geral.

Conceitos Importantes
Java Specification Requests (JSRs) Descrevem as especificaes propostas para a plataforma Java. Uma JSR revisada publicamente at que seja votada pela JCP.

Aps a aprovao, torna-se uma implementao de referncia que prov uma verso livre da tecnologia.
Exemplos de JSR JSR 30: J2ME CLDC 1.0

JSR 37: MIDP 1.1


JSR 68: J2ME Platform Specification JSR 82: Bluetooth JSR 118: MIDP 2.0 JSR 133: Java Game Profile

JSR 139: CLDC 1.1


JSR 184: Mobile 3D Graphics API for J2ME

Conceitos Importantes
Configuraes: Define o ambiente em que Java ser executado.

Composto por um pequeno conjunto de classes que deve ser estendido por profiles;
Uma configurao tem trs elementos: Mquina Virtual; Cdigo de interface com o dispositivo; Conjunto de APIs.

Conceitos Importantes
Connected Limited Device Configuration (CLDC) Configurao usada em ambientes extremamente restritos, com capacidade mnima de processamento, fonte de energia limitada, display reduzido, conectividade intermitente e pouca

memria.
Usado na maioria dos aparelhos celulares. Principais limitaes das verses anteriores No opera com ponto flutuante; Sem JNI nem reflexo, e por consequncia, sem serializao de objetos; Sem grupos de threads (suporta threads, mas no grupos). Algumas limitaes foram amenizadas nas verses atuais

Conceitos Importantes
Connected Limited Device Configuration (CLDC) java.io; java.lang;

java.util.

Conceitos Importantes
Connected Device Configuration (CDC) Destinado utilizao em dispositivos mais potentes que aqueles contemplados na configurao CLDC. Utilizando o CDC podemos construir interfaces grficas mais poderosas e aplicaes muito mais

inteligentes e pesadas em termos computacionais, se comparadas s aplicaes feitas em CLDC.

Conceitos Importantes
Mquinas virtuais: KVM (Kilobyte Virtual Machine): utilizada no CLDC, no possui suporte a double e float. uma mquina virtual com funes reduzidas, pequena quantidade de memria e um coletor de

lixo (GC ou Garbage Collector) incorporado para otimizao da memria


CLDC HotSpot Implementation uma mquina virtual de alto desempenho e robustez e inclui caractersticas que melhoram a execuo da aplicao em comparao com a KVM, bem como uma gesto mais eficiente dos

recursos.
Uma das mudanas mais importantes nesta mquina virtual foi a introduo da compilao Just-in-time (JIT), que pode ser 50 vezes mais rpida que uma instruo interpretada, como acontecia na KVM.

Conceitos Importantes
Profiles Permitem complementar uma configurao pela adio de classes que provem caractersticas apropriadas para um tipo particular de dispositivo ou segmento de mercado

Exemplos de profiles:
MIDP (Mobile Information Device Profile); PDAP (PDA Profile); FP (Foundation Profile); Personal Basis; Personal Profile; Game Profile (para CDC); Mobile Information Device Profile (MIDP) Oferece recursos como rede, armazenamento local, multimdia (sons), componentes de interface, etc.

Tratando da implementao...
Principais Pacotes CLDC 1.1
java.lang classes fundamentais para a linguagem Java; java.io I/O bsico; java.util classes utilitrias para manipulao de Collections, data e hora; javax.microedition.io suporte ao Generic Connection Framework;

MIDP 2.0
javax.microedition.lcdui interface grfica com usurio; javax.microedition.midlet suporte aos MIDlets; javax.microedition.lcdui.game desenvolvimento de jogos; javax.microedition.rms persistncia de dados;

Entendendo o funcionamento de uma aplicao


MIDlet
Um MIDlet uma aplicao Java destinada a dispositivos mveis desenvolvido com a utilizao do perfil MIDP da configurao CLDC construda para ser executada em celulares, smartphones ou em outros dispositivos que implementem o perfil MIDP Todo dispositivo mvel tem um gerenciador de aplicativos (AM Application Manager) que controla os aplicativos a serem instalados, onde sero armazenados e como sero executados. A comunicao do gerenciador com o MIDlet acontece pela classe MIDlet do pacote javax.microedition.midlet.MIDlet. Portanto, o aplicativo deve herdar esta classe, pois ela contm os mtodos que inicializam, resumem, interrompem a execuo e destroem o MIDlet.

Ciclo de vida do MIDlet


Uma aplicao iniciada quando o AM invoca o mtodo startApp(), colocando a aplicao no modo ativo. Enquanto estiver executando, ela pode ser pausada pelo AM atravs do mtodo pauseApp(). Isso pode ocorrer, por exemplo, quando uma chamada for recebida ou o prprio usurio pausar a aplicao. E quando a aplicao encerrada ela passa para o estado destrudo atravs do mtodo destroyApp(), que limpa todos os recursos utilizados para depois fechar a aplicao. Estes trs mtodos tratam da comunicao que parte do gerenciador de aplicativos para o MIDlet. Alm destes, existem outros trs mtodos, porm, com a comunicao partindo do MIDlet para o gerenciador, so eles: notifyDestroy(): Avisa ao gerenciador que pode encerrar o MIDlet; NotifyPaused(): Envia o pedido de pausa para o gerenciador caso o MIDlet queira pausar; ResumeRequest(): Avisa ao gerenciador que a MIDlet pode tornar-se ativa novamente

JME Pacotes Adicionais


JME Pacotes Adicionais Wireless Messaging API 2.0. Web Service Access for JME. PDA Profile for JME. Bluetooth. Mobile 3D Graphics. Mobile Media.

Projetando aplicativos
Quanto mais funcionalidades incluirmos mais difcil ser aprender, utilizar e dar suporte ao produto. Implemente apenas 20% das funcionalidades identificadas que voc atender a 80% do interesse do pblico consumidor. Consumidores raramente lem documentao, logo, faa com que as suas aes sejam previstas facilmente. Minimize as quantidades de navegaes e interaes necessrias para completar uma tarefa rotineira ou crucial. O vai, vai, vai e o volta, volta, volta para completar uma tarefa deve ser evitado.

Consumidores esperam uma resposta imediata para as suas aes, caso contrrio ele pressionar repetidamente as teclas ou assumir que o dispositivo no est funcionando.
Faa com que alguma coisa na tela indique que o dispositivo est em funcionamento. Pode ser a emisso de um aviso sonoro ou uma animao.

Projetando aplicativos
Consumidores sempre devem ter a capacidade de interromper algo que est sendo feito ou desligar o aparelho. Consumidores devem responder apenas quelas questes absolutamente necessrias.

Confirmaes desnecessrias e mensagens de erro que depreciam a experincia do consumidor devem ser evitadas.
Cheque, periodicamente, o seu projeto com os projetos dos concorrentes.

Quando idealizar um projeto para um dispositivo mvel lembre-se o quanto fcil operar um aparelho de TV ou um forno de microondas.

O Futuro do Desenvolvimento Mobile


Android
SO Linux embarcado criado pelo Google Criao de uma nova Maquina Virtual (Dalvik) Escapar do Modelo de Licenciamento do J2ME Delega ao sistema operacional o isolamento de memria e o suporte a threads No tem a burocracia do JCP Suportar J2ME O Android j o sistema operacional mais popular os EUA Hoje supera o Apple Iphone OS e BlackBerry OS

JavaFX Mobile
Resposta da SUN SO baseado em um Kernel Linux Implementaes de JavaSE e JavaME

O que o JavaFX?

O JavaFX amplia a sua experincia na Web ao fornecer mdia e contedo de alta qualidade em todas as telas que voc
utilizar. Na condio de usurio, voc conseguir executar aplicativos JavaFX em um navegador ou os arrastar e soltar na rea de trabalho. uma interface dinmica! O JavaFX baseado em tecnologia Java: o JavaFX amplia a capacidade do Java, pois permite que desenvolvedores utilizem qualquer biblioteca Java dentro de aplicativos JavaFX. Dessa forma, os desenvolvedores podem expandir seus recursos em Java e utilizar a revolucionria tecnologia de apresentao que o JavaFX proporciona, a fim de criar agradveis experincias visuais. Destaques do JavaFX: Permite que os usurios exibam aplicativos JavaFX em um navegador ou saiam do navegador arrastando e soltando o mesmo aplicativo na rea de trabalho Possibilita um eficiente fluxo de trabalho entre o designer e o desenvolvedor com o Project Nile: designers podem trabalhar nas ferramentas de suas preferncias e interagir com desenvolvedores de scripts para Web que utilizam o IDE NetBeans com o JavaFX Amplia a tecnologia Java permitindo o uso de qualquer biblioteca Java dentro de um aplicativo JavaFX Permite que desenvolvedores integrem ativos de Web de grficos vetoriais, animao, udio e vdeo em um aplicativo repleto de recursos, interao e imerso.

Como comear?
IDEs Ferramentas APIs

A Tecnologia Java muito Alm do Convencional ...

O que mais comum?

Aplicaes
WEB DESKTOP MOBILE Sistemas de armazenamento de dados Sistema de Integrao de Servios e tecnologias

Tecnologias comumente utilizadas...

No entanto...
A Tecnologia Java muito mais que isso...

Hoje vamos tratar de :

JAVA TV

Plataforma para Desenvolvimento para televiso digital interativa

Desenvolvido pela SUN junto com vrias empresas do ramo


Por ser Java
Possui alto nvel de controle Alta flexibilidade sobre o comportamento das aplicaes

Extenso da plataforma Java Construda em cima da tecnologia JME

Visa atender as funcionalidades dos set up boxes


Stremming de udio/vdeo Acesso mediante identificao Acesso s informaes e servios Controle e troca do canal do receptor Controle das interfaces grficas

A API prov recursos de uso geral


Alto nvel de abstrao Perde-se a necessidade do conhecimento da camada de mais baixo nvel Protocolos de Transmisso Redes transmissoras

Java TV

Alguns desses recursos so:


Seleo de Servios Acesso e controle de banco de dados Controle do Media Player Interno do receptor Acesso aos dados transmitidos atravs do sinal da tv.

Alm de outros recursos que esto fora da especificao:


Suporte a um canal de retorno pacote java.net Reproduo de contedo multimdia - JMF (Java Media Framework)

Entre os recursos no disponibilizados pelo Java TV :


Falta de sistema de gerenciamento de recursos Falta de um sistema de arquivos

As aplicaes Java desenvolvidas para JavaTV so chamadas de Xlets


Prover um modo de controle rgido do seu ciclo de vida

Java TV

Existem 4 tipos bsicos de aplicativos:


EPGs Eletronic Program Guides -> Guias da programao do canal/rede Aplicaes dependentes de programa
Ex. Enquete em um programa de auditrio

Aplicaes independentes
Ex. Programa que mostra a cotao da bolsa de valores. Onde se mantm ativa mesmo trocando-se de canal Propagandas Compras Online

Java TV

Blue-ray Disc JAVA BD-J

O Blue-ray
Novo formato de mdia para aparelhos eletrnico, computadores e vdeogames (PS3) Excelente qualidade de udio e vdeo

Alta capacidade de armazenamento Single Layer 25Gb Double layer 50 Gb Multi-layer 200 Gb

Possibilidade de executar aplicativos Java a partir de leitores de Blue-Ray


A plataforma JAVA para os leitores de BlueRay chamada de BD-J O padro BD-J tambm parte da plataforma JavaME

Antes de iniciarmos...
Alguns conceitos bsicos:
Ttulos Unidade organizadora de contedos de vdeo Menu - Parte interativa da aplicao, responde aos eventos do controle remoto

O que possvel fazer com BD-J ?


Desenhar textos na tela. Incluindo contedo dentro do quadro que est sendo exibido. Ex. Processar legendas Desenhar formas ou imagens na tela em cima do contedo do vdeo que exibido no momento. Desenhar e animar as imagens na tela de um jogo interativo. Criar botes animados com vrios tipos de efeitos Criar menus altamente interativos que permitem ao usurio selecionar um ttulo, um captulo, ou quaisquer outras opes avanadas como contedo extra.

Outras idias ... Menus elaborados Interatividade In-movie Jogos Persistncia de Informaes Download de contedo Comercio eletrnico associado com o filme Download de legendas Eventos sincronizados Compartilhamento de experincias em comunidades Versatilidade de design Internet Banking

Uma plataforma - > Dois Modelos

High-Definition Movie (HDMV) Modelo criado atravs da extenso de funcionalidades do DVD. Blu-ray Disc Java (BD-J) Modelo baseado em uma plataforma completamente programvel com suporte a conectividade e novos modos de interao.

Menus mais bem elaborados que podem ser abertos em cima do filme sem que haja a interrupo do mesmo

Impactos no mercado...
Um mercado potencial de mais de 1 Bilho de aparelhos novos rodando a Mquina Virtual Java (JVM); Milhares de ttulos que podem ser incrementados com Java, abrindo um grande mercado para desenvolvedores; Uma nova plataforma para comercio eletrnico interativo, onde voc pode comprar os objetos que esto aparecendo no filme!

Novo mtodo de integrao entre os usurios sem a necessidade do computado.

Java Games 3D

Sistemas Embarcados com Java

O que so sistemas embarcados?


Um sistema embarcado (ou sistema embutido) um sistema microprocessado no qual o computador completamente encapsulado ou dedicado ao dispositivo ou sistema que ele controla. Diferente de computadores de propsito geral, como o computador pessoal, um sistema embarcado realiza um conjunto de tarefas predefinidas, geralmente com requisitos especficos. J que o sistema dedicado a tarefas especficas, atravs de engenharia pode-se otimizar o projeto reduzindo tamanho, recursos computacionais e custo do produto.

Ok! E como a Tecnologia Java entra nesse contexto ?


Alguns exemplos muito interessantes so:

SUN SPOT

JSTAMP

JStamp Development Station

Exemplos...

Sun SPOT
Sun Small Programmable Object Technology Um elemento de rede de sensores sem fio (RSSF), desenvolvido pela Sun Microsystems Sua programao Baseia-se na mquina virtual JME

O dispositivo completo, inteiramente montado, cabe em uma palma de mo normal


Ncleo ARM (arquitetura de processador de 32 bits usada principalmente em sistemas embarcados) modelo 920T de 32 bits, a 180 MHz, com 512 K de RAM e 4 M de memria Flash;

interface de rdio IEE 802.15.4 (sobre a qual usualmente se implementa o ZigBee - um conjunto de especificaes para a comunicao sem-fio entre dispositivos eletrnico), a 2.4 GHz, com antena integrada;

Interface USB.

Sun SPOT
Placa de Sensor Medidor de acelerao (ou acelermetro) de 3 eixos, 2G/6G; Sensor de temperatura; Sensor de luz; 8 Leds tri-colores; 6 entradas analgicas; 2 sensores de movimento; 5 pinos para I/O de propsito geral, e 4 pinos de sada de alta corrente. Bateria Bateria recarregvel de ltio de 3.6 V e 750 mAh; Modo de inatividade (ou sleep) profundo a 48 uA; Gerenciamento automtico de bateria provido pelo software.

Projeto Sun SPOT foi criado para incentivar o desenvolvimento de novas aplicaes e dispositivos.

Ele projetado desde o baixo nvel para permitir que programadores que nunca trabalharam com

dispositivos embutidos possam pensar alm do teclado, mouse e tela e escrever programas que possam interagir uns com os outros.

Um programador Java pode usar as ferramentas padro de desenvolvimento Java, como o NetBeans para escrever cdigo.

Temos PDAs, telefones celulares e MP3 players.


Talvez voc possa projetar os prximos dispositivos eletrnicos para consumo pessoal.

Quer construir um dispositivo que reconhea movimentos e seja capaz de interagir com brinquedos robticos? Talvez a sua empresa est tendo um problema de transporte de produtos frgeis e queira acompanhar o que acontece com eles.

Talvez voc seja um entusiasta do modelo de foguete que quer transmitir dados ao vivo de seu foguete

Ou talvez voc s quer saber ao certo se ou no a luz se apaga quando voc fecha a porta da geladeira. Sun SPOTS fornecer uma plataforma para tudo isso e muito mais...

E as aplicaes?
Depender somente da sua imaginao....

Dvidas ?

Java para Dispositivos Mveis


J. Gabriel Lima gabriel@ecomp.eng.br

http://jgabriellima.wordpress.com
Laboratrio de Planejamento de Redes de Alto Desempenho - LPRAD Empresa Jnior de Engenharia de Computao /UFPa