18803468 desenvolvimento-de-aplicacoes-para-dispositivos-moveis
-
Upload
juarez-junior -
Category
Documents
-
view
437 -
download
0
Transcript of 18803468 desenvolvimento-de-aplicacoes-para-dispositivos-moveis
Desenvolvimento de aplicações para dispositivos móveis
FAGOC – 10 de Outubro de 2008
Juarez Junior – Mobile Software Expert
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 MIDletprivate Display display;// TextBox to display textTextBox 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.