79
Java para Dispositivos Móveis J. Gabriel Lima [email protected] http://jgabriellima.wordpress.com Laboratório de Planejamento de Redes de Alto Desempenho LPRAD Empresa Júnior de Engenharia de Computação /UFPa

Java para dispositivos móveis

Embed Size (px)

Citation preview

Page 1: Java para dispositivos móveis

Java para Dispositivos Móveis

J. Gabriel Lima

[email protected]

http://jgabriellima.wordpress.com

Laboratório de Planejamento de Redes de Alto Desempenho LPRAD

Empresa Júnior de Engenharia de Computação /UFPa

Page 2: Java para dispositivos móveis

• Por que java?

• Onde estão as oportunidades de Negócio

• Plataforma Java

• Java Mobile Edition

• Conceitos Importantes

• Implementação

• Projetando Aplicativos

• Como começar?

• A Tecnologia Java muito além do convencional

Roteiro

Page 3: Java para dispositivos móveis

Até hoje, a plataforma Java já atraiu mais de 6,5 milhões de desenvolvedores de software. É utilizada

em todos os principais segmentos da indústria, estando presente em uma ampla gama de dispositivos,

computadores e redes.

• Sua versatilidade, eficiência, portabilidade de plataforma e segurança fazem dela a tecnologia ideal

para a computação em rede. A tecnologia Java está em todo lugar! Ela pode ser encontrada em

laptops, datacenters, consoles de jogo, supercomputadores científicos, telefones celulares e até na

Internet.

• A tecnologia Java está presente em mais de 4,5 bilhões de dispositivos, incluindo:

• Mais de 800 milhões de PCs

• 2,1 bilhões de telefones celulares e outros dispositivos portáteis

• 3,5 bilhões de cartões inteligentes

Além de set-top boxes, impressoras, webcams, jogos, sistemas de navegação para automóveis,

terminais lotéricos, dispositivos médicos, guichês de pagamento de estacionamento etc.

Por que Java?

Page 4: Java para dispositivos móveis

• Estudo da Mobile Business Applications and Services concluído pela ABI Research

• Crescimento de 102% ao ano nos próximos 5 anos

• Liberação dos dados específicos do negócio para dar suporte ao trabalho de campo Melhoria expressiva dos recursos dos dispositivos de acesso

• Uso da mobilidade nas áreas de vendas, de manutenção e assistência técnica, de transportes e de saúde

Aplicações móveis devem crescer 102% ao ano

Page 5: Java para dispositivos móveis

• Games • Entretenimento em Geral

• Serviços • Pagamentos, Consultas e meio de identificação

• Conteúdo • Provedor de Noticia e Notificações

Onde estão as Oportunidades de Negócio?

Page 6: Java para dispositivos móveis

• Java Standard Edition (JSE):

• Define a JVM e as bibliotecas que rodarão em PCs padrões e em estações de trabalho.

• Java Enterprise Edition (JEE):

• É a plataforma JSE adicionada a um conjunto de APIs para as máquinas servidoras, containers e ferramentas.

• Java Micro Editon (JME):

• É a plataforma projetada para pequenos dispositivos (PDAs, pagers,eletrodomésticos, telefones celulares e smart cards).

• Possui uma máquina virtual mais leve e um mínimo de bibliotecas.

Plataformas Java

Page 7: Java para dispositivos móveis

A Plataforma JME - Arquitetura

Page 8: Java para dispositivos móveis

• A plataforma JME é definida em termos de configurações e perfis.

Uma configuração é projetada para um dispositivo específico, baseada nos limites de memória e na capacidade de processamento.

• A configuração especifica:

• Qual Java Virtual Machine que será instalada no dispositivo;

• O subconjunto das APIs da JSE que serão utilizadas na plataforma;

• As APIs adicionais, se necessárias;

A Plataforma JME - Estrutura

Page 9: Java para dispositivos móveis

• Java Community Process (JCP)

• Processo formalizado que permite que as partes interessadas se envolvam nas definições de versões futuras e adição de funcionalidades da plataforma Java.

• Quem faz/pode fazer parte da JCP?

• Operadoras (NTT DoCoMo);

• Desenvolvedores de dispositivos móveis (Nokia, Sony Ericsson, Motorola);

• Desenvolvedoras de IDE (Eclipse Foundation);

• Outras Empresas (Mitsubishi, Texas Instruments);

• Desenvolvedores em geral.

