2. Agenda do Seminário
Quatro Partes
Introdução ao tema
•
Desenvolvimento de aplicações em JavaME
•
Desenvolvimento de aplicações no Google Android
•
Conclusões finais
•
3. Agenda
Parte 1
• Sobre o palestrante
• Introdução
• Classificação e características de
dispositivos
• Visão geral
• Características
• Dicas de desenvolvimento
• Plataformas de software
4. Sobre o Palestrante
• Passado
– Bacharel em Ciência da Computação pela UFMG (2002)
– Desenvolvimento de Aplicações Java desde 2000 (JavaSE, JavaEE e
JavaME)
– 2004-2006: Siemens/Benq Mobile (Multimídia, JSR 253 e Padronização
Java)
• Presente
– Engenheiro de SW JavaEE pelo Synergia-DCC-UFMG
– Professor assistente da PUC-MG SG no curso de Sistemas de Informação
– Mestrando em Ciência da Computação pela UFMG (2008)
• Computação móvel e ubíqua
• Plataforma Android
5. Introdução
Objetivos
• Apresentar uma visão geral sobre o desenvolvimento de
aplicações para dispositivos móveis
– Classificação e características de dispositivos móveis
– Desafios associados
– Dicas de implementação
• Apresentar duas das principais plataformas de
desenvolvimento de aplicações móveis na linguagem Java
– JavaME da Sun
– Android da Google
• Criar aplicações básicas nas duas plataformas acima
6. Introdução
Classificação de Dispositivos Móveis
• Tamanho
– Pequeno, médio, grande;
• Tipo
– Formatos diferentes, tais como o de concha, barra,
slider, candy bar, etc.;
• Recursos de multimídia
– Câmera, toques de ligações, MP3, memo de voz, auto falante, etc.;
• Qualidade do display
– Resolução, cores, nitidez, tecnologia LCD;
• Recursos especiais
– Aplicativos, navegador Web, gerenciador de informações pessoais;
7. Introdução
Classificação de Dispositivos Móveis
• Preço
– Faixas ou segmentos baixo, médio e alto;
• Conectividade de dados
– Suporte a Bluetooth, infravermelho, serial, USB, modem sem-fio, WiFi;
• Capacidade de armazenamento
– Tamanho da memória e suporte a cartões de memória adicionais;
• Recursos de telefonia móvel
– Capacidade do dispositivo de gerenciar ligações móveis (fazer, receber
ligações, conferência, serviços de rede, etc.).
• Entrada de dados
– Teclado simples, qwerty, tela sensível ao toque, multi-toque, caneta
8. Introdução
Características de Dispositivos Móveis
• Capacidade de processamento
– Modelo do processador, freqüência do clock
– Pouca capacidade de memória e pouca capacidade de processamento,
comparando com computadores desktop.
• Fabricantes
– A padronização é aplicada em alguns casos, em outros não
• Classes de dispositivos
– Níveis de processamento baixo, médio e alto
• Várias plataformas de desenvolvimento de SW
– Muitas opções, porém em alguns casos não atendem à requisitos da
aplicação
– Curva de aprendizado alta
– Depende da sua cobertura no mercado
12. Aplicações Móveis
Dispositivos, Redes e Conteúdo
• Dispositivos móveis
– Crescimento explosivo de dispositivos móveis
• Celulares, PDAs, notebooks, netbooks, tocadores de mídia, Mps
– Diferentes recursos de multimídia
• Tela, captura de imagens, armazenamento, processamento, comunicação
• Redes Móveis
– Melhores tecnologias dos fabricantes
• Utilização do espectro eletromegnético, fibra ótica, WLAN
• Maior largura de banda, melhor cobertura
• Conteúdo
– Crescimento da mídia digital
– Mudanças na forma como o conteúdo é produzido
• Passivo vs. Interativo, centralizado vs. P2P
13. Aplicações Móveis
Tipos de Aplicações
• Tipos de aplicações
– Comunicação via voz
– Navegação pela Web (>90% do acesso a internet no Japão)
– Acesso a arquivos de mídia
– GPS
– Jogos
– Conectando com pessoas . . .
• O que tem sido desejável em plataformas móveis
– Eficiente apesar das limitações de memória, computacional e bateria
– Aberta e expansível, facilmente portável
– Eficiente no desenvolvimento
• Boas APIs e ferramentas de desenvolvimento para o desenvolvedor
• Colaboração e reuso entre desenvolvedores
14. Características do Desenvolvimento
Desafios
– Pobreza de recursos comparada a PCs
• Poder de processamento, memória, espaço para armazenamento
• Ergonomia
– Chance maior de perda de dados
• Roubo ou furto do dispositivo, segurança dos dados contidos
• Maior vulnerabilidade a estragos
– Conectividade variável em termos de desempenho e
confiabilidade
• Variação da qualidade e largura de banda em redes sem-fio internas e
externas
• Interferência nas ondas de rádio
– Bateria limitada
• Sensível ao consumo de bateria (HW e SW)
15. Características do Desenvolvimento
Tendências
• Acesso a informações e serviços independente da
localização
– Ex: Mobile IP
• Novos serviços oferecidos
– Serviços antes somente disponíveis em PCs
• Focos em 2009:
Telas sensíveis ao toque: tecnologias mais amigáveis de interação
–
Mobilidade: smartphones
–
Conectividade: Disponibilidade de mais de um tipo de rede
–
Micro-processamento: energia e processamento
–
Computação nas nuvens: aplicações e serviços remotos
–
• Plataformas de smartphones ocupando o espaço de
plataformas mais antigas, como o JavaME
– Symbian (C/C++, Python), Android (Java), IPhone (Objective C) e Windows
Mobile (C#, Dot Net)
16. Aplicações Móveis
Dicas de Desenvolvimento
• Não abusar do paradigma da orientação por objetos
• Método KISS
• Utilizar processamento concorrente para tratamento de UI
• Evitar a “tela congelada”
• Otimização de código
• Otimizar o processamento de variáveis, especialmente em iterações
• A mesma operação em menos iterações
• Avaliar os tipos de dados usados (byte, short, int)
• Sempre focar na tentativa de melhorar uma implementação sendo realizada
17. Aplicações Móveis
Dicas de Desenvolvimento
• Controle de memória
• Liberação de memória, mesmo em plataformas com coleta de lixo
automática
• Atribuir null para variáveis não usadas
• Uso de padrões de projeto para aplicações móveis
• Compressão de dados, Proxy e Singleton
• Inicialização lenta
• Priorização de tarefas: falha parcial e captão oates
• Flyweight e Pool de threads
• Executar testes de desempenho no aplicativo
• Pelo menos via emulador
18. Desenvolvimento de Aplicações Móveis
Plataformas de Software
• Baseado em Java • Não Java
– Sun JavaME ou JavaSE – Symbian (C/C++, Python)
– SuperWaba – Windows Mobile (Dot Net
Compact Framework)
– Google Android
– PalmOS, Pocket PC
– RIM Blackberry
(C/C++)
– IPhone (Objective C)
– BREW (C/C++)
– Microbrowser (XHTML)
– FlashLite (ActionScript)
19. Desenvolvimento de Aplicações Móveis
Plataformas de Software
• Plataformas Fechadas
– Dificuldades de inovação
– Altas taxas de royalties
– Custo mais alto para o desenvolvedor e para o usuário
– Plataformas abertas
– Acesso a detalhes da implementação
– Possibilidade de inovações
– Mais barato, mais competitivo, mais tecnologias