[1] O documento apresenta as principais plataformas e tecnologias para desenvolvimento de aplicações móveis, incluindo Symbian, BREW, Android, iPhone e Java ME.
[2] É descrito o ciclo de vida de MIDlets no Java ME e apresentadas as configurações, perfis e pacotes opcionais desta plataforma.
[3] Também são apresentadas tendências para o Java ME, como o eSWT, que trará novos controles e compatibilidade com padrões como SVG.
CloudTalks - Revolutionize Java DB AppDev with Reactive Streams and Virtual T...
Desenvolvimento aplicacoesdispositivosmoveis
1. Desenvolvimento de aplicações para
dispositivos móveis
FAGOC – 10 de Outubro de 2008
Juarez Junior – Mobile Software Expert
juarez.junior.mobile@gmail.com
2. 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
3. Agenda
• Mobilidade
• Convergência
• Plataformas Mobile
• Symbian Platform
• BREW
• JME
• Plataformas Nokia
• Ferramentas de Desenvolvimento Nokia
• Outras ferramentas
• Tendências / Novidades
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
• 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/
7. 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/
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
• 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
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: 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
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)
19. 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
21. 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)
22. 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
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-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
31.
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
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 {
}
}
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)
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
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
79. 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
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.