SlideShare uma empresa Scribd logo
1 de 43
Agenda
Parte 2
•   Introdução a tecnologia Java
•   Plataformas Java
•   Ambiente de execução Java
•   Plataforma JavaME
•   Arquitetura
•   Configurações e perfis
Introdução a Tecnologia Java
Histórico do Java
• A tecnologia Java iniciou em dispositivos embarcados (*7 (Star
  Seven))
• A partir de 1997 9 iniciou s um trabalho para definir uma nova
                 -8        -e
  plataforma Java para dispositivos móveis
• EmbeddedJava: primeira especificação envolvendo dispositivos
  embarcados
• PersonalJava: 89/99, pai do JavaME
• Plataforma JavaME lançada em
  99/2000
Plataforma Java
Especificações ou Edições
Ambiente de Execução Java

• “Write once, run anywhere”
• Máquina Virtual Java: ambiente que torna a linguagem
  independente de arquitetura
Ambiente de Execução Java
                                                       Código
                                                       Fonte

                                Arquivo Binário
                                  (Pentium)
Código                            01010101
Fonte
                                  HW Pentium
                                                                               Interpretador
         Compilador (Pentium)
                                Arquivo Binário                                HW Pentium
                                                                    Java
                                  (PowerPC)                         Bytecode
                                  01010101

                                                                       J
                                  HW PowerPC
         Compilador (PowerPC)                                                  Interpretador

                                                                               HW PowerPC
                                Arquivo Binário
                                                  Compilador Java
                                    (Unix)
                                  01010101
         Compilador (Unix)         HW Unix                                     Interpretador

                                                                                 HW Unix
Plataforma JavaME
Definição
• Criada pela Sun Microsystems na forma de especificação em
  2000
• Coleção de APIs para o desenvolvimento de aplicações para
  dispositivos móveis na linguagem Java
   – Baseado no Java Runtime Environment 1.3
• Organizado em subconjuntos de configurações e perfis de
  APIs
   – Configurações: classes (recursos básicos)
   – Perfis: subclasses de configurações (recursos médios e altos)
• Apoiado pela maioria dos fabricantes
   – Nokia, Sony-Ericsson, Motorola, Samsung, LG, . . .
• O número de dispositivos (celulares) com a tecnologia é
  imenso
   – + 2 bilhões de aparelhos celulares
Plataforma JavaME
Definição
Plataforma JavaME
Arquitetura
Plataforma JavaME
Configurações e Perfis
Configurações
Configuration Limited Device Profile - CLDC 1.1
• Herança de J2SE
    – java.lang, java.io e java.util
•   Novidades: javax.microedition
•   Diferenças: Modelo mais simplificado
•   Requisitos
•   Novas APIs
    – Rede, segurança, persistência, etc.
• Requisitos
    – 128 kb de memória não volátil
    – 32 kb de memória volátil
    – Acesso ao sistema operacional
Perfis
Modelos de Aplicação
• Computador: Application – Stand-alone
   – Sobre um PC
• Web: Applet
   – Sobre um navegador Web
• Servidor: Servlet
   – Sobre um servidor remoto
• Set-top Box: Xlet
   – Sobre um setop box
• Celular: MIDlet
   – Sobre um dispositivo móvel
Perfis
Mobile Information Device Profile - MIDP 2.1
• Modelo de Aplicação – MIDlet Suite
• Ciclo de vida do MIDlet
• User interface API (LCDUI)
• Armazenamento de registros - RMS API
• Protocolos e funcionalidades avançadas de
  rede, incluindo conexões seguras
• API de jogos e mídia
• Política de segurança e assinatura de código
• Empacotamento de aplicativos e
  provisionamento sobre o ar (OTA)
Ambiente de Desenvolvimento
Ferramentas
• Mínimo
   – JDK (Java Development Kit)
   – SDKs (Wireless Toolkit, SDKs de
     fabricantes)
• Recomendado
   – JDK + SDK
   – IDEs (Eclipse + EclipseME
     plugin, Netbeans + Mobility
     Pack)
   – Dispositivo real
• Dispositivo real
   – Telefones celulares, PDAs,
     Smartphones, etc.
Ambiente de Desenvolvimento
Ferramentas
Ambientes de Desenvolvimento
Sun Wireless Toolkit 2.5/3.0
• Kit de ferramentas para a criação de aplicativos
  MIDP criado pela Sun
• Três componentes principais
   – KToolbar: automação de tarefas envolvidas na criação
     de aplicativos MIDP
   – Emulator: simulador de um celular
   – Conjunto de utilitários: console, utilitários de
     criptografia, assinatura, etc.