Conceitos Importantes

Page 10: Java para dispositivos móveis

• Java Specification Requests (JSRs)

• Descrevem as especificações propostas para a plataforma Java.

• Uma JSR é revisada publicamente até que seja votada pela JCP.

Após a aprovação, torna-se uma implementação de referência que provê uma versão 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

Page 11: Java para dispositivos móveis

Configurações:

– Define o ambiente em que Java será executado.

Composto por um pequeno conjunto de classes que deve ser estendido por profiles;

– Uma configuração tem três elementos:

• Máquina Virtual;

• Código de interface com o dispositivo;

• Conjunto de APIs.

Conceitos Importantes

Page 12: Java para dispositivos móveis

Connected Limited Device Configuration (CLDC)

– Configuração usada em ambientes extremamente restritos, com capacidade mínima de

processamento, fonte de energia limitada, display reduzido, conectividade intermitente e pouca

memória.

– Usado na maioria dos aparelhos celulares.

Principais limitações das versões anteriores

– Não opera com ponto flutuante;

– Sem JNI nem reflexão, e por consequência, sem serialização de objetos;

– Sem grupos de threads (suporta threads, mas não grupos).

• Algumas limitações foram amenizadas nas versões atuais

Conceitos Importantes

Page 13: Java para dispositivos móveis

Connected Limited Device Configuration (CLDC)

• java.io;

• java.lang;

• java.util.

Conceitos Importantes

Page 14: Java para dispositivos móveis

Connected Device Configuration (CDC)

Destinado à utilização em dispositivos mais potentes que aqueles contemplados na configuração CLDC.

Utilizando o CDC podemos construir interfaces gráficas mais poderosas e aplicações muito mais

inteligentes e pesadas em termos computacionais, se comparadas às aplicações feitas em CLDC.

Conceitos Importantes

Page 15: Java para dispositivos móveis

Máquinas virtuais:

– KVM (Kilobyte Virtual Machine): utilizada no CLDC, não possui suporte a double e float.

É uma máquina virtual com funções reduzidas, pequena quantidade de memória e um coletor de

lixo (GC ou Garbage Collector) incorporado para otimização da memória

– CLDC HotSpot Implementation

É uma máquina virtual de alto desempenho e robustez e inclui características que melhoram a execução da aplicação em comparação com a KVM, bem como uma gestão mais eficiente dos

recursos.

Uma das mudanças mais importantes nesta máquina virtual foi a introdução da

compilação Just-in-time (JIT), que pode ser 50 vezes mais rápida que uma instrução interpretada,

como acontecia na KVM.

Conceitos Importantes

Page 16: Java para dispositivos móveis
Page 17: Java para dispositivos móveis

Profiles

– Permitem complementar uma configuração pela adição de classes que provêem

características 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, multimídia (sons), componentes de interface, etc.

Conceitos Importantes

Page 18: Java para dispositivos móveis

Principais Pacotes

• CLDC 1.1

• java.lang classes fundamentais para a linguagem Java;

• java.io I/O básico;

• java.util classes utilitárias para manipulação de Collections, data e hora;

• javax.microedition.io suporte ao Generic Connection Framework;

• MIDP 2.0

• javax.microedition.lcdui interface gráfica com usuário;

• javax.microedition.midlet suporte aos MIDlets;

• javax.microedition.lcdui.game desenvolvimento de jogos;

• javax.microedition.rms persistência de dados;

Tratando da implementação...

Page 19: Java para dispositivos móveis

• MIDlet

Um MIDlet é uma aplicação Java destinada a dispositivos móveis desenvolvido com a utilização do perfil MIDP da configuração CLDC construída para ser executada em celulares, smartphones ou em outros dispositivos que implementem o perfil MIDP

Todo dispositivo móvel tem um gerenciador de aplicativos (AM – Application Manager) que controla os aplicativos a serem instalados, onde serão armazenados e como serão executados.

A comunicação do gerenciador com o MIDlet acontece pela classe MIDlet do pacote javax.microedition.midlet.MIDlet.

Portanto, o aplicativo deve herdar esta classe, pois ela contém os métodos que inicializam, resumem, interrompem a execução e destroem o MIDlet.

Entendendo o funcionamento de uma aplicação

Page 20: Java para dispositivos móveis

Uma aplicação é iniciada quando o AM invoca o método startApp(), colocando a aplicação no

modo ativo.

