Desenvolvimento de aplicações para
       dispositivos móveis




      FAGOC – 10 de Outubro de 2008
   Juarez Junior – Mobile Software Expert
      juarez.junior.mobile@gmail.com
Palestrante
• Juarez Alvares Barbosa Junior
  –   SCMAD - Sun Certified Mobile Application Developer
  –   ForumNOKIA Poster of The Month – Abril de 2006
  –   SCAJ/SCPJ2/SCWCD/SCBCD e SCEA I
  –   ForumNOKIA Champion 2006, 2007, 2008, 2009
  –   Accredited Symbian Developer
Agenda
•   Mobilidade
•   Convergência
•   Plataformas Mobile
•   Symbian Platform
•   BREW
•   JME
•   Plataformas Nokia
•   Ferramentas de Desenvolvimento Nokia
•   Outras ferramentas
•   Tendências / Novidades
Mobilidade
• 3 objetos importantes (top of mind)
  – Carteira
  – Chaves
  – Celular
Convergência
• Tudo-em-um (All-in-one)
  –   Câmera Fotográfica (3.2 GSM, 7.0 WCDMA)
  –   MP3 Player
  –   Telefone
  –   Rádio FM / Mobile TV (DVB-H)
  –   Navegador Web
  –   Email
  –   Mensagens SMS
  –   Organizador
  –   Conectividade
Plataformas Mobile
• Symbian Platform – S60 / UIQ / OMAP – Symbian C++
   – http://www.symbian.com/
   – http://www.s60.com/life
   – http://www.uiq.com/
• Qualcomm BREW – C, C++, (Java?)
   – http://brew.qualcomm.com/brew/en/
• Microsoft Windows Mobile - .NET Mobile
   – http://www.microsoft.com/windowsmobile/default.mspx
• NTT FOMA – JME – iAppli, iMode, DoJA
   – http://www.doja-developer.net/
Plataformas Mobile
• RIM BlackBerry – JME
  – http://www.blackberry.com/developers/index.shtml
• PalmOS – JME
  – http://www.vikdavid.com/mobile/
• (Vendor) Mobile Linux, OSDL, Maemo, LiMo – C,
  C++
  – http://www.osdl.org/lab_activities/mobile_linux
• Sun JME – Java Platform
  – http://java.sun.com/javame/
Plataformas Mobile
• Android (Google) / Open Handset Alliance
  – http://code.google.com/android/index.html
• iPhone (Apple)
  – http://developer.apple.com/iphone/index.action
• Symbian Foundation
  – http://www.symbianfoundation.org/
Plataforma Symbian
• Plataforma Symbian - Symbian OS, Symbian C++,
  cadeia de ferramentas
• Symbian OS - otimizado para dispositivos móveis
• Symbian C++: linguagem C++ específica - Open API
• UI Frameworks – S60, S80, UIQ
• Symbian e S60
   – http://www.symbian.com/
   – http://www.s60.com/life
Symbian OS - Pearl
• SmartPhones
  –   Keypad
  –   Display médio – QVGA
  –   Walkman, Camera
  –   Rádio FM
Symbian OS - Crystal
• Enterprise Class
  – Teclado QWERTY
  – Display grande
  – WLAN, Bluetooth
Symbian OS - Quartz
• Tablets, Touch-pads
  –   Touch-screen
  –   Geralmente sem teclado
  –   Display médio – QVGA
  –   Symbian Series 90
Plataforma Symbian - Ferramentas
• Carbide.C++ Express (FREE)
  – http://forum.nokia.com/main/0,6566,034-1001,00.
    html
• Metrowerks CodeWarrior
• Visual C++
• Borland C++ Builder Mobile Edition
BREW
• BREW: Binary Runtime Environment for Wireless
• Tecnologia e Modelo de Negócio da Qualcomm
  (CDMA)
• Linguagens C, C++ e Java
• Desenvolvimento apenas para celulares
  – Geralmente com linguagem C++
  – No Brasil – VIVO - CDMA
BREW
• VIVO - Celulares de vários fabricantes, mas o
  suporte Java é limitado
BREW
• VIVO - Celulares de vários fabricantes, mas o
  suporte Java é limitado
Android
• Google – Muito interessante mas de certa forma um
  “Java ME” proprietário representa maior
  fragmentação da base de hardware instalada e
  maior desafio para o desenvolvedor
• Open Handset Alliance
• T-Mobile G1 (HTC) - http://www.t-mobileg1.com/
• Mais devices entrando no mercado – Motorola, HTC,
  LG, outros)
Android




• T-Mobile G1
iPhone (Apple)
• Processo de obtenção do SDK é burocrático e
  empresa deve ser elegível
• Amadurecendo, ainda limitado se comparado com
  outras plataformas
• iPhone 3G - http://www.apple.com/br/iphone/
• Único fabricante de aparelhos é a Apple
• Dev Center -
  http://developer.apple.com/iphone/index.action
iPhone (Apple)
JME – Histórico inicial
• 1999
  – Junho - Release da versão EA da KVM para PalmOS durante o
    JavaOne