• Funcionalidades
   – Build e empacotamento de classes: Compilação, pré-
     verificação, empacotamento
   – Execução e monitoramento: execução, instalação,
     monitor de memória, profiler de rede
   – Assinatura de Suite de MIDlets
      • Assinatura criptográfica para testes em domínios de
        proteção diferentes
Processo de Desenvolvimento
Codificação
                        • Composto de etapas a
        Desenho
                          serem executadas sobre
                          uma aplicação sendo
       Codificação
                          desenvolvida
       Compilação       • Pode ser gerenciado por
                          uma ferramenta de
                          desenvolvimento integrado
      Pré-verificação
                          – Ex: Eclipse, Netbeans, WTK,
                            dentre outras.
      Empacotamento

          Testes

        Instalação
Processo de Desenvolvimento
Desenho
                       • Definição da arquitetura e
       Desenho
                         desenho das interfaces de
                         usuário (GUIs)
      Codificação
                       • Opções de arquitetura
      Compilação          – Cliente/Servidor, P2P,
                            Standalone
     Pré-verificação   • Telas de navegação da
                         aplicação
     Empacotamento     • APIs a serem usadas pela
                         aplicação
          Testes          – compatibilidade com o
                            dispositivo
       Instalação
Processo de Desenvolvimento
Codificação
                        • Criação da classe que
        Desenho
                          extende de MIDlet
       Codificação         – Acesso ao display
                        • Uso das APIs de acesso a
       Compilação         recursos do dispositivo
                        • HelloWorld.java
      Pré-verificação
                        • Uso de IDEs na codificação
                           – Ex: Eclipse, Netbeans
      Empacotamento

          Testes

        Instalação
Processo de Desenvolvimento
Compilação
                       • Criação do bytecode
       Desenho
                         representando a classe
                         Java
      Codificação
                       • HelloWorld.class
      Compilação       • Ferramenta javac do SDK

     Pré-verificação

     Empacotamento

         Testes

       Instalação
Processo de Desenvolvimento
Pré-verificação
                        • A pré v
                              - erificação de código
        Desenho
                          no JavaSE é feita na
                          própria JVM
       Codificação
                           – Tarefa imprópria para
                             dispositivos móveis
       Compilação
                        • JavaME: Dividida em duas
                          fases:
      Pré-verificação
                           – Durante a compilação
                           – Durante a execução no
      Empacotamento
                             dispositivo
                        • Ferramenta preverify do
          Testes
                          WTK
        Instalação
Processo de Desenvolvimento
Empacotamento
                       • Empacotamento da
       Desenho
                         aplicação em dois arquivos
      Codificação         – JAR: Java Archive
                          – JAD: Java Application
      Compilação            Description
                       • Ferramenta JAR no SDK
     Pré-verificação

     Empacotamento

                       MIDlet-Name: Hello World
         Testes        MIDlet-Version: 1.0
                       MIDlet-Vendor: Jim
                       MIDlet-Description: My First MIDlet suite
                       MIDlet-1: HelloWorld, null, greeting.HelloWorld
       Instalação
                       MIDlet-Jar-URL: HelloWorld.jar
                       MIDlet-Jar-Size: 1428
Processo de Desenvolvimento
Testes
                           • Execução de testes
           Desenho
                             automatizados ou
                             interativos sobre a
          Codificação
                             aplicação
                              – J2MEUnit
          Compilação
                           • Normalmente feitos sobre
         Pré-verificação     um emulador

     Empacotamento

             Testes

           Instalação
Processo de Desenvolvimento
Instalação
                       • Instalação da aplicação
       Desenho
                         empacotada no
                         emulador/dispositivo
      Codificação
                          – Arquivos JAR e JAD
      Compilação       • Métodos de instalação
                          – Cópia de arquivos JAR e JAD
     Pré-verificação        via USB ou BT/IrDA
                          – Pela Internet via OTA
     Empacotamento

         Testes

       Instalação
MIDP 2.1
Ciclo de Vida
• Métodos do ciclo
   – startApp(): Inicialização de recursos
   – pauseApp(): Chamado quando algum evento do dispositivo ocorre (ex:
     ligação telefônica)
       • Persistência, parada de processamento
   – destroyApp(boolean): Encerramento do aplicativo
• Métodos da aplicação
   – exitMidlet()
                                             new HelloMIDlet()

                                                                    pauseApp

                                                          Paused                Active
                                                                     startApp
public void exitMIDlet()
{
       destroyApp(true);                                           destroyApp
       notifyDestroyed();
}                                                                   Destroyed
Aplicação em JavaME
Hello World
import javax.microedition.lcdui.*;