Enquanto estiver executando, ela pode ser pausada pelo AM através do método pauseApp(). Isso pode ocorrer, por exemplo, quando uma chamada for recebida ou o próprio usuário pausar a aplicação.

E quando a aplicação é encerrada ela passa para o estado destruído através do método destroyApp(), que limpa todos os recursos utilizados para depois fechar a aplicação.

Estes três métodos tratam da comunicação que parte do gerenciador de aplicativos para o MIDlet.

Além destes, existem outros três métodos, porém, com a comunicação partindo do MIDlet para o gerenciador, são 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

Ciclo de vida do MIDlet

Page 21: Java para dispositivos móveis
Page 22: Java para dispositivos móveis

• JME – Pacotes Adicionais

• Wireless Messaging API 2.0.

• Web Service Access for JME.

• PDA Profile for JME.

• Bluetooth.

• Mobile 3D Graphics.

• Mobile Media.

JME – Pacotes Adicionais

Page 23: Java para dispositivos móveis

• Quanto mais funcionalidades incluirmos mais difícil será aprender, utilizar e dar suporte ao produto.

• Implemente apenas 20% das funcionalidades identificadas que você atenderá a 80% do interesse do público consumidor.

• Consumidores raramente lêem documentação, logo, faça com que as suas ações sejam previstas facilmente.

• Minimize as quantidades de navegações e interações necessárias 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 ações, caso contrário ele pressionará repetidamente as teclas ou assumirá que o dispositivo não está funcionando.

• Faça com que alguma coisa na tela indique que o dispositivo está em funcionamento. Pode ser a emissão de um aviso sonoro ou uma animação.

Projetando aplicativos

Page 24: Java para dispositivos móveis

• Consumidores sempre devem ter a capacidade de interromper algo que está sendo feito ou desligar o aparelho.

• Consumidores devem responder apenas àquelas questões absolutamente necessárias.

• Confirmações desnecessárias e mensagens de erro que depreciam a experiência do consumidor devem ser evitadas.

• Cheque, periodicamente, o seu projeto com os projetos dos concorrentes.

• Quando idealizar um projeto para um dispositivo móvel lembre-se o quanto é fácil operar um aparelho de TV ou um forno de microondas.

Projetando aplicativos

Page 25: Java para dispositivos móveis

• Android

• SO Linux embarcado criado pelo Google

• Criação de uma nova Maquina Virtual (Dalvik)

• Escapar do Modelo de Licenciamento do J2ME

• Delega ao sistema operacional o isolamento de memória e o suporte a threads

• Não 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

• Implementações de JavaSE e JavaME

O Futuro do Desenvolvimento Mobile

Page 26: Java para dispositivos móveis

O que é o JavaFX?

O JavaFX amplia a sua experiência na Web ao fornecer mídia e conteúdo de alta qualidade em todas as telas que você

utilizar. Na condição de usuário, você conseguirá executar aplicativos JavaFX em um navegador ou os arrastará e soltará

na área de trabalho. É uma interface dinâmica!

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 revolucionária tecnologia de apresentação que o JavaFX proporciona, a fim de criar

agradáveis experiências visuais.

Destaques do JavaFX:

• Permite que os usuários 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 preferências 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 gráficos vetoriais, animação, áudio e vídeo em um aplicativo

repleto de recursos, interação e imersão.

Page 27: Java para dispositivos móveis
Page 28: Java para dispositivos móveis

• IDE’s

• Ferramentas

• API’s

Como começar?

Page 29: Java para dispositivos móveis

A Tecnologia Java muito Além do Convencional ...

Page 30: Java para dispositivos móveis

O que é mais comum?

• Aplicações

• WEB

• DESKTOP

• MOBILE

Sistemas de armazenamento de dados

Sistema de Integração de Serviços e tecnologias

Page 31: Java para dispositivos móveis

Tecnologias comumente utilizadas...

No entanto...

A Tecnologia Java é muito mais que isso...

Page 32: Java para dispositivos móveis

• Hoje vamos tratar de :

Page 33: Java para dispositivos móveis
Page 34: Java para dispositivos móveis

JAVA TV

Page 35: Java para dispositivos móveis

• Plataforma para Desenvolvimento para televisão digital interativa

• Desenvolvido pela SUN junto com várias empresas do ramo

• Por ser Java • Possui alto nível de controle • Alta flexibilidade sobre o comportamento das

aplicações

• Extensão da plataforma Java

• Construída em cima da tecnologia JME

