Quem sou eu ? @ryanbrunof
“Não existe essa coisa de ”sorte”.
Existe você ir e correr atrás do que quer!” - House
Agenda
• Introdução ao Google Android
• Fundamentos do Android
• Produtividade levada a sério!
• Frameworks:
– DroidDraw (UI designer) *
– RoboGuice (injeção de dependência)
– AndOrm e DroidPersistence (persistência de dados)
– XStream + SAX (independência de dados)
• Design Patterns:
– MVC (Model-View-Controller)
– Singleton
• Integração de dados:
– WebServices SOAP (JAX-WS)
Introdução Google Android
• O Google Android é um conjunto de software para
dispositivos móveis que inclui um sistema operacional,
middleware e aplicações nativas.
• O Android SDK provê ferramentas e uma API para
desenvolver aplicativos ricos e inovadores.
• A arquitetura da aplicação é projetada para simplificar a
reutilização de componentes.
• Em síntese, todas as aplicações são um aglomerado de
sistemas e serviços, incluindo:
Um rico e extensivo conjunto componentes visuais;
Content Providers Resource Manager
Notification Manager Activity Manager
Fundamentos do Android
• O sistema Android é um Linux-Based multiusuário do qual cada aplicação
é considerada um diferente usuário (ID).
• Implementa o “principle of least privilege”, do qual gerencia o processo
(id) por aplicação – isolando através da VM.
• Application Components
Activities
Representa uma única interface gráfica de usuário.
Services
Componente executa em background para operações longa duração
Content Providers
Compartilhamento de dados entre aplicações distintas.
Broadcast Receivers
Componente que responde por anúncio de broadcast.
Produtividade levada a sério!
• A produtividade em projetos de mobilidade pode ser
alcançado pelo domínio da plataforma móvel.
• Ao desenvolver para o Android nos deparamos com muitos
detalhes técnicos que demoram para serem confeccionados.
• Produtividade está intimamente ligada ao custo do projeto.
• No paradigma orientado a objetos existem frameworks para
agilizar o desenvolvimento e nos poupar de detalhes técnicos
e de infra-estrutura, porém não são “A Bala de Prata”.
• Experiência + frameworks = Produtividade!
• Equipe motivada! – Aspecto humano.
O que são Frameworks ?
• Provêm uma solução para uma família de problemas
semelhantes. Usando um conjunto de classes e interfaces que
exibe como decompor a família de problemas.
• O conjunto de classes deve ser extensível e flexível para
permitir a construção de várias aplicações com pouco esforço,
especificando apenas as regras de negócio de cada aplicação.
http://bit.ly/dAF2G5
DroidDraw *
• Ferramenta on-line e standalone de design WYSIWYG (What
You See Is What You Get) para interface gráfica de usuário
baseado em XML.
• Proporciona facilidade no desenho de UI simples.
• Para interfaces complexas é recomendado a manipulação de
arquivo XML manualmente.
• Project Page: http://www.droiddraw.org/
RoboGuice 2
• RoboGuice é um framework de injeção de dependência que
provê simplicidade através de escrita reduzida de código
(menos bugs). Utiliza a famosa biblioteca Google Guice.
• Aumenta a legibilidade de código através de anotações fáceis
de seguir e manipular.
• Podemos focar somente na camada de negócios de nossas
aplicações sem se preocupar com detalhes da arquitetura do
Android.
• Project Page: http://code.google.com/p/roboguice/
RoboGuice 2 - Exemplo
• Precisa de um SystemService ? Injete um!
• Precisa de um View ou Resource ? Injete-os também!
• O RoboGuice cuida dos detalhes pra nós.
Persistência de dados
• O Android possui integração com o SQLite, um leve e
poderoso banco de dados relacional – http://www.sqlite.org
• O armazenamento em banco de dados é a forma mais comum
de persistência, porém o Android possui um simples sistema
de persistência baseado em chave-valor chamado de
preferências (shared preferences).
AndOrm
• Framework de mapeamento objeto-relacional voltado para
plataforma Android.
• Encapsula o nível mais baixo da
API android.database.sqlite.SQLiteDatabase
oferecendo uma API de alto nível.
• Torna o trabalho de criação de instruções SQL e manipulação
dos recursos nativos transparente.
• Project Page: https://github.com/jonatasdaniel/andorm
API SAX - Simple API for XML
• API para manipulação de documentos no formato XML.
• Recomendado por alocar pouca memória.
• Processamento serial de documentos e streaming.
• Possui e desvantagem de, em alguns casos, não validar
documentos contra XML Schemas e impossibilidade de saltos
e leitura de trechos anteriores.
http://docs.oracle.com/javaee/1.4/tutorial/doc/JAXPIntro4.html
XStream
• API simples para serializar objetos para XML e vice-versa.
• Utilização típica:
– Transporte de dados bem-formatados
– Persistência de dados
– Configurações
– Unidades de teste
• Project Page: http://xstream.codehaus.org/
Design Pattern MVC
• Idealizado por Trygve Reenskaug no final dos anos 70.
• Padrão de projeto arquitetural utilizado como boa prática na
construção de softwares orientados a objetos reutilizáveis e
eficientes.
• Objetiva a organização da aplicação em camadas –
separando a lógica de negócio da camada de apresentação
utilizando como mediador um controlador.
Integração de dados
• O que são web services ?
– “Web services se refere a uma arquitetura que permite que as
aplicações falem umas com as outras. Ponto Final.”
• Padrões fundamentais utilizados
– XML
– SOAP
– WSDL
– UDDI
– HTTP
• Desempenho
– Servidores de balanceamento de carga