public class MeuPrimeiroMIDlet extends MIDlet {

    public MeuPrimeiroMIDlet() {
           super();
           Display.getDisplay(this).setCurrent(
           new Alert(quot;Titulo Telaquot;, quot;Hello Worldquot;,
           null, AlertType.INFO));
    }

    protected void startApp() throws MIDletStateChangeException {
           System.out.println(quot;startAppquot;);
    }

    protected void pauseApp() {
          System.out.println(quot;pauseAppquot;);
    }

    protected void destroyApp(boolean arg0) throws
    MIDletStateChangeException {
          System.out.println(quot;destroyAppquot;);
    }
}
Aplicação em JavaME
Atividade Prática                 new HelloMidlet()

                                                          pauseApp
• Exercício 1: Criar um
                                               Paused                Active
  projeto JavaME no Eclipse                               startApp
  e codificar o Hello World
• Exercício 2: Rastrear o ciclo
                                                        destroyApp
  de vida de um MIDlet
                                                         Destroyed
JavaME
Tecnologias e APIs
JavaME
Padronização
• Objetivos
  – Minimizar fragmentação de plataforma, implementação e dispositivo


• Esforços
  – Java Technology for the Wireless Industry (JTWI) – JSR 185
  – Mobile Services Architecture (MSA) – JSR 248


• Java Community Process (JCP)

• Java Specification Request (JSR)
JavaME
Padronização


                                     ------
                                     ------
                              JCP    ---
                                     ----




      Grupos   Membros              Artefatos      Participação


       PMO     Spec Lead              Spec          Indivíduo

               Maintenance
         EC                                   RI    Empresa
                  Lead

         EG    Especialista             TCK         Entidade
JavaME
Padronização

       -----
                                                                                           TCK
       -----
       -----
                                                                                               RI
       ----




                                 First                  Public                      Final                Final
      Initiation                                                                                                         Maintenance
                                 Draft                  Draft                       Draft               Release

  Writing the              EG Formation           Review and              Preparing for Final       Submitting the     Review and
  proposal                                        Updates in the PD       Draft of Spec             Final Release of   updates in
                           Preparing the FD
                                                                                                    Spec, RI and TCK   Maintenance
  Submitting the                                  Approval of PD by       Delivery of TCK
                           Review and                                                                                  Versions
  proposal                                        EC                      and RI
                           Updates in the FD
                                                                                                                       Input of
  Review and                                                              Submitting Final
                           TCK and RI                                                                                  functionalities for
  acceptance by EC                                                        Draft to EC
                           Planning                                                                                    new Spec Proposal
                                                                          Approval by EC



  Participants:
  Public        Expert Group      Spec/Maintenance Leader   JCP Members   Executive Comittee
JavaME
Padronização de APIs
• JTWI: Java Technology for the Wireless Industry
• MSA: Mobile Service Architecture

 JTWI                MSA                     Novas JSRs
 JSR 30: CLDC 1.0    JSR 75: PIM/FC          JSR 253: MTA API
 JSR 37: MIDP 1.0    JSR 82: BTAPI           JSR 256: Sensor API
 JSR 139: CLDC 1.1   JSR 184: 3D Graphics    JSR 266: UMBA API
 JSR 118: MIDP 2.0   JSR 205: WMA 2.0        JSR 271: MIDP 3.0
 JSR 120: WMA 1.0    JSR 226: SVG            JSR 272: MBS API
 JSR 135: MMAPI      JSR 172: WS API         JSR 281: IMS API
                     JSR 177: SATSA          JSR 293: Location API 2.0
                     JSR 179: Location API   JSR 297: 3D 2.0
                     JSR 180: SIP API        JSR 304: MTA 2.0
                     JSR 211: CHAPI
                     JSR 229: PAPI
                     JSR 234: AMS
                     JSR 238: i18n
JavaME
Principais APIs
•   MIDP LCDUI: Alto e baixo níveis
•   API UI para jogos
•   RMS: Persistência de dados
•   GCF: framework genérico para conexões
     – HTTP, IRda, BT, FC,
•   MMAPI e AMS: Multimídia
•   WMA: SMS e MMS
•   WSA: Web Services, SOAP, XML
•   I18n: Internacionalização
•   LAPI: Localização
•   M3DG: Gráficos 3D
JavaME
LCD User Interface




  High level         Low level
JavaME
LCD User Interface




   Canvas:DatePicker




                              Canvas:Table
                       Form
