[Fapan] criando aplicações mobile híbridas com ionic framework
Java para dispositivos móveis
1. Java para Dispositivos Móveis
J. Gabriel Lima
gabriel@ecomp.eng.br
http://jgabriellima.wordpress.com
Laboratório de Planejamento de Redes de Alto Desempenho LPRAD
Empresa Júnior de Engenharia de Computação /UFPa
2. Roteiro
• 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
3. Por que Java?
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.
4. Aplicações móveis devem crescer 102% ao ano
• 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
5. Onde estão as Oportunidades de Negócio?
• Games
• Entretenimento em Geral
• Serviços
• Pagamentos, Consultas e meio de identificação
• Conteúdo
• Provedor de Noticia e Notificações
6. Plataformas Java
• 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.
8. A Plataforma JME - Estrutura
• 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;
9. Conceitos Importantes
• 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.
10. Conceitos Importantes
• 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
11. Conceitos Importantes
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.
12. Conceitos Importantes
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
14. Conceitos Importantes
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.
15. Conceitos Importantes
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.
16.
17. Conceitos Importantes
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.
18. Tratando da implementação...
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;
19. Entendendo o funcionamento de
uma aplicação
• 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.
20. Ciclo de vida do MIDlet
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
21.
22. 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.
23. Projetando aplicativos
• 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.
24. Projetando aplicativos
• 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.
25. O Futuro do Desenvolvimento
Mobile
• 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
26. 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.
35. • 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
36. • A API provê recursos de uso geral
Java TV
• 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
37. 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
40. • 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
41. • 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
42. • O que é possível fazer com BD-J ? • Outras idéias ...
• Menus elaborados
• Desenhar textos na tela. Incluindo conteúdo
dentro do quadro que está sendo exibido. • Interatividade In-movie
• Ex. Processar legendas
• Jogos
• Desenhar formas ou imagens na tela em cima
do conteúdo do vídeo que é exibido no • Persistência de Informações
momento.
• Download de conteúdo
• Desenhar e animar as imagens na tela de um
jogo interativo. • Comercio eletrônico associado com o
filme
• Criar botões animados com vários tipos de
efeitos • Download de legendas
• Eventos sincronizados
• Criar menus altamente interativos que
permitem ao usuário selecionar um título, um
• Compartilhamento de experiências
capítulo, ou quaisquer outras opções em comunidades
avançadas como conteúdo extra.
• Versatilidade de design
• Internet Banking
43. • 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.
44.
45.
46. Menus mais bem elaborados que podem ser abertos em cima do filme sem que
haja a interrupção do mesmo
47.
48.
49.
50.
51.
52.
53. Impactos no mercado...
• 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.
65. 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.
66. Ok! E como a Tecnologia Java entra nesse
contexto ?
Alguns exemplos muito interessantes são:
• SUN SPOT
• JSTAMP
70. Sun SPOT
• 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.
71. Sun SPOT
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.
72. • 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.
73.
74.
75.
76. • 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...
79. Java para Dispositivos Móveis
J. Gabriel Lima
gabriel@ecomp.eng.br
http://jgabriellima.wordpress.com
Laboratório de Planejamento de Redes de Alto Desempenho - LPRAD
Empresa Júnior de Engenharia de Computação /UFPa