• 2000
  – Maio - CLDC 1.0 (JSR 30) spec e RI liberadas incluindo a KVM
  – • Junho - MIDP 1.0 (JSR 37) liberada para public review,
    implementação EA 1
  – • Verão - LG Telecom executa o primeiro deploy J2ME no mundo
    (Korea)
  – • Setembro - Spec MIDP 1.0, RI liberada, proposta para a Java
    APIs for Bluetooth (JSR 82)
  – • Novembro – Nokia anuncia primeiro handset com Java, o
    Nokia 9210 (PersonalJava+JavaPhone API built-in, MIDP como
    add-on)
JME – Histórico inicial
• 2001
  – • Janeiro - NTT DoCoMo disponibiliza o iAppli (baseado no
    CLDC) no Japão
  – • Fevereiro - CLDC RI 1.0.2 liberada (melhorias KVM);
  – • Abril - MIDP 2.0 (JSR 118) e Wireless Messaging API (JSR 120)
  – propostas
  – • Maio – Nextel é a primeira operadora a disponibilzar o J2ME
    (com MIDP) nos EUA
  – • Junho - Mobile Media API 1.0 (JSR 135) proposta
  – • Julho - CLDC 1.1 (JSR 139) proposta
  – • Novembro – Primeiro telefone Nokia Series 60 anunciado, o
    Nokia 7650
Introdução ao JME
• JME – Java Micro Edition
  – Plataforma de desenvolvimento de aplicações Java
    para dispositivos móveis, wireless, micro-dispositivos,
    embedded devices
  – MID – Mobile Information Device - MIDlets
  – IM – Information Module - IMlets
  – MIDlets – aplicações que executam nos MIDs
  – IMlets – aplicações que executam nos IMs
  – http://java.sun.com/javame/
Introdução ao JME
• Sistemas Operacionais
  – Vendor OS – Nokia OS, Motorola OS, SavaJe OS (LG)
  – Symbian OS (Java ME, S60, UIQ) – Open APIs
  – Linux, OSDL Mobile Linux (TODO) – closed APIs
• Java VMs
  – Kilobyte Virtual Machine
  – CLDC HI - Hotspot Implementation
  – SavaJe CDC JVM (Swing – JSR-209 - Advanced
    Graphics and UI Opt Pack for JME), CDC JVMs (AWT,
    eSWT)
Introdução ao JME
• Configurations
   – Configuração mínima englobando classes,
     características da JVM, conectividade e GUI, conforme
     categoria do dispositivo
   – CDC – Connected Device Configuration
   – CLDC – Connected Limited Device Configuration
• Profiles
   – No topo das configurações, APIs específicas conforme
     perfil de uma categoria de dispositivos
   – MIDP - Mobile Information Device Profile
   – IMP - Information Module Profile
Arquitetura JME – Software Stack
• Configurations, Profiles, Optional Packs, OEM
  APIs (específicas do fabricante), APIs nativas
  (podem ser open, dependendo do SO)
Introdução ao JME
• Optional Packages
   – Pacotes de extensão provendo APIs específicas endereçando
     vários aspectos – pode ter várias APIS e implementar todas ou
     algumas
      •   Segurança, JavaCard
      •   WebServices
      •   SIP – Session Initiation Protocol
      •   Bluetooth
      •   MMS – Multimedia Messaging System
      •   SMS – Short Messaging System
      •   3D – Mobile 3D API
      •   PIM
      •   FileConnection (filesystems)
      •   Sensors
      •   I18N - Internationalization
Introdução ao JME
• Configurations, Profiles, Opt Packs, seus MIDlets
  – Configuração mínima englobando classes,
    características da JVM, conectividade e GUI, conforme
    categoria do dispositiv
     •   Nokia OS ou Symbian OS
     •   CLDC 1.0 ou 1.1
     •   MIDP 2.0
     •   JSR-75, JSR-82, JSR-135, JSR-179
     •   JSR-180, etc.
     •   MIDlets do desenvolvedor
Introdução ao JME
• JME Software Stack
  – Configurations: CLDC 1.0, 1.1, CDC 1.0, CDC 1.1
  – Profiles: MIDP 1.0, MIDP 1.1, IMP 1.0, IMP-NG, FP,
    PP, PBP
  – Optional Packs: Bluetooth (JSR-82), MMAPI (JSR-
    135), WMA (JSRS 120 e 205), WebServices (JSR-
    172), 3D-M3G (JSR-184), PIM and FileConnection
    (JSR-75), Location API (JSR-179), Mobile
    Internationalization API (JSR-238), SIP API for JME
    (JSR-180), SATSA (JSR-177), S2DVG (JSR-226),
    AMMS (JSR-234), MIA (JSR-238), outros
  – JTWI (JSR-185), MSA for CLDC (JSR-248)
MSA – JSR-248 e 249
• MSA – Mobile Service Architecture
   –   JSR-248 - Mobile Service Architecture for CLDC
   –   JSR-249 - Mobile Service Architecture Advanced
   –   JSR-232 - Mobile Operational Management
   –   Loadable APIs – Middleware for JME
   –   Advanced Core APIs
   –   eSWT
   –   On-Device Debugging
   –   FP 1.1