JavaME
Game API
• Utiliza a API de baixo nível (GameCanvas) para a criação de
  cenários de jogos em JavaME
• Classes especializadas para o gerenciamento de camadas e
  atores
   – LayoutManager (gerenciador de cadamas), Layer (camada) e Sprite
     (personagem)




                                                                 Sprite

                                                                 Layer
JavaME
Game API
JavaME
Netbeans Game Builder
Evolução JavaME
Plataforma JavaFX
• Plataforma de software para o desenvolvimento de
  aplicações ricas sobre a internet (RIA) sobre uma grande
  variedade de dispositivos
   – Suporte a desktop, navegador Web e celulares
   – Suporte planejado a set-top box de TVs, consoles de jogos, tocadores Blu-
     ray, dentre outras
• Versão atual: 1.1.1 (Março de 2009)
• Integrado ao ambiente de execução Java
   – JRE e ao JavaME (dispositivos móveis)
• Linguagem declarativa JavaFX Script
• Concorrentes diretos
   – Adobe Flash Player, Adobe Integrated Runtime, OpenLaslo, MS Silverlight
Evolução JavaME
Plataforma JavaFX
Evolução JavaME
Plataforma JavaFX
Evolução JavaME
Plataforma JavaFX
JavaME
Tendências
• Curto e médio prazo
  – Crescimento das plataformas de smartphones
     • Dot NET Compact Framework, IPhone, Android, Symbian
  – Novas tecnologias JavaME
     • MSA incorporado nos dispositivos (SE Z750)
     • JavaFX Mobile, Mobile Ajax
        – Evolução: aplicações móveis serem executadas sobre a Web
     • Novas JSRs (IMS API, MIDP 3.0, etc.)
• Longo prazo
  – Convergência de configurações
     • CLDC + CDC -> JavaSE
  – Aumento da capacidade de processamento dos dispositivos
     • Fim do JavaME?
     • Ainda existem muitos dispositivos com JavaME
Links Interessantes

• Mobile and Embedded Community
  – http://community.java.net/mobileandembedded/
• PhoneME
  – https://phoneme.dev.java.net/
• Java Community Process
  – http://www.jcp.org/en/home/index
• ME Application Developers
  – https://meapplicationdevelopers.dev.java.net
• Site Oficial do JavaME – Sun
  – http://java.sun.com/javame/index.jsp
• Lista de discursão JavaME
  – j2me-list@soujava.dev.java.net

Mais conteúdo relacionado

Mais procurados

Implantação de Ambiente de Integração contínua para projeto que usa Java e C
Implantação de Ambiente de Integração contínua para  projeto que usa Java e CImplantação de Ambiente de Integração contínua para  projeto que usa Java e C
Implantação de Ambiente de Integração contínua para projeto que usa Java e CEliane Collins
 
Introdução a JavaME
Introdução a JavaMEIntrodução a JavaME
Introdução a JavaMEfrgo
 
Introdução a Plataforma Java EE
Introdução a Plataforma Java EEIntrodução a Plataforma Java EE
Introdução a Plataforma Java EEEder Magalhães
 
Simtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaSimtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaPwC
 
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
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração ContínuaScrumHalf Tool
 
BaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de SoftwareBaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de SoftwareAdriano Bertucci
 
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEGlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEBruno Borges
 

Mais procurados (15)

Implantação de Ambiente de Integração contínua para projeto que usa Java e C
Implantação de Ambiente de Integração contínua para  projeto que usa Java e CImplantação de Ambiente de Integração contínua para  projeto que usa Java e C
Implantação de Ambiente de Integração contínua para projeto que usa Java e C
 
Introdução a JavaME
Introdução a JavaMEIntrodução a JavaME
Introdução a JavaME
 
Introdução a Plataforma Java EE
Introdução a Plataforma Java EEIntrodução a Plataforma Java EE
Introdução a Plataforma Java EE
 
Android Fat Binaries
Android Fat BinariesAndroid Fat Binaries
Android Fat Binaries
 
Grails
GrailsGrails
Grails
 
Simtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaSimtecce 2011 Integracao Continua
Simtecce 2011 Integracao Continua
 
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
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
BaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de SoftwareBaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de Software
 
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEGlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EE
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 

Semelhante a JavaME Agenda Parte 2

Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkVitor Silva
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebCícero Quarto
 
Introdução ao Java_14Agosto2012.pdf
Introdução ao Java_14Agosto2012.pdfIntrodução ao Java_14Agosto2012.pdf
Introdução ao Java_14Agosto2012.pdfRubenManhia
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlManuel Lemos
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Aécio Costa
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android EmbarcadoOdair Sousa
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMAdriano Bertucci
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlDiego Tremper
 
