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
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
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.
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
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
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.
A Plataforma JME -
Arquitetura
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;
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.
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
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.
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
Conceitos Importantes
 Connected Limited Device Configuration (CLDC)


 •   java.io;
 •   java.lang;
 •   java.util.
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.
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.
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.
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;
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.
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
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 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

  • 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.
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
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.
Como começar?
• IDE’s
• Ferramentas
• API’s
A Tecnologia Java muito Além
     do Convencional ...
O que é mais comum?


• Aplicações
  •   WEB
  •   DESKTOP
  •   MOBILE
     Sistemas de armazenamento de dados
     Sistema de Integração de Serviços e tecnologias
Tecnologias comumente utilizadas...




No entanto...

                A Tecnologia Java é muito mais que isso...
• Hoje vamos tratar de :
JAVA TV
• 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
• 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
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
Java TV
Blue-ray Disc JAVA
       BD-J
• 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
•   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
•   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
•   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.
Menus mais bem elaborados que podem ser abertos em cima do filme sem que
haja a interrupção do mesmo
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.
Java Games 3D
Sistemas Embarcados com Java
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.
Ok! E como a Tecnologia Java entra nesse
contexto ?
Alguns exemplos muito interessantes são:


• 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 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
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.
• 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.
• 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...
E as aplicações?
Dependerá somente da sua imaginação....
Dúvidas ?
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

Java para dispositivos móveis

  • 1.
    Java para DispositivosMó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 quejava? • 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 devemcrescer 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 asOportunidades 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.
  • 7.
    A Plataforma JME- Arquitetura
  • 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 ConnectedLimited 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
  • 13.
    Conceitos Importantes ConnectedLimited Device Configuration (CLDC) • java.io; • java.lang; • java.util.
  • 14.
    Conceitos Importantes ConnectedDevice 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áquinasvirtuais: – 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.
  • 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... PrincipaisPacotes • 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 funcionamentode 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 vidado 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
  • 22.
    JME – PacotesAdicionais • 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 doDesenvolvimento 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.
  • 28.
    Como começar? • IDE’s •Ferramentas • API’s
  • 29.
    A Tecnologia Javamuito Além do Convencional ...
  • 30.
    O que émais comum? • Aplicações • WEB • DESKTOP • MOBILE  Sistemas de armazenamento de dados  Sistema de Integração de Serviços e tecnologias
  • 31.
    Tecnologias comumente utilizadas... Noentanto... A Tecnologia Java é muito mais que isso...
  • 32.
    • Hoje vamostratar de :
  • 34.
  • 35.
    • Plataforma paraDesenvolvimento 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 APIprovê 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 • Asaplicaçõ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
  • 38.
  • 39.
  • 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.
  • 46.
    Menus mais bemelaborados que podem ser abertos em cima do filme sem que haja a interrupção do mesmo
  • 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.
  • 54.
  • 64.
  • 65.
    O que sãosistemas 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 comoa Tecnologia Java entra nesse contexto ? Alguns exemplos muito interessantes são: • SUN SPOT • JSTAMP
  • 68.
  • 69.
  • 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 deSensor • 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 SunSPOT 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.
  • 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...
  • 77.
    E as aplicações? Dependerásomente da sua imaginação....
  • 78.
  • 79.
    Java para DispositivosMó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