• Visa atender as funcionalidades dos set up boxes

• Stremming de áudio/vídeo • Acesso mediante à identificação • Acesso às informações e serviços • Controle e troca do canal do receptor • Controle das interfaces gráficas

Page 36: Java para dispositivos móveis

Java TV

• A API provê recursos de uso geral

• Alto nível de abstração

• Perde-se a necessidade do conhecimento da camada de mais baixo nível

• Protocolos de Transmissão

• Redes transmissoras

• Alguns desses recursos são:

• Seleção de Serviços

• Acesso e controle de banco de dados

• Controle do Media Player Interno do receptor

• Acesso aos dados transmitidos através do sinal da tv.

• Além de outros recursos que estão fora da especificação:

• Suporte a um canal de retorno – pacote java.net

• Reprodução de conteúdo multimídia - JMF (Java Media Framework)

• Entre os recursos não disponibilizados pelo Java TV :

• Falta de sistema de gerenciamento de recursos

• Falta de um sistema de arquivos

Page 37: Java para dispositivos móveis

Java TV

• As aplicações Java desenvolvidas para JavaTV são chamadas de Xlets

• Prover um modo de controle rígido do seu ciclo de vida

• Existem 4 tipos básicos de aplicativos:

• EPGs – Eletronic Program Guides -> Guias da programação do canal/rede

• Aplicações dependentes de programa • Ex. Enquete em um programa de auditório

• Aplicações independentes • Ex. Programa que mostra a cotação da bolsa

de valores.

• Onde se mantém ativa mesmo trocando-se de canal

• Propagandas

• Compras Online

Page 38: Java para dispositivos móveis

Java TV

Page 39: Java para dispositivos móveis

Blue-ray Disc JAVA BD-J

Page 40: Java para dispositivos móveis

• O Blue-ray

• Novo formato de mídia para aparelhos eletrônico, computadores e vídeo-games (PS3)

• Excelente qualidade de áudio e vídeo

• Alta capacidade de armazenamento

• Single Layer – 25Gb

• Double layer – 50 Gb

• Multi-layer – 200 Gb

Page 41: Java para dispositivos móveis

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

• A plataforma JAVA para os leitores de Blue-Ray é chamada de BD-J

• O padrão BD-J também é parte da plataforma JavaME

• Antes de iniciarmos...

• Alguns conceitos básicos: • Títulos – Unidade organizadora de

conteúdos de vídeo

• Menu - Parte interativa da aplicação, responde aos eventos do controle remoto

Page 42: Java para dispositivos móveis

• O que é possível fazer com BD-J ?

• Desenhar textos na tela. Incluindo conteúdo dentro do quadro que está sendo exibido.

• Ex. Processar legendas

• Desenhar formas ou imagens na tela em cima do conteúdo do vídeo que é exibido no momento.

• Desenhar e animar as imagens na tela de um jogo interativo.

• Criar botões animados com vários tipos de efeitos

• Criar menus altamente interativos que permitem ao usuário selecionar um título, um capítulo, ou quaisquer outras opções avançadas como conteúdo extra.

• Outras idéias ...

• Menus elaborados

• Interatividade In-movie

• Jogos

• Persistência de Informações

• Download de conteúdo

• Comercio eletrônico associado com o filme

• Download de legendas

• Eventos sincronizados

• Compartilhamento de experiências em comunidades

• Versatilidade de design

• Internet Banking

Page 43: Java para dispositivos móveis

• Uma plataforma - > Dois Modelos

High-Definition Movie (HDMV) – Modelo criado através da extensão de

funcionalidades do DVD.

Blu-ray Disc Java (BD-J) – Modelo baseado em uma plataforma

completamente programável com suporte a conectividade e novos modos de

interação.

Page 44: Java para dispositivos móveis
Page 45: Java para dispositivos móveis
Page 46: Java para dispositivos móveis

Menus mais bem elaborados que podem ser abertos em cima do filme sem que haja a interrupção do mesmo

Page 47: Java para dispositivos móveis
Page 48: Java para dispositivos móveis
Page 49: Java para dispositivos móveis
Page 50: Java para dispositivos móveis
Page 51: Java para dispositivos móveis
Page 52: Java para dispositivos móveis
Page 53: Java para dispositivos móveis

• Um mercado potencial de mais de 1 Bilhão de aparelhos novos rodando a

Máquina Virtual Java (JVM);