Slides 04 - A Linguagem Java.pdf
Slides 04 - A Linguagem Java.pdfSlides 04 - A Linguagem Java.pdf
Slides 04 - A Linguagem Java.pdfJadna Almeida
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlDiego Tremper
 

Semelhante a JavaME Agenda Parte 2 (20)

Java
JavaJava
Java
 
ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
 
Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
 
Manual
ManualManual
Manual
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide Web
 
POO - Aula 1 introducao
POO - Aula 1   introducaoPOO - Aula 1   introducao
POO - Aula 1 introducao
 
Introdução ao java
Introdução ao javaIntrodução ao java
Introdução ao java
 
Introdução ao Java_14Agosto2012.pdf
Introdução ao Java_14Agosto2012.pdfIntrodução ao Java_14Agosto2012.pdf
Introdução ao Java_14Agosto2012.pdf
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!
 
Academia do programador
Academia do programadorAcademia do programador
Academia do programador
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android Embarcado
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
Aula 01 o que é java
Aula 01  o que é javaAula 01  o que é java
Aula 01 o que é java
 
Slides 04 - A Linguagem Java.pdf
Slides 04 - A Linguagem Java.pdfSlides 04 - A Linguagem Java.pdf
Slides 04 - A Linguagem Java.pdf
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Netbeans
NetbeansNetbeans
Netbeans
 

Mais de Waldir R. Pires Jr

Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Waldir R. Pires Jr
 
Proposta de projeto de pesquisa UFOP
Proposta de projeto de pesquisa UFOPProposta de projeto de pesquisa UFOP
Proposta de projeto de pesquisa UFOPWaldir R. Pires Jr
 
Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Waldir R. Pires Jr
 
Droid Emergency Context Service - Msc.
Droid Emergency Context Service - Msc.Droid Emergency Context Service - Msc.
Droid Emergency Context Service - Msc.Waldir R. Pires Jr
 
Droid Guide Prototype - Dresden - Germany
Droid Guide Prototype - Dresden - GermanyDroid Guide Prototype - Dresden - Germany
Droid Guide Prototype - Dresden - GermanyWaldir R. Pires Jr
 
IMS IP multimedia subsystem presentation
IMS IP multimedia subsystem presentationIMS IP multimedia subsystem presentation
IMS IP multimedia subsystem presentationWaldir R. Pires Jr
 
Desenvolvimento de Aplicações Móveis em Java - Parte 1
Desenvolvimento de Aplicações Móveis em Java - Parte 1Desenvolvimento de Aplicações Móveis em Java - Parte 1
Desenvolvimento de Aplicações Móveis em Java - Parte 1Waldir R. Pires Jr
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaWaldir R. Pires Jr
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaWaldir R. Pires Jr
 
Struts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogStruts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogWaldir R. Pires Jr
 
Desenvolvimento de Aplicações Móveis com JavaME
Desenvolvimento de Aplicações Móveis com JavaMEDesenvolvimento de Aplicações Móveis com JavaME
Desenvolvimento de Aplicações Móveis com JavaMEWaldir R. Pires Jr
 

Mais de Waldir R. Pires Jr (15)

Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014
 
Proposta de projeto de pesquisa UFOP
Proposta de projeto de pesquisa UFOPProposta de projeto de pesquisa UFOP
Proposta de projeto de pesquisa UFOP
 
Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014
 
Droid Emergency Context Service - Msc.
Droid Emergency Context Service - Msc.Droid Emergency Context Service - Msc.
Droid Emergency Context Service - Msc.
 
Droid Guide Prototype - Dresden - Germany
Droid Guide Prototype - Dresden - GermanyDroid Guide Prototype - Dresden - Germany
Droid Guide Prototype - Dresden - Germany
 
Java v1.1
Java v1.1Java v1.1
Java v1.1
 
IMS IP multimedia subsystem presentation
IMS IP multimedia subsystem presentationIMS IP multimedia subsystem presentation
IMS IP multimedia subsystem presentation
 
AED Lab 01 Sab
AED Lab 01 SabAED Lab 01 Sab
AED Lab 01 Sab
 
Desenvolvimento de Aplicações Móveis em Java - Parte 1
Desenvolvimento de Aplicações Móveis em Java - Parte 1Desenvolvimento de Aplicações Móveis em Java - Parte 1
Desenvolvimento de Aplicações Móveis em Java - Parte 1
 
Android Developers Challenge
Android Developers ChallengeAndroid Developers Challenge
Android Developers Challenge
 