Introdução ao JME
• MIDlet Suites
  – JAR (Java Application Archive) e JAD (Java
    Application Descriptor)
  – O MIDlet suite engloba:
     •   MIDlets, classes secundárias
     •   Recursos (imagens, icones, sons, arquivos
     •   Arquivo manifest.MF
     •   Arquivo JAD com informações para o AMS / JAM
Introdução ao JME
• MIDlet Suites – processo desenvolvimento
Introdução ao JME
• Ciclo de vida básico de um MIDlet
Introdução ao JME
• Sequência de eventos
Introdução ao JME
• HelloMIDlet
   import javax.microedition.midlet.*;
     import javax.microedition.lcdui.*;
     public class HelloMIDlet extends MIDlet {
     // The display for this MIDlet
     private Display display;
     // TextBox to display text
     TextBox box = null;
     public HelloMIDlet () {
     }
     public void startApp() throws MIDletStateChangeException {
     display = Display.getDisplay(this);
     box = new TextBox("MGJUG 2006", "Olá MGJUG!", 20, 0);
     display.setCurrent(box);
     }
Introdução ao JME
• HelloMIDlet
   /**
     * Pause is a no-op since there are no background activities or
     * record stores that need to be closed.
     */
     public void pauseApp() {
     }
     /**
     * Destroy must cleanup everything not handled by the garbage
     collector.
     * In this case there is nothing to cleanup.
     */
     public void destroyApp(boolean unconditional) throws
     MIDletStateChangeException {
     }
     }
Introdução ao JME
• HelloMIDlet
Introdução ao JME
• Ciclo de vida modificado - PushRegistry
Introdução ao JME
• JTWI (JSR-185) – Java Technology for The
  Wireless Industry
  – Melhorar a compatibilidade, interoperabilidade e
    esclarecer pontos obscuros de algumas JSRs
  – Obrigatórias: MIDP 2.0 e WMA 1.1
  – Opcionais: MMAPI 1.1
  – Configurations: CLDC 1.0 mínimo, CLDC 1.1
Introdução ao JME
• JTWI (JSR-185) – Java Technology for The
  Wireless Industry
Introdução ao JME
• CLDC 1.0 (JSR-30)
  –   Subconjunto do núcleo do J2SE 1.3.1, tipos de dados, coleções, I/O
  –   Conjunto limitado de exceções
  –   Sem custom classloader
  –   Sem thread groups, sem daemon threads
  –   Sem finalização
  –   Sem reflexão
  –   Sem JNI
  –   Verificação de classes em duas fases (off-device, on-device)
  –   Modelo Sandbox
  –   Pacotes java.* e javax.microedition.* são reservados
  –   Classloading apenas apenas de conteúdo do JAR (MIDlet suite)
  –   GCF básico
  –   Suporte Unicode 3.0 e ISO Latin-1
Introdução ao JME
• CLDC 1.1 (JSR-139)
  – Suporte ponto-flutuante, incluindo os wrappers Float e Double e
    métodos sin, cos, tan
  – Adição de weak references
  – Thread.getName(), NoClassDefFoundError, Boolean.TRUE,
    Boolean.FALSE, Date.toString(), String.equalsIgnoreCase(),
    Thread.interrupt()
  – Melhorias nas classes Calendar, Date and TimeZone
  – Aumento de memória de 160 KB para 192 KB
Introdução ao JME
• MIDP 2.0 (JSR-118)
  – Modelo de aplicação/execução
  – GUI API
  – RMS (Record Management Storage) API
  – Protocolos de rede e recursos avançados, incluindo conexões
    seguras
  – Gaming API, Media API
  – Políticas de Segurança, Code Signing, modelo Trusted
  – Deployment de aplicações e provisão OTA (Over The Air)
NOKIA Developer Platforms
• JME software stack
Tendências / Novidades
• eSWT – embedded Standard Widget Toolkit
   –   Subconjunto do Eclipse SWT
   –   Native look-and-feel
   –   Free Layout
   –   Controles avançados (MultiPageDialog, Browser, etc)
   –   JSR-222 (SVG Graphics) e JSR-258 (Mobile UI Customization)
   –   http://www.eclipse.org/ercp/
   –   Atualmente WM2003 e Symbian Series 80
Tendências / Novidades
• LWUIT – LightWeight User Interface Toolkit
   – Modelo similar ao Java AWT/Swing (eventos)
   – Temas, transições, animações, aparência plugável
   – Projeto no Java.net - https://lwuit.dev.java.net/
Tendências / Novidades
• LWUIT – LightWeight User Interface Toolkit
   – Componentes poderosos (exemplos abaixo)
   –   Swing Like MVC (Model View Controller)
   –   PLAF (Pluggable Look And Feel) & Themes
   –   Fonts
   –   Touch Screen
   –   Animations & Transitions
   –   Rich widgets
   –   3D Integration (Optional)
   –   Painters
   –   Modal Dialogs
   –   External Tools
   –   I18N/L10N
   –   SVG Integration (Optional)
SCMAD
• SCMAD - Sun Certified Mobile Application Developer
   –    Section 1: JTWI (JSR 185) and Overview of JTWI-Compliant Wireless
       Applications
   –    Section 2: CLDC 1.0 and 1.1
   –    Section 3: Security (Both CLDC and MIDP)
   –    Section 4: Networking
   –    Section 5: Application Model, Delivery, Lifecycle, and Provisioning
   –    Section 6: MIDP Persistent Storage
   –    Section 7: Push Registry
   –    Section 8: MIDP User Interface (UI) API
   –    Section 9: MIDP Game API
   –    Section 10: Media Using MIDP 2.0 and the MMAPI 1.1
   –    Section 11: Wireless Messaging API 1.1
   –   http://www.sun.com/training/catalog/courses/CX-310-110.xml
SCMAD
• SCMAD - Sun Certified Mobile Application Developer
   – JSR 185 - Java Technology for the Wireless Industry (JTWI)
   – JSR 30 - Connected Limited Device Configuration (CLDC) 1.0
   – JSR 139 - Connected Limited Device Configuration (CLDC) 1.1
   – JSR 118 - Mobile Information Device Profile 2.0 (MIDP). MIDP
     2.0 superceded MIDP 1.0
   – JSR 120 - Wireless Messaging API(WMA) 1.1
   – JSR 135 - Mobile Media API (MMAPI) 1.1
• Mobile JSRs – JCP
   – http://jcp.org/en/jsr/tech?listBy=1&listByType=platform
Introdução ao JME
• CLDC 1.0 GCF – Generic Connection Framework
Introdução ao JME
• MIDP 1.0/ 2.0 GCF
Introdução ao JME
• MIDP UI API – LCDUI – High e Low level
Introdução ao JME
• MIDP – High-level UI API
Introdução ao JME
• MIDP – Low-level UI API
Introdução ao JME
• MIDP 2.0 – Game API
Introdução ao JME
• WMA (JSR-120) – Wireless Messaging API
Introdução ao JME
• MMAPI (JSR-135) – Mobile Media API
Introdução ao JME
• MMAPI (JSR-135) – Mobile Media API
Extras
NOKIA Developer Platforms
• ForumNOKIA – http://forum.nokia.com
  – Forum de discussão, intercâmbio de informações,
    apoio e suporte técnico ao desenvolvimento móvel
  – Projetos envolvendo tecnologia JME, Symbian C++,
    S60, UIQ, Maemo Linux, Python, Flash Lite
    ActionScript, Perl – S60 Browser JS engine
  – Mais de 2 milhões de desenvolvedores mundialmente
  – Forum Nokia Poster of The Month
  – Forum Nokia Champion
NOKIA Developer Platforms
• S60, Series 30, Series 40, Series 80, Series 90, Maemo
   – Series 40 – feature phones (JME, sem API nativa)
   – S60 – Smartphones (API nativa Symbian C++, JME)
   – Series 80 – Enterprise class (API nativa Symbian
     C++, JME) – Flash e Python
NOKIA Developer Platforms
NOKIA Developer Platforms
• S60, Series 40, Series 80
NOKIA Developer Tools
•   Carbide.j – Java Development Tool
•   Nokia SDKs – Device, Prototype, Concept, Platform
•   NCF – Nokia Connectivity Framework
•   Maemo Tools
•   Carbide.C++ Express - S60/Symbian C++ Development
    Tool
NOKIA Developer Tools
• Carbide.j – Java Development Tool
   – Stand-alone, integração com Eclipse, NetBeans, Jbuilder
   – NCF – Nokia Connectivity Framework (Lite e Full)
   – Create Class, Create Pack, Sign Pack, Deploy, Emulators, Screen e Flow
     Designers, Audio Converters, DRM Editor, WebServices Client Tool
NOKIA Developer Tools
•   Nokia SDKs – Platform SDK (Series 40, S60, Series 80), Device SDK,
    Concept SDK
NOKIA Developer Tools
• Carbide.j – Java Development Tool
   – http://forum.nokia.com/main/0,6566,034-2,00.html
NOKIA Developer Tools
• Series 40 Platform SDKs
   – Emulator dos devices Series 40
   – Mesma implementação dos devices para as APIs Java
   – Múltiplas instâncias e suporte a conectividade
   – Agiliza diagnóstico e antecipa problemas

• S60 Platform SDKs, for Java
   – Emulator dos devices MIDP Series 60
   – Mesma implementação dos devices para as APIs Java
   – Suporte a conectividade
NOKIA Developer Tools
• S80 Platform SDKs, for Java
   – Emulator dos devices MIDP Series 80 e PP
   – Mesma implementação dos devices para as APIs Java
   – Suporte a conectividade

• Nokia Connectivity Framework
   – Suporte a conectividade com GUI amigável
   – Gerenciamento de ambientes de teste e simulação
   – Tracing e Auto-detection
NOKIA Developer Tools
• Nokia SDKs – Prototype SDK
   – Developer Platforms e Devices: Series 40, S60, Series 80, Nokia
     7710, vários UI sizes
   – Performance
   – Múltiplas instâncias e suporte a conectividade
   – Aplicações exemplo
NOKIA Developer Tools
• NCF - Nokia Connectivity Framework
NOKIA Developer Tools
•   Maemo – Nokia 770 Internet Tablet (Linux)
     – http://www.maemo.org/?mplink=promo-01
     – http://www.nokia.com/770
NOKIA Developer Tools
• Carbide.C++ Express (Symbian C++ / S60)
Tendências / Novidades
• High-end
  – Nokia N92 – DVB-H
Tendências / Novidades
• N92
Tendências / Novidades
• V820 - ISDB
Tendências / Novidades
• N92
Muito Obrigado!
• Slides e dúvidas - juarez.junior
• Agradecimentos
  – Prof. Clayton Vieira Fraga Filho - FAGOC
  – Felipe Carneiro e Fabricio de Luca - UJUG
  – Ron Liechty – Nokia – Forum Nokia Community
    Manager
  – Waldir Andrade Trevizano - FAGOC
  – FAGOC
Trademarks and Copyrights
• As marcas registradas (trademarks) e direitos
  autorais (copyrights) para as tecnologias são
  propriedade das empresas apresentadas no
  tutorial – Maio de 2006.

Desenvolvimento aplicacoesdispositivosmoveis

  • 1.
    Desenvolvimento de aplicaçõespara dispositivos móveis FAGOC – 10 de Outubro de 2008 Juarez Junior – Mobile Software Expert juarez.junior.mobile@gmail.com
  • 2.
    Palestrante • Juarez AlvaresBarbosa Junior – SCMAD - Sun Certified Mobile Application Developer – ForumNOKIA Poster of The Month – Abril de 2006 – SCAJ/SCPJ2/SCWCD/SCBCD e SCEA I – ForumNOKIA Champion 2006, 2007, 2008, 2009 – Accredited Symbian Developer
  • 3.
    Agenda • Mobilidade • Convergência • Plataformas Mobile • Symbian Platform • BREW • JME • Plataformas Nokia • Ferramentas de Desenvolvimento Nokia • Outras ferramentas • Tendências / Novidades
  • 4.
    Mobilidade • 3 objetosimportantes (top of mind) – Carteira – Chaves – Celular
  • 5.
    Convergência • Tudo-em-um (All-in-one) – Câmera Fotográfica (3.2 GSM, 7.0 WCDMA) – MP3 Player – Telefone – Rádio FM / Mobile TV (DVB-H) – Navegador Web – Email – Mensagens SMS – Organizador – Conectividade
  • 6.
    Plataformas Mobile • SymbianPlatform – S60 / UIQ / OMAP – Symbian C++ – http://www.symbian.com/ – http://www.s60.com/life – http://www.uiq.com/ • Qualcomm BREW – C, C++, (Java?) – http://brew.qualcomm.com/brew/en/ • Microsoft Windows Mobile - .NET Mobile – http://www.microsoft.com/windowsmobile/default.mspx • NTT FOMA – JME – iAppli, iMode, DoJA – http://www.doja-developer.net/
  • 7.
    Plataformas Mobile • RIMBlackBerry – JME – http://www.blackberry.com/developers/index.shtml • PalmOS – JME – http://www.vikdavid.com/mobile/ • (Vendor) Mobile Linux, OSDL, Maemo, LiMo – C, C++ – http://www.osdl.org/lab_activities/mobile_linux • Sun JME – Java Platform – http://java.sun.com/javame/
  • 8.
    Plataformas Mobile • Android(Google) / Open Handset Alliance – http://code.google.com/android/index.html • iPhone (Apple) – http://developer.apple.com/iphone/index.action • Symbian Foundation – http://www.symbianfoundation.org/
  • 9.
    Plataforma Symbian • PlataformaSymbian - Symbian OS, Symbian C++, cadeia de ferramentas • Symbian OS - otimizado para dispositivos móveis • Symbian C++: linguagem C++ específica - Open API • UI Frameworks – S60, S80, UIQ • Symbian e S60 – http://www.symbian.com/ – http://www.s60.com/life
  • 10.
    Symbian OS -Pearl • SmartPhones – Keypad – Display médio – QVGA – Walkman, Camera – Rádio FM
  • 11.
    Symbian OS -Crystal • Enterprise Class – Teclado QWERTY – Display grande – WLAN, Bluetooth
  • 12.
    Symbian OS -Quartz • Tablets, Touch-pads – Touch-screen – Geralmente sem teclado – Display médio – QVGA – Symbian Series 90
  • 13.
    Plataforma Symbian -Ferramentas • Carbide.C++ Express (FREE) – http://forum.nokia.com/main/0,6566,034-1001,00. html • Metrowerks CodeWarrior • Visual C++ • Borland C++ Builder Mobile Edition
  • 14.
    BREW • BREW: BinaryRuntime Environment for Wireless • Tecnologia e Modelo de Negócio da Qualcomm (CDMA) • Linguagens C, C++ e Java • Desenvolvimento apenas para celulares – Geralmente com linguagem C++ – No Brasil – VIVO - CDMA
  • 15.
    BREW • VIVO -Celulares de vários fabricantes, mas o suporte Java é limitado
  • 16.
    BREW • VIVO -Celulares de vários fabricantes, mas o suporte Java é limitado
  • 17.
    Android • Google –Muito interessante mas de certa forma um “Java ME” proprietário representa maior fragmentação da base de hardware instalada e maior desafio para o desenvolvedor • Open Handset Alliance • T-Mobile G1 (HTC) - http://www.t-mobileg1.com/ • Mais devices entrando no mercado – Motorola, HTC, LG, outros)
  • 18.
  • 19.
    iPhone (Apple) • Processode obtenção do SDK é burocrático e empresa deve ser elegível • Amadurecendo, ainda limitado se comparado com outras plataformas • iPhone 3G - http://www.apple.com/br/iphone/ • Único fabricante de aparelhos é a Apple • Dev Center - http://developer.apple.com/iphone/index.action
  • 20.
  • 21.
    JME – Históricoinicial • 1999 – Junho - Release da versão EA da KVM para PalmOS durante o JavaOne • 2000 – Maio - CLDC 1.0 (JSR 30) spec e RI liberadas incluindo a KVM – • Junho - MIDP 1.0 (JSR 37) liberada para public review, implementação EA 1 – • Verão - LG Telecom executa o primeiro deploy J2ME no mundo (Korea) – • Setembro - Spec MIDP 1.0, RI liberada, proposta para a Java APIs for Bluetooth (JSR 82) – • Novembro – Nokia anuncia primeiro handset com Java, o Nokia 9210 (PersonalJava+JavaPhone API built-in, MIDP como add-on)
  • 22.
    JME – Históricoinicial • 2001 – • Janeiro - NTT DoCoMo disponibiliza o iAppli (baseado no CLDC) no Japão – • Fevereiro - CLDC RI 1.0.2 liberada (melhorias KVM); – • Abril - MIDP 2.0 (JSR 118) e Wireless Messaging API (JSR 120) – propostas – • Maio – Nextel é a primeira operadora a disponibilzar o J2ME (com MIDP) nos EUA – • Junho - Mobile Media API 1.0 (JSR 135) proposta – • Julho - CLDC 1.1 (JSR 139) proposta – • Novembro – Primeiro telefone Nokia Series 60 anunciado, o Nokia 7650
  • 23.
    Introdução ao JME •JME – Java Micro Edition – Plataforma de desenvolvimento de aplicações Java para dispositivos móveis, wireless, micro-dispositivos, embedded devices – MID – Mobile Information Device - MIDlets – IM – Information Module - IMlets – MIDlets – aplicações que executam nos MIDs – IMlets – aplicações que executam nos IMs – http://java.sun.com/javame/
  • 24.
    Introdução ao JME •Sistemas Operacionais – Vendor OS – Nokia OS, Motorola OS, SavaJe OS (LG) – Symbian OS (Java ME, S60, UIQ) – Open APIs – Linux, OSDL Mobile Linux (TODO) – closed APIs • Java VMs – Kilobyte Virtual Machine – CLDC HI - Hotspot Implementation – SavaJe CDC JVM (Swing – JSR-209 - Advanced Graphics and UI Opt Pack for JME), CDC JVMs (AWT, eSWT)
  • 25.
    Introdução ao JME •Configurations – Configuração mínima englobando classes, características da JVM, conectividade e GUI, conforme categoria do dispositivo – CDC – Connected Device Configuration – CLDC – Connected Limited Device Configuration • Profiles – No topo das configurações, APIs específicas conforme perfil de uma categoria de dispositivos – MIDP - Mobile Information Device Profile – IMP - Information Module Profile
  • 26.
    Arquitetura JME –Software Stack • Configurations, Profiles, Optional Packs, OEM APIs (específicas do fabricante), APIs nativas (podem ser open, dependendo do SO)
  • 27.
    Introdução ao JME •Optional Packages – Pacotes de extensão provendo APIs específicas endereçando vários aspectos – pode ter várias APIS e implementar todas ou algumas • Segurança, JavaCard • WebServices • SIP – Session Initiation Protocol • Bluetooth • MMS – Multimedia Messaging System • SMS – Short Messaging System • 3D – Mobile 3D API • PIM • FileConnection (filesystems) • Sensors • I18N - Internationalization
  • 28.
    Introdução ao JME •Configurations, Profiles, Opt Packs, seus MIDlets – Configuração mínima englobando classes, características da JVM, conectividade e GUI, conforme categoria do dispositiv • Nokia OS ou Symbian OS • CLDC 1.0 ou 1.1 • MIDP 2.0 • JSR-75, JSR-82, JSR-135, JSR-179 • JSR-180, etc. • MIDlets do desenvolvedor
  • 29.
    Introdução ao JME •JME Software Stack – Configurations: CLDC 1.0, 1.1, CDC 1.0, CDC 1.1 – Profiles: MIDP 1.0, MIDP 1.1, IMP 1.0, IMP-NG, FP, PP, PBP – Optional Packs: Bluetooth (JSR-82), MMAPI (JSR- 135), WMA (JSRS 120 e 205), WebServices (JSR- 172), 3D-M3G (JSR-184), PIM and FileConnection (JSR-75), Location API (JSR-179), Mobile Internationalization API (JSR-238), SIP API for JME (JSR-180), SATSA (JSR-177), S2DVG (JSR-226), AMMS (JSR-234), MIA (JSR-238), outros – JTWI (JSR-185), MSA for CLDC (JSR-248)
  • 30.
    MSA – JSR-248e 249 • MSA – Mobile Service Architecture – JSR-248 - Mobile Service Architecture for CLDC – JSR-249 - Mobile Service Architecture Advanced – JSR-232 - Mobile Operational Management – Loadable APIs – Middleware for JME – Advanced Core APIs – eSWT – On-Device Debugging – FP 1.1
  • 32.
    Introdução ao JME •MIDlet Suites – JAR (Java Application Archive) e JAD (Java Application Descriptor) – O MIDlet suite engloba: • MIDlets, classes secundárias • Recursos (imagens, icones, sons, arquivos • Arquivo manifest.MF • Arquivo JAD com informações para o AMS / JAM
  • 33.
    Introdução ao JME •MIDlet Suites – processo desenvolvimento
  • 34.
    Introdução ao JME •Ciclo de vida básico de um MIDlet
  • 35.
    Introdução ao JME •Sequência de eventos
  • 36.
    Introdução ao JME •HelloMIDlet import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HelloMIDlet extends MIDlet { // The display for this MIDlet private Display display; // TextBox to display text TextBox box = null; public HelloMIDlet () { } public void startApp() throws MIDletStateChangeException { display = Display.getDisplay(this); box = new TextBox("MGJUG 2006", "Olá MGJUG!", 20, 0); display.setCurrent(box); }
  • 37.
    Introdução ao JME •HelloMIDlet /** * Pause is a no-op since there are no background activities or * record stores that need to be closed. */ public void pauseApp() { } /** * Destroy must cleanup everything not handled by the garbage collector. * In this case there is nothing to cleanup. */ public void destroyApp(boolean unconditional) throws MIDletStateChangeException { } }
  • 38.
  • 39.
    Introdução ao JME •Ciclo de vida modificado - PushRegistry
  • 40.
    Introdução ao JME •JTWI (JSR-185) – Java Technology for The Wireless Industry – Melhorar a compatibilidade, interoperabilidade e esclarecer pontos obscuros de algumas JSRs – Obrigatórias: MIDP 2.0 e WMA 1.1 – Opcionais: MMAPI 1.1 – Configurations: CLDC 1.0 mínimo, CLDC 1.1
  • 41.
    Introdução ao JME •JTWI (JSR-185) – Java Technology for The Wireless Industry
  • 42.
    Introdução ao JME •CLDC 1.0 (JSR-30) – Subconjunto do núcleo do J2SE 1.3.1, tipos de dados, coleções, I/O – Conjunto limitado de exceções – Sem custom classloader – Sem thread groups, sem daemon threads – Sem finalização – Sem reflexão – Sem JNI – Verificação de classes em duas fases (off-device, on-device) – Modelo Sandbox – Pacotes java.* e javax.microedition.* são reservados – Classloading apenas apenas de conteúdo do JAR (MIDlet suite) – GCF básico – Suporte Unicode 3.0 e ISO Latin-1
  • 43.
    Introdução ao JME •CLDC 1.1 (JSR-139) – Suporte ponto-flutuante, incluindo os wrappers Float e Double e métodos sin, cos, tan – Adição de weak references – Thread.getName(), NoClassDefFoundError, Boolean.TRUE, Boolean.FALSE, Date.toString(), String.equalsIgnoreCase(), Thread.interrupt() – Melhorias nas classes Calendar, Date and TimeZone – Aumento de memória de 160 KB para 192 KB
  • 44.
    Introdução ao JME •MIDP 2.0 (JSR-118) – Modelo de aplicação/execução – GUI API – RMS (Record Management Storage) API – Protocolos de rede e recursos avançados, incluindo conexões seguras – Gaming API, Media API – Políticas de Segurança, Code Signing, modelo Trusted – Deployment de aplicações e provisão OTA (Over The Air)
  • 45.
  • 46.
    Tendências / Novidades •eSWT – embedded Standard Widget Toolkit – Subconjunto do Eclipse SWT – Native look-and-feel – Free Layout – Controles avançados (MultiPageDialog, Browser, etc) – JSR-222 (SVG Graphics) e JSR-258 (Mobile UI Customization) – http://www.eclipse.org/ercp/ – Atualmente WM2003 e Symbian Series 80
  • 47.
    Tendências / Novidades •LWUIT – LightWeight User Interface Toolkit – Modelo similar ao Java AWT/Swing (eventos) – Temas, transições, animações, aparência plugável – Projeto no Java.net - https://lwuit.dev.java.net/
  • 48.
    Tendências / Novidades •LWUIT – LightWeight User Interface Toolkit – Componentes poderosos (exemplos abaixo) – Swing Like MVC (Model View Controller) – PLAF (Pluggable Look And Feel) & Themes – Fonts – Touch Screen – Animations & Transitions – Rich widgets – 3D Integration (Optional) – Painters – Modal Dialogs – External Tools – I18N/L10N – SVG Integration (Optional)
  • 49.
    SCMAD • SCMAD -Sun Certified Mobile Application Developer – Section 1: JTWI (JSR 185) and Overview of JTWI-Compliant Wireless Applications – Section 2: CLDC 1.0 and 1.1 – Section 3: Security (Both CLDC and MIDP) – Section 4: Networking – Section 5: Application Model, Delivery, Lifecycle, and Provisioning – Section 6: MIDP Persistent Storage – Section 7: Push Registry – Section 8: MIDP User Interface (UI) API – Section 9: MIDP Game API – Section 10: Media Using MIDP 2.0 and the MMAPI 1.1 – Section 11: Wireless Messaging API 1.1 – http://www.sun.com/training/catalog/courses/CX-310-110.xml
  • 50.
    SCMAD • SCMAD -Sun Certified Mobile Application Developer – JSR 185 - Java Technology for the Wireless Industry (JTWI) – JSR 30 - Connected Limited Device Configuration (CLDC) 1.0 – JSR 139 - Connected Limited Device Configuration (CLDC) 1.1 – JSR 118 - Mobile Information Device Profile 2.0 (MIDP). MIDP 2.0 superceded MIDP 1.0 – JSR 120 - Wireless Messaging API(WMA) 1.1 – JSR 135 - Mobile Media API (MMAPI) 1.1 • Mobile JSRs – JCP – http://jcp.org/en/jsr/tech?listBy=1&listByType=platform
  • 51.
    Introdução ao JME •CLDC 1.0 GCF – Generic Connection Framework
  • 52.
    Introdução ao JME •MIDP 1.0/ 2.0 GCF
  • 53.
    Introdução ao JME •MIDP UI API – LCDUI – High e Low level
  • 54.
    Introdução ao JME •MIDP – High-level UI API
  • 55.
    Introdução ao JME •MIDP – Low-level UI API
  • 56.
    Introdução ao JME •MIDP 2.0 – Game API
  • 57.
    Introdução ao JME •WMA (JSR-120) – Wireless Messaging API
  • 58.
    Introdução ao JME •MMAPI (JSR-135) – Mobile Media API
  • 59.
    Introdução ao JME •MMAPI (JSR-135) – Mobile Media API
  • 60.
  • 61.
    NOKIA Developer Platforms •ForumNOKIA – http://forum.nokia.com – Forum de discussão, intercâmbio de informações, apoio e suporte técnico ao desenvolvimento móvel – Projetos envolvendo tecnologia JME, Symbian C++, S60, UIQ, Maemo Linux, Python, Flash Lite ActionScript, Perl – S60 Browser JS engine – Mais de 2 milhões de desenvolvedores mundialmente – Forum Nokia Poster of The Month – Forum Nokia Champion
  • 62.
    NOKIA Developer Platforms •S60, Series 30, Series 40, Series 80, Series 90, Maemo – Series 40 – feature phones (JME, sem API nativa) – S60 – Smartphones (API nativa Symbian C++, JME) – Series 80 – Enterprise class (API nativa Symbian C++, JME) – Flash e Python
  • 63.
  • 64.
    NOKIA Developer Platforms •S60, Series 40, Series 80
  • 65.
    NOKIA Developer Tools • Carbide.j – Java Development Tool • Nokia SDKs – Device, Prototype, Concept, Platform • NCF – Nokia Connectivity Framework • Maemo Tools • Carbide.C++ Express - S60/Symbian C++ Development Tool
  • 66.
    NOKIA Developer Tools •Carbide.j – Java Development Tool – Stand-alone, integração com Eclipse, NetBeans, Jbuilder – NCF – Nokia Connectivity Framework (Lite e Full) – Create Class, Create Pack, Sign Pack, Deploy, Emulators, Screen e Flow Designers, Audio Converters, DRM Editor, WebServices Client Tool
  • 67.
    NOKIA Developer Tools • Nokia SDKs – Platform SDK (Series 40, S60, Series 80), Device SDK, Concept SDK
  • 68.
    NOKIA Developer Tools •Carbide.j – Java Development Tool – http://forum.nokia.com/main/0,6566,034-2,00.html
  • 69.
    NOKIA Developer Tools •Series 40 Platform SDKs – Emulator dos devices Series 40 – Mesma implementação dos devices para as APIs Java – Múltiplas instâncias e suporte a conectividade – Agiliza diagnóstico e antecipa problemas • S60 Platform SDKs, for Java – Emulator dos devices MIDP Series 60 – Mesma implementação dos devices para as APIs Java – Suporte a conectividade
  • 70.
    NOKIA Developer Tools •S80 Platform SDKs, for Java – Emulator dos devices MIDP Series 80 e PP – Mesma implementação dos devices para as APIs Java – Suporte a conectividade • Nokia Connectivity Framework – Suporte a conectividade com GUI amigável – Gerenciamento de ambientes de teste e simulação – Tracing e Auto-detection
  • 71.
    NOKIA Developer Tools •Nokia SDKs – Prototype SDK – Developer Platforms e Devices: Series 40, S60, Series 80, Nokia 7710, vários UI sizes – Performance – Múltiplas instâncias e suporte a conectividade – Aplicações exemplo
  • 72.
    NOKIA Developer Tools •NCF - Nokia Connectivity Framework
  • 73.
    NOKIA Developer Tools • Maemo – Nokia 770 Internet Tablet (Linux) – http://www.maemo.org/?mplink=promo-01 – http://www.nokia.com/770
  • 74.
    NOKIA Developer Tools •Carbide.C++ Express (Symbian C++ / S60)
  • 75.
    Tendências / Novidades •High-end – Nokia N92 – DVB-H
  • 76.
  • 77.
  • 78.
  • 79.
    Muito Obrigado! • Slidese dúvidas - juarez.junior • Agradecimentos – Prof. Clayton Vieira Fraga Filho - FAGOC – Felipe Carneiro e Fabricio de Luca - UJUG – Ron Liechty – Nokia – Forum Nokia Community Manager – Waldir Andrade Trevizano - FAGOC – FAGOC
  • 80.
    Trademarks and Copyrights •As marcas registradas (trademarks) e direitos autorais (copyrights) para as tecnologias são propriedade das empresas apresentadas no tutorial – Maio de 2006.