• Milhares de títulos que podem ser incrementados com Java, abrindo um grande

mercado para desenvolvedores;

• Uma nova plataforma para comercio eletrônico interativo, onde você pode

comprar os objetos que estão aparecendo no filme!

• Novo método de integração entre os usuários sem a necessidade do computado.

Impactos no mercado...

Page 54: Java para dispositivos móveis

Java Games 3D

Page 55: Java para dispositivos móveis
Page 56: Java para dispositivos móveis
Page 57: Java para dispositivos móveis
Page 58: Java para dispositivos móveis
Page 59: Java para dispositivos móveis
Page 60: Java para dispositivos móveis
Page 61: Java para dispositivos móveis
Page 62: Java para dispositivos móveis
Page 63: Java para dispositivos móveis
Page 64: Java para dispositivos móveis

Sistemas Embarcados com Java

Page 65: Java para dispositivos móveis

O que são 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 propósito geral, como o computador pessoal, um sistema embarcado realiza um conjunto de tarefas predefinidas, geralmente com requisitos específicos.

Já que o sistema é dedicado a tarefas específicas, através de engenharia pode-se otimizar o projeto reduzindo tamanho, recursos computacionais e custo do produto.

Page 66: Java para dispositivos móveis

Ok! E como a Tecnologia Java entra nesse contexto ?

Alguns exemplos muito interessantes são:

• SUN SPOT

• JSTAMP

Page 67: Java para dispositivos móveis
Page 68: Java para dispositivos móveis

JStamp Development Station

Page 69: Java para dispositivos móveis

Exemplos...

Page 70: Java para dispositivos móveis

• Sun Small Programmable Object Technology

• Um elemento de rede de sensores sem fio (RSSF), desenvolvido pela Sun Microsystems

• Sua programação Baseia-se na máquina virtual JME

• O dispositivo completo, inteiramente montado, cabe em uma palma de mão normal

• Núcleo 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 memória Flash;

• interface de rádio IEE 802.15.4 (sobre a qual usualmente se implementa o ZigBee - um conjunto de

especificações para a comunicação sem-fio entre dispositivos eletrônico), a 2.4 GHz, com antena

integrada;

• Interface USB.

Sun SPOT

Page 71: Java para dispositivos móveis

Placa de Sensor

• Medidor de aceleração (ou acelerômetro) de 3 eixos, 2G/6G;

• Sensor de temperatura;

• Sensor de luz;

• 8 Leds tri-colores;

• 6 entradas analógicas;

• 2 sensores de movimento;

• 5 pinos para I/O de propósito geral, e 4 pinos de saída de alta corrente.

Bateria

• Bateria recarregável de lítio de 3.6 V e 750 mAh;

• Modo de inatividade (ou sleep) profundo a 48 uA;

• Gerenciamento automático de bateria provido pelo software.

Sun SPOT

Page 72: Java para dispositivos móveis

• Projeto Sun SPOT foi criado para incentivar o

desenvolvimento de novas aplicações e dispositivos.

• Ele é projetado desde o baixo nível para permitir que

programadores que nunca trabalharam com

dispositivos embutidos possam pensar além do

teclado, mouse e tela e escrever programas que

possam interagir uns com os outros.

• Um programador Java pode usar as ferramentas

padrão de desenvolvimento Java, como o NetBeans

para escrever código.

Page 73: Java para dispositivos móveis
Page 74: Java para dispositivos móveis
Page 75: Java para dispositivos móveis
Page 76: Java para dispositivos móveis

• Temos PDAs, telefones celulares e MP3 players.

• Talvez você possa projetar os próximos dispositivos eletrônicos para consumo pessoal.

• Quer construir um dispositivo que reconheça movimentos e seja capaz de interagir com brinquedos robóticos?

• Talvez a sua empresa está tendo um problema de transporte de produtos frágeis 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 não a luz se apaga quando você fecha a porta da geladeira.

Sun SPOTS fornecer uma plataforma para tudo isso e muito mais...

Page 77: Java para dispositivos móveis

Dependerá somente da sua imaginação....

E as aplicações?

Page 78: Java para dispositivos móveis

Dúvidas ?

Page 79: Java para dispositivos móveis

Java para Dispositivos Móveis

J. Gabriel Lima

[email protected]

http://jgabriellima.wordpress.com

Laboratório de Planejamento de Redes de Alto Desempenho - LPRAD

Empresa Júnior de Engenharia de Computação /UFPa