Computação Ubíqua
Computação UbíquaComputação Ubíqua
Computação Ubíqua
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em Java
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em Java
 
Struts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogStruts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E Log
 
Desenvolvimento de Aplicações Móveis com JavaME
Desenvolvimento de Aplicações Móveis com JavaMEDesenvolvimento de Aplicações Móveis com JavaME
Desenvolvimento de Aplicações Móveis com JavaME
 

JavaME Agenda Parte 2

  • 1. Agenda Parte 2 • Introdução a tecnologia Java • Plataformas Java • Ambiente de execução Java • Plataforma JavaME • Arquitetura • Configurações e perfis
  • 2. Introdução a Tecnologia Java Histórico do Java • A tecnologia Java iniciou em dispositivos embarcados (*7 (Star Seven)) • A partir de 1997 9 iniciou s um trabalho para definir uma nova -8 -e plataforma Java para dispositivos móveis • EmbeddedJava: primeira especificação envolvendo dispositivos embarcados • PersonalJava: 89/99, pai do JavaME • Plataforma JavaME lançada em 99/2000
  • 4. Ambiente de Execução Java • “Write once, run anywhere” • Máquina Virtual Java: ambiente que torna a linguagem independente de arquitetura
  • 5. Ambiente de Execução Java Código Fonte Arquivo Binário (Pentium) Código 01010101 Fonte HW Pentium Interpretador Compilador (Pentium) Arquivo Binário HW Pentium Java (PowerPC) Bytecode 01010101 J HW PowerPC Compilador (PowerPC) Interpretador HW PowerPC Arquivo Binário Compilador Java (Unix) 01010101 Compilador (Unix) HW Unix Interpretador HW Unix
  • 6. Plataforma JavaME Definição • Criada pela Sun Microsystems na forma de especificação em 2000 • Coleção de APIs para o desenvolvimento de aplicações para dispositivos móveis na linguagem Java – Baseado no Java Runtime Environment 1.3 • Organizado em subconjuntos de configurações e perfis de APIs – Configurações: classes (recursos básicos) – Perfis: subclasses de configurações (recursos médios e altos) • Apoiado pela maioria dos fabricantes – Nokia, Sony-Ericsson, Motorola, Samsung, LG, . . . • O número de dispositivos (celulares) com a tecnologia é imenso – + 2 bilhões de aparelhos celulares
  • 10. Configurações Configuration Limited Device Profile - CLDC 1.1 • Herança de J2SE – java.lang, java.io e java.util • Novidades: javax.microedition • Diferenças: Modelo mais simplificado • Requisitos • Novas APIs – Rede, segurança, persistência, etc. • Requisitos – 128 kb de memória não volátil – 32 kb de memória volátil – Acesso ao sistema operacional
  • 11. Perfis Modelos de Aplicação • Computador: Application – Stand-alone – Sobre um PC • Web: Applet – Sobre um navegador Web • Servidor: Servlet – Sobre um servidor remoto • Set-top Box: Xlet – Sobre um setop box • Celular: MIDlet – Sobre um dispositivo móvel
  • 12. Perfis Mobile Information Device Profile - MIDP 2.1 • Modelo de Aplicação – MIDlet Suite • Ciclo de vida do MIDlet • User interface API (LCDUI) • Armazenamento de registros - RMS API • Protocolos e funcionalidades avançadas de rede, incluindo conexões seguras • API de jogos e mídia • Política de segurança e assinatura de código • Empacotamento de aplicativos e provisionamento sobre o ar (OTA)
  • 13. Ambiente de Desenvolvimento Ferramentas • Mínimo – JDK (Java Development Kit) – SDKs (Wireless Toolkit, SDKs de fabricantes) • Recomendado – JDK + SDK – IDEs (Eclipse + EclipseME plugin, Netbeans + Mobility Pack) – Dispositivo real • Dispositivo real – Telefones celulares, PDAs, Smartphones, etc.
  • 15. Ambientes de Desenvolvimento Sun Wireless Toolkit 2.5/3.0 • Kit de ferramentas para a criação de aplicativos MIDP criado pela Sun • Três componentes principais – KToolbar: automação de tarefas envolvidas na criação de aplicativos MIDP – Emulator: simulador de um celular – Conjunto de utilitários: console, utilitários de criptografia, assinatura, etc. • Funcionalidades – Build e empacotamento de classes: Compilação, pré- verificação, empacotamento – Execução e monitoramento: execução, instalação, monitor de memória, profiler de rede – Assinatura de Suite de MIDlets • Assinatura criptográfica para testes em domínios de proteção diferentes
  • 16. Processo de Desenvolvimento Codificação • Composto de etapas a Desenho serem executadas sobre uma aplicação sendo Codificação desenvolvida Compilação • Pode ser gerenciado por uma ferramenta de desenvolvimento integrado Pré-verificação – Ex: Eclipse, Netbeans, WTK, dentre outras. Empacotamento Testes Instalação
  • 17. Processo de Desenvolvimento Desenho • Definição da arquitetura e Desenho desenho das interfaces de usuário (GUIs) Codificação • Opções de arquitetura Compilação – Cliente/Servidor, P2P, Standalone Pré-verificação • Telas de navegação da aplicação Empacotamento • APIs a serem usadas pela aplicação Testes – compatibilidade com o dispositivo Instalação
  • 18. Processo de Desenvolvimento Codificação • Criação da classe que Desenho extende de MIDlet Codificação – Acesso ao display • Uso das APIs de acesso a Compilação recursos do dispositivo • HelloWorld.java Pré-verificação • Uso de IDEs na codificação – Ex: Eclipse, Netbeans Empacotamento Testes Instalação
  • 19. Processo de Desenvolvimento Compilação • Criação do bytecode Desenho representando a classe Java Codificação • HelloWorld.class Compilação • Ferramenta javac do SDK Pré-verificação Empacotamento Testes Instalação
  • 20. Processo de Desenvolvimento Pré-verificação • A pré v - erificação de código Desenho no JavaSE é feita na própria JVM Codificação – Tarefa imprópria para dispositivos móveis Compilação • JavaME: Dividida em duas fases: Pré-verificação – Durante a compilação – Durante a execução no Empacotamento dispositivo • Ferramenta preverify do Testes WTK Instalação
  • 21. Processo de Desenvolvimento Empacotamento • Empacotamento da Desenho aplicação em dois arquivos Codificação – JAR: Java Archive – JAD: Java Application Compilação Description • Ferramenta JAR no SDK Pré-verificação Empacotamento MIDlet-Name: Hello World Testes MIDlet-Version: 1.0 MIDlet-Vendor: Jim MIDlet-Description: My First MIDlet suite MIDlet-1: HelloWorld, null, greeting.HelloWorld Instalação MIDlet-Jar-URL: HelloWorld.jar MIDlet-Jar-Size: 1428
  • 22. Processo de Desenvolvimento Testes • Execução de testes Desenho automatizados ou interativos sobre a Codificação aplicação – J2MEUnit Compilação • Normalmente feitos sobre Pré-verificação um emulador Empacotamento Testes Instalação
  • 23. Processo de Desenvolvimento Instalação • Instalação da aplicação Desenho empacotada no emulador/dispositivo Codificação – Arquivos JAR e JAD Compilação • Métodos de instalação – Cópia de arquivos JAR e JAD Pré-verificação via USB ou BT/IrDA – Pela Internet via OTA Empacotamento Testes Instalação
  • 24. MIDP 2.1 Ciclo de Vida • Métodos do ciclo – startApp(): Inicialização de recursos – pauseApp(): Chamado quando algum evento do dispositivo ocorre (ex: ligação telefônica) • Persistência, parada de processamento – destroyApp(boolean): Encerramento do aplicativo • Métodos da aplicação – exitMidlet() new HelloMIDlet() pauseApp Paused Active startApp public void exitMIDlet() { destroyApp(true); destroyApp notifyDestroyed(); } Destroyed
  • 25. Aplicação em JavaME Hello World import javax.microedition.lcdui.*; public class MeuPrimeiroMIDlet extends MIDlet { public MeuPrimeiroMIDlet() { super(); Display.getDisplay(this).setCurrent( new Alert(quot;Titulo Telaquot;, quot;Hello Worldquot;, null, AlertType.INFO)); } protected void startApp() throws MIDletStateChangeException { System.out.println(quot;startAppquot;); } protected void pauseApp() { System.out.println(quot;pauseAppquot;); } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { System.out.println(quot;destroyAppquot;); } }
  • 26. Aplicação em JavaME Atividade Prática new HelloMidlet() pauseApp • Exercício 1: Criar um Paused Active projeto JavaME no Eclipse startApp e codificar o Hello World • Exercício 2: Rastrear o ciclo destroyApp de vida de um MIDlet Destroyed
  • 28. JavaME Padronização • Objetivos – Minimizar fragmentação de plataforma, implementação e dispositivo • Esforços – Java Technology for the Wireless Industry (JTWI) – JSR 185 – Mobile Services Architecture (MSA) – JSR 248 • Java Community Process (JCP) • Java Specification Request (JSR)
  • 29. JavaME Padronização ------ ------ JCP --- ---- Grupos Membros Artefatos Participação PMO Spec Lead Spec Indivíduo Maintenance EC RI Empresa Lead EG Especialista TCK Entidade
  • 30. JavaME Padronização ----- TCK ----- ----- RI ---- First Public Final Final Initiation Maintenance Draft Draft Draft Release Writing the EG Formation Review and Preparing for Final Submitting the Review and proposal Updates in the PD Draft of Spec Final Release of updates in Preparing the FD Spec, RI and TCK Maintenance Submitting the Approval of PD by Delivery of TCK Review and Versions proposal EC and RI Updates in the FD Input of Review and Submitting Final TCK and RI functionalities for acceptance by EC Draft to EC Planning new Spec Proposal Approval by EC Participants: Public Expert Group Spec/Maintenance Leader JCP Members Executive Comittee
  • 31. JavaME Padronização de APIs • JTWI: Java Technology for the Wireless Industry • MSA: Mobile Service Architecture JTWI MSA Novas JSRs JSR 30: CLDC 1.0 JSR 75: PIM/FC JSR 253: MTA API JSR 37: MIDP 1.0 JSR 82: BTAPI JSR 256: Sensor API JSR 139: CLDC 1.1 JSR 184: 3D Graphics JSR 266: UMBA API JSR 118: MIDP 2.0 JSR 205: WMA 2.0 JSR 271: MIDP 3.0 JSR 120: WMA 1.0 JSR 226: SVG JSR 272: MBS API JSR 135: MMAPI JSR 172: WS API JSR 281: IMS API JSR 177: SATSA JSR 293: Location API 2.0 JSR 179: Location API JSR 297: 3D 2.0 JSR 180: SIP API JSR 304: MTA 2.0 JSR 211: CHAPI JSR 229: PAPI JSR 234: AMS JSR 238: i18n
  • 32. JavaME Principais APIs • MIDP LCDUI: Alto e baixo níveis • API UI para jogos • RMS: Persistência de dados • GCF: framework genérico para conexões – HTTP, IRda, BT, FC, • MMAPI e AMS: Multimídia • WMA: SMS e MMS • WSA: Web Services, SOAP, XML • I18n: Internacionalização • LAPI: Localização • M3DG: Gráficos 3D
  • 33. JavaME LCD User Interface High level Low level
  • 34. JavaME LCD User Interface Canvas:DatePicker Canvas:Table Form
  • 35. JavaME Game API • Utiliza a API de baixo nível (GameCanvas) para a criação de cenários de jogos em JavaME • Classes especializadas para o gerenciamento de camadas e atores – LayoutManager (gerenciador de cadamas), Layer (camada) e Sprite (personagem) Sprite Layer
  • 38. Evolução JavaME Plataforma JavaFX • Plataforma de software para o desenvolvimento de aplicações ricas sobre a internet (RIA) sobre uma grande variedade de dispositivos – Suporte a desktop, navegador Web e celulares – Suporte planejado a set-top box de TVs, consoles de jogos, tocadores Blu- ray, dentre outras • Versão atual: 1.1.1 (Março de 2009) • Integrado ao ambiente de execução Java – JRE e ao JavaME (dispositivos móveis) • Linguagem declarativa JavaFX Script • Concorrentes diretos – Adobe Flash Player, Adobe Integrated Runtime, OpenLaslo, MS Silverlight
  • 42. JavaME Tendências • Curto e médio prazo – Crescimento das plataformas de smartphones • Dot NET Compact Framework, IPhone, Android, Symbian – Novas tecnologias JavaME • MSA incorporado nos dispositivos (SE Z750) • JavaFX Mobile, Mobile Ajax – Evolução: aplicações móveis serem executadas sobre a Web • Novas JSRs (IMS API, MIDP 3.0, etc.) • Longo prazo – Convergência de configurações • CLDC + CDC -> JavaSE – Aumento da capacidade de processamento dos dispositivos • Fim do JavaME? • Ainda existem muitos dispositivos com JavaME
  • 43. Links Interessantes • Mobile and Embedded Community – http://community.java.net/mobileandembedded/ • PhoneME – https://phoneme.dev.java.net/ • Java Community Process – http://www.jcp.org/en/home/index • ME Application Developers – https://meapplicationdevelopers.dev.java.net • Site Oficial do JavaME – Sun – http://java.sun.com/javame/index.jsp • Lista de discursão JavaME – j2me-list@soujava.dev.java.net