SlideShare uma empresa Scribd logo
1 de 79
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Programação Web - CSS
Programação Web - CSSProgramação Web - CSS
Programação Web - CSSMauro Pereira
 
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1Carlos Eugenio Torres
 
Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Ricardo Longa
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
Slides - minicurso app inventor
Slides - minicurso app inventorSlides - minicurso app inventor
Slides - minicurso app inventorMichel de Souza
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01 Léo Dias
 
Sistema Operacional Android
Sistema Operacional AndroidSistema Operacional Android
Sistema Operacional AndroidLucas Damasceno
 
Introdução a dispositivos móveis.
Introdução a dispositivos móveis.Introdução a dispositivos móveis.
Introdução a dispositivos móveis.Eduardo Lagares
 
Aula: Características dos dispositivos móveis
Aula: Características dos dispositivos móveisAula: Características dos dispositivos móveis
Aula: Características dos dispositivos móveisJanynne Gomes
 
Internet das Coisas - Conectando você e tudo ao seu redor
Internet das Coisas - Conectando você e tudo ao seu redorInternet das Coisas - Conectando você e tudo ao seu redor
Internet das Coisas - Conectando você e tudo ao seu redorAndré Curvello
 
Apostila Aplicativos informatizados
Apostila Aplicativos informatizadosApostila Aplicativos informatizados
Apostila Aplicativos informatizadosAndréia Santos
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxMarceloRosenbrock1
 

Mais procurados (20)

Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
Android
AndroidAndroid
Android
 
Curso javascript básico
Curso javascript básicoCurso javascript básico
Curso javascript básico
 
Programação Web - CSS
Programação Web - CSSProgramação Web - CSS
Programação Web - CSS
 
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Minicurso de App Inventor
Minicurso de App InventorMinicurso de App Inventor
Minicurso de App Inventor
 
Slides - minicurso app inventor
Slides - minicurso app inventorSlides - minicurso app inventor
Slides - minicurso app inventor
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
Sistema Operacional Android
Sistema Operacional AndroidSistema Operacional Android
Sistema Operacional Android
 
Introdução a dispositivos móveis.
Introdução a dispositivos móveis.Introdução a dispositivos móveis.
Introdução a dispositivos móveis.
 
Aula: Características dos dispositivos móveis
Aula: Características dos dispositivos móveisAula: Características dos dispositivos móveis
Aula: Características dos dispositivos móveis
 
Internet das Coisas - Conectando você e tudo ao seu redor
Internet das Coisas - Conectando você e tudo ao seu redorInternet das Coisas - Conectando você e tudo ao seu redor
Internet das Coisas - Conectando você e tudo ao seu redor
 
Apostila Aplicativos informatizados
Apostila Aplicativos informatizadosApostila Aplicativos informatizados
Apostila Aplicativos informatizados
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptx
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 

Destaque

Hackeando a Internet das Coisas com Javascript
Hackeando a Internet das Coisas com JavascriptHackeando a Internet das Coisas com Javascript
Hackeando a Internet das Coisas com JavascriptJoão Gabriel Lima
 
Mercado de Trabalho em Computação - Perfil Analista de Sistemas e Programador
Mercado de Trabalho em Computação - Perfil Analista de Sistemas e ProgramadorMercado de Trabalho em Computação - Perfil Analista de Sistemas e Programador
Mercado de Trabalho em Computação - Perfil Analista de Sistemas e ProgramadorJoão Gabriel Lima
 
Encoder para sensoriamento de posições
Encoder para sensoriamento de posiçõesEncoder para sensoriamento de posições
Encoder para sensoriamento de posiçõesmanelcci
 
Tutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaTutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaPaulo César M Jeveaux
 
Pré-processamento em Big Data
Pré-processamento em Big DataPré-processamento em Big Data
Pré-processamento em Big DataJoão Gabriel Lima
 

Destaque (7)

Hackeando a Internet das Coisas com Javascript
Hackeando a Internet das Coisas com JavascriptHackeando a Internet das Coisas com Javascript
Hackeando a Internet das Coisas com Javascript
 
Mercado de Trabalho em Computação - Perfil Analista de Sistemas e Programador
Mercado de Trabalho em Computação - Perfil Analista de Sistemas e ProgramadorMercado de Trabalho em Computação - Perfil Analista de Sistemas e Programador
Mercado de Trabalho em Computação - Perfil Analista de Sistemas e Programador
 
Encoder para sensoriamento de posições
Encoder para sensoriamento de posiçõesEncoder para sensoriamento de posições
Encoder para sensoriamento de posições
 
Tutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaTutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com Java
 
Apostila automacao-senai-pe
Apostila automacao-senai-peApostila automacao-senai-pe
Apostila automacao-senai-pe
 
Ctc m10 v1_t
Ctc m10 v1_tCtc m10 v1_t
Ctc m10 v1_t
 
Pré-processamento em Big Data
Pré-processamento em Big DataPré-processamento em Big Data
Pré-processamento em Big Data
 

Semelhante a Java para dispositivos móveis

Introdução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos MóveisIntrodução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos Móveisigorpimentel
 
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_juniorJuarez Junior
 
Introdução a JavaME
Introdução a JavaMEIntrodução a JavaME
Introdução a JavaMEfrgo
 
Aplicações Móveis com J2ME
Aplicações Móveis com J2MEAplicações Móveis com J2ME
Aplicações Móveis com J2MEelliando dias
 
Aplicativos Moveis Com J2ME
Aplicativos Moveis Com J2MEAplicativos Moveis Com J2ME
Aplicativos Moveis Com J2MEJoão Longo
 
Java Micro Edition Applied
Java Micro Edition AppliedJava Micro Edition Applied
Java Micro Edition Appliedmarcelobeckmann
 
18804691 java-for-s60-java-me-and-msa-for-smart-phones
18804691 java-for-s60-java-me-and-msa-for-smart-phones18804691 java-for-s60-java-me-and-msa-for-smart-phones
18804691 java-for-s60-java-me-and-msa-for-smart-phonesJuarez Junior
 
Introdução a Java Micro Edition (Java ME)
Introdução a Java Micro Edition (Java ME)Introdução a Java Micro Edition (Java ME)
Introdução a Java Micro Edition (Java ME)elliando dias
 
Curso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosCurso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosLeonardo Melo Santos
 
Java Micro Edition
Java Micro EditionJava Micro Edition
Java Micro Editionjgbirk
 
Desenvolvimento aplicacoesdispositivosmoveis
Desenvolvimento aplicacoesdispositivosmoveisDesenvolvimento aplicacoesdispositivosmoveis
Desenvolvimento aplicacoesdispositivosmoveisJuarez Junior
 
18803468 desenvolvimento-de-aplicacoes-para-dispositivos-moveis
18803468 desenvolvimento-de-aplicacoes-para-dispositivos-moveis18803468 desenvolvimento-de-aplicacoes-para-dispositivos-moveis
18803468 desenvolvimento-de-aplicacoes-para-dispositivos-moveisJuarez Junior
 
IBM Mobile Platform: Desenvolvimento de Aplicações Mobile
IBM Mobile Platform: Desenvolvimento de Aplicações MobileIBM Mobile Platform: Desenvolvimento de Aplicações Mobile
IBM Mobile Platform: Desenvolvimento de Aplicações MobileAlex Barbosa Coqueiro
 
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 2
Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 2Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 2
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 2Carlos Eugenio Torres
 
Introdução ao J2ME Conexão Java 2004
Introdução ao J2ME Conexão Java 2004Introdução ao J2ME Conexão Java 2004
Introdução ao J2ME Conexão Java 2004elliando dias
 
Apostila de J2ME versão 1.0.pdf
Apostila de J2ME versão 1.0.pdfApostila de J2ME versão 1.0.pdf
Apostila de J2ME versão 1.0.pdfJoberthSilva
 

Semelhante a Java para dispositivos móveis (20)

Introdução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos MóveisIntrodução a Programação de Dispositivos Móveis
Introdução a Programação de Dispositivos Móveis
 
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
20070131 mgjug-enterprise java-me_netbeans_mp_nokia_juarez_junior
 
Introdução a JavaME
Introdução a JavaMEIntrodução a JavaME
Introdução a JavaME
 
JavaME - Aula 1
JavaME - Aula 1JavaME - Aula 1
JavaME - Aula 1
 
Aplicações Móveis com J2ME
Aplicações Móveis com J2MEAplicações Móveis com J2ME
Aplicações Móveis com J2ME
 
Aplicativos Moveis Com J2ME
Aplicativos Moveis Com J2MEAplicativos Moveis Com J2ME
Aplicativos Moveis Com J2ME
 
Java Micro Edition Applied
Java Micro Edition AppliedJava Micro Edition Applied
Java Micro Edition Applied
 
18804691 java-for-s60-java-me-and-msa-for-smart-phones
18804691 java-for-s60-java-me-and-msa-for-smart-phones18804691 java-for-s60-java-me-and-msa-for-smart-phones
18804691 java-for-s60-java-me-and-msa-for-smart-phones
 
Introdução a Java Micro Edition (Java ME)
Introdução a Java Micro Edition (Java ME)Introdução a Java Micro Edition (Java ME)
Introdução a Java Micro Edition (Java ME)
 
Curso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicosCurso de J2ME - Parte 01 - Conceitos básicos
Curso de J2ME - Parte 01 - Conceitos básicos
 
Java Micro Edition
Java Micro EditionJava Micro Edition
Java Micro Edition
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
Minicurso Java Me
Minicurso Java MeMinicurso Java Me
Minicurso Java Me
 
Desenvolvimento aplicacoesdispositivosmoveis
Desenvolvimento aplicacoesdispositivosmoveisDesenvolvimento aplicacoesdispositivosmoveis
Desenvolvimento aplicacoesdispositivosmoveis
 
18803468 desenvolvimento-de-aplicacoes-para-dispositivos-moveis
18803468 desenvolvimento-de-aplicacoes-para-dispositivos-moveis18803468 desenvolvimento-de-aplicacoes-para-dispositivos-moveis
18803468 desenvolvimento-de-aplicacoes-para-dispositivos-moveis
 
IBM Mobile Platform: Desenvolvimento de Aplicações Mobile
IBM Mobile Platform: Desenvolvimento de Aplicações MobileIBM Mobile Platform: Desenvolvimento de Aplicações Mobile
IBM Mobile Platform: Desenvolvimento de Aplicações Mobile
 
O Mundo Wireless
O Mundo WirelessO Mundo Wireless
O Mundo Wireless
 
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 2
Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 2Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 2
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 2
 
Introdução ao J2ME Conexão Java 2004
Introdução ao J2ME Conexão Java 2004Introdução ao J2ME Conexão Java 2004
Introdução ao J2ME Conexão Java 2004
 
Apostila de J2ME versão 1.0.pdf
Apostila de J2ME versão 1.0.pdfApostila de J2ME versão 1.0.pdf
Apostila de J2ME versão 1.0.pdf
 

Mais de João Gabriel Lima

Deep marketing - Indoor Customer Segmentation
Deep marketing - Indoor Customer SegmentationDeep marketing - Indoor Customer Segmentation
Deep marketing - Indoor Customer SegmentationJoão Gabriel Lima
 
Aplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full StackAplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full StackJoão Gabriel Lima
 
Realidade aumentada com react native e ARKit
Realidade aumentada com react native e ARKitRealidade aumentada com react native e ARKit
Realidade aumentada com react native e ARKitJoão Gabriel Lima
 
Big data e Inteligência Artificial
Big data e Inteligência ArtificialBig data e Inteligência Artificial
Big data e Inteligência ArtificialJoão Gabriel Lima
 
Mineração de Dados no Weka - Regressão Linear
Mineração de Dados no Weka -  Regressão LinearMineração de Dados no Weka -  Regressão Linear
Mineração de Dados no Weka - Regressão LinearJoão Gabriel Lima
 
Segurança na Internet - Estudos de caso
Segurança na Internet - Estudos de casoSegurança na Internet - Estudos de caso
Segurança na Internet - Estudos de casoJoão Gabriel Lima
 
Segurança na Internet - Google Hacking
Segurança na Internet - Google  HackingSegurança na Internet - Google  Hacking
Segurança na Internet - Google HackingJoão Gabriel Lima
 
Segurança na Internet - Conceitos fundamentais
Segurança na Internet - Conceitos fundamentaisSegurança na Internet - Conceitos fundamentais
Segurança na Internet - Conceitos fundamentaisJoão Gabriel Lima
 
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...João Gabriel Lima
 
Mineração de dados com RapidMiner + WEKA - Clusterização
Mineração de dados com RapidMiner + WEKA - ClusterizaçãoMineração de dados com RapidMiner + WEKA - Clusterização
Mineração de dados com RapidMiner + WEKA - ClusterizaçãoJoão Gabriel Lima
 
Mineração de dados na prática com RapidMiner e Weka
Mineração de dados na prática com RapidMiner e WekaMineração de dados na prática com RapidMiner e Weka
Mineração de dados na prática com RapidMiner e WekaJoão Gabriel Lima
 
Visualizacao de dados - Come to the dark side
Visualizacao de dados - Come to the dark sideVisualizacao de dados - Come to the dark side
Visualizacao de dados - Come to the dark sideJoão Gabriel Lima
 
REST x SOAP : Qual abordagem escolher?
REST x SOAP : Qual abordagem escolher?REST x SOAP : Qual abordagem escolher?
REST x SOAP : Qual abordagem escolher?João Gabriel Lima
 
Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...
Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...
Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...João Gabriel Lima
 
E-trânsito cidadão - IPVA em suas mãos
E-trânsito cidadão - IPVA em suas mãosE-trânsito cidadão - IPVA em suas mãos
E-trânsito cidadão - IPVA em suas mãosJoão Gabriel Lima
 
[Estácio - IESAM] Automatizando Tarefas com Gulp.js
[Estácio - IESAM] Automatizando Tarefas com Gulp.js[Estácio - IESAM] Automatizando Tarefas com Gulp.js
[Estácio - IESAM] Automatizando Tarefas com Gulp.jsJoão Gabriel Lima
 
[Fapan] criando aplicações mobile híbridas com ionic framework
[Fapan] criando aplicações mobile híbridas com ionic framework[Fapan] criando aplicações mobile híbridas com ionic framework
[Fapan] criando aplicações mobile híbridas com ionic frameworkJoão Gabriel Lima
 

Mais de João Gabriel Lima (20)

Cooking with data
Cooking with dataCooking with data
Cooking with data
 
Deep marketing - Indoor Customer Segmentation
Deep marketing - Indoor Customer SegmentationDeep marketing - Indoor Customer Segmentation
Deep marketing - Indoor Customer Segmentation
 
Aplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full StackAplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full Stack
 
Realidade aumentada com react native e ARKit
Realidade aumentada com react native e ARKitRealidade aumentada com react native e ARKit
Realidade aumentada com react native e ARKit
 
JS - IA
JS - IAJS - IA
JS - IA
 
Big data e Inteligência Artificial
Big data e Inteligência ArtificialBig data e Inteligência Artificial
Big data e Inteligência Artificial
 
Mineração de Dados no Weka - Regressão Linear
Mineração de Dados no Weka -  Regressão LinearMineração de Dados no Weka -  Regressão Linear
Mineração de Dados no Weka - Regressão Linear
 
Segurança na Internet - Estudos de caso
Segurança na Internet - Estudos de casoSegurança na Internet - Estudos de caso
Segurança na Internet - Estudos de caso
 
Segurança na Internet - Google Hacking
Segurança na Internet - Google  HackingSegurança na Internet - Google  Hacking
Segurança na Internet - Google Hacking
 
Segurança na Internet - Conceitos fundamentais
Segurança na Internet - Conceitos fundamentaisSegurança na Internet - Conceitos fundamentais
Segurança na Internet - Conceitos fundamentais
 
Web Machine Learning
Web Machine LearningWeb Machine Learning
Web Machine Learning
 
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...
 
Mineração de dados com RapidMiner + WEKA - Clusterização
Mineração de dados com RapidMiner + WEKA - ClusterizaçãoMineração de dados com RapidMiner + WEKA - Clusterização
Mineração de dados com RapidMiner + WEKA - Clusterização
 
Mineração de dados na prática com RapidMiner e Weka
Mineração de dados na prática com RapidMiner e WekaMineração de dados na prática com RapidMiner e Weka
Mineração de dados na prática com RapidMiner e Weka
 
Visualizacao de dados - Come to the dark side
Visualizacao de dados - Come to the dark sideVisualizacao de dados - Come to the dark side
Visualizacao de dados - Come to the dark side
 
REST x SOAP : Qual abordagem escolher?
REST x SOAP : Qual abordagem escolher?REST x SOAP : Qual abordagem escolher?
REST x SOAP : Qual abordagem escolher?
 
Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...
Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...
Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...
 
E-trânsito cidadão - IPVA em suas mãos
E-trânsito cidadão - IPVA em suas mãosE-trânsito cidadão - IPVA em suas mãos
E-trânsito cidadão - IPVA em suas mãos
 
[Estácio - IESAM] Automatizando Tarefas com Gulp.js
[Estácio - IESAM] Automatizando Tarefas com Gulp.js[Estácio - IESAM] Automatizando Tarefas com Gulp.js
[Estácio - IESAM] Automatizando Tarefas com Gulp.js
 
[Fapan] criando aplicações mobile híbridas com ionic framework
[Fapan] criando aplicações mobile híbridas com ionic framework[Fapan] criando aplicações mobile híbridas com ionic framework
[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.
  • 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 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
  • 13. Conceitos Importantes Connected Limited Device Configuration (CLDC) • java.io; • java.lang; • java.util.
  • 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.
  • 27.
  • 28. Como começar? • IDE’s • Ferramentas • API’s
  • 29. A Tecnologia Java muito 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... No entanto... A Tecnologia Java é muito mais que isso...
  • 32. • Hoje vamos tratar de :
  • 33.
  • 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.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 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
  • 67.
  • 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...
  • 77. E as aplicações? Dependerá somente da sua imaginação....
  • 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