Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Guia completo sobre o Android: arquitetura, Dalvik VM, aplicativos e mais
1. ALUNO: Walanem Figueiredo Silva Jr.
ORIENTADOR: Carlos Alberto Soares Ribeiro
Graduação em Ciência da Computação – UFF
2. • Introdução
• Open Handset Alliance
• O que é o Android?
• Arquitetura do Android
• Dalvik Virtual Machine
• Aplicações Android
• Publicação de Aplicativos
• Presente e Futuro do Android
• Projeto prático
• Referências
5. Introdução
• Propósito Primário
– Inicialmente, aparelhos projetados apenas para atender e
efetuar ligações;
– Posteriormente, novas funcionalidades foram adicionadas
(Ex: Jogos, Internet)
– Limitação tecnológica;
6. Introdução
• Revolução Móvel
– Ideia de ‘‘mobilidade’’ disseminada de forma cada vez
mais incisiva;
– Celulares representam dispositivos leves, e praticamente
indispensáveis para qualquer pessoa;
• Novas funcionalidades incorporadas
7. Introdução
• Revolução Móvel (cont.)
– Introduzido o conceito de ‘‘smartphone’’ (telefone
inteligente);
– Diversas funcionalidades reunidas em um só aparelho;
8. Introdução
• Revolução Móvel (cont.)
– Demanda por uma plataforma centralizada;
– Gerenciamento de recursos de forma simples e flexível;
– Necessidade de um Sistema Operacional padronizado para
dispositivos móveis;
• Desafios
– Portabilidade de aplicações e recursos;
– Alta diversidade de tipos e modelos de dispostivos;
10. Open Handset Alliance
• Aliança
– Grupo formado por gigantes da telefonia mundial
– Liderança:
11. • Objetivos
– Criação de padrões abertos para telefonia móvel;
– Inovações na área móvel, oferecendo experiências mais
ricas e acessíveis para os usuários.
Open Handset Alliance
13. • Definição
– Plataforma integrada para dispositivos móveis;
– Composta por um Sistema Operacional, Middleware e
aplicações;
• Características
– Transparência: Possibilidade de acesso a recursos do
dispositivo por meio de API’s, ou seja, aplicativos podem
utilizar qualquer recurso disponibilizado pelo Sistema
Operacional;
O que é o Android?
14. • Características (cont.)
– Não-distinção: Qualquer aplicativo pode ser estendido (ou
até mesmo substituído) por outro não nativo;
– Web-ready: Aplicativos Android podem exibir páginas da
HTML (inclusive HTML5), CSS e Javascript;
– Paralelismo: O Android é um ambiente multitarefa, no
qual os aplicativos podem ser executados em paralelo
(multitasking);
O que é o Android?
18. • Applications
– Camada de alto nível;
– Local onde os aplicativos são executados:
• Browser, calendário, agenda de contatos, jogos, etc.
• Application Framework
– Engloba API’s e gerenciadores de recursos;
– Framework de componentes (úteis para desenvolvedores);
Arquitetura do Android
19. • Libraries
– Engloba as principais bibliotecas utilizadas pelo sistema:
• LibC, SQLite, OpenGL, entre outras;
• Linux Kernel
– Núcleo do S.O. Android (agora utiliza versão 3.14);
– Gerenciamento de processos, energia, drivers de hardware
e configurações de segurança;
– Responsável pela abstração do hardware do dispositivo;
Arquitetura do Android
20. • Android Runtime
– Camada-chave, onde se encontra a Dalvik;
– Responsável, por exemplo, pelo multitasking e
gerenciamento de memória;
– Garante conceito de ‘’sandbox’’ de aplicações, ou seja:
• Aplicações não podem interferir em outras, e nem no S.O.;
• Aplicações não podem interferir diretamente no hardware;
• Não existe a possibilidade de vinculação de aplicações a um
hardware específico;
Arquitetura do Android
21. • Android Runtime (cont.)
– Independência de aplicações:
• Cada aplicação representa um processo distinto no sistema;
• Processos se comunicam através de troca de mensagens;
• Kernel garante o isolamento de espaço em memória;
• Em suma: aplicações ocupam o mesmo espaço em memória, mas
cada uma delas representa uma instância distinta da Dalvik.
Arquitetura do Android
23. • Propósito
– Abstração de hardware dos dispositivos que executam o
Android;
– Otimizada para aparelhos móveis, que precisam consumir
o mínimo de memória, bateria e processamento possível.
Dalvik Virtual Machine
24. • Conceitos
– Dalvik funciona como uma instância isolada de processo;
– Cada aplicação roda em seu processo, que executa como
uma unidade totalmente granular:
• Em caso de crash, não afeta o sistema e nem outros processos em
execução paralela;
• Garantia de segurança;
– Compilador que segue o padrão Just in Time (JIT):
• A cada execução do app, a DVM traduz parte dos bytecodes em
código de máquina (binário);
• Assim, a cada passo, o sistema realiza mais cache destes recursos;
• Projetado desta forma para reduzir o tempo de warm-up.
Dalvik Virtual Machine
25. • Conceitos (cont.)
– ‘’init’’ é o processo pai de todos os processos Android;
– Sempre que uma aplicação Android é executada, a
seguinte sequência de passos é executada:
1. “init’’ cria um subprocesso chamado zygote;
2. zygote carrega e inicializa uma instância da DVM;
3. zygote contatcta o ActivityManager que se responsabiliza por
executar as classes Java referentes a esta aplicação;
Dalvik Virtual Machine
27. • Origem
– Dalvik é um dos produtos da Open Handset Alliance;
– O nome vem de uma pequena cidade da Islândia, local de
origem de seu principal conceptor, Dan Bornstein;
Dalvik Virtual Machine
28. • Funcionamento
– A Dalvik não é a JVM!
– Embutido no Android, existe uma ferramenta chamada dx,
responsável por transformar os arquivos com extensão
.class em arquivos de extensão .dex (Dalvik Executable);
– Em outras palavras, o bytecode Dalvik pode ser executado
em qualquer dispositivo Android, independentemente do
hardware;
Dalvik Virtual Machine
29. • Funcionamento (cont.)
– Aplicações Android são compiladas em arquivos .dex, que
são empacotados em um único arquivo no dispositivo, que
possui a extensão .apk (Android Package) ;
Dalvik Virtual Machine
31. • Motivações de criação
– A Dalvik não utiliza as bibliotecas-padrão do Java, que se
dividem em 3 grandes grupos:
• Java Standard Edition ;
• Java Enterprise Edition;
• Java Micro Edition;
– O Android também não inclui bibliotecas gráficas do Java
(AWT e Swing). Em vez disso, incluiu suas próprias.
Dalvik Virtual Machine
32. • Motivações de criação (cont.)
– Em suma, a Dalvik não utiliza a biblioteca Java class,
presente no ambiente de execução Java, mas sim, uma
alternative open-source:
– Decisão tomada pois mesmo o Java, suas bibliotecas e
ferramentas sendo gratuitas, a JVM, em si, não é:
• Possibilidade de problemas de licença com a Oracle;
• …o que não adiantou: inúmeros processos ocorridos!
Dalvik Virtual Machine
34. • Componentes de Aplicação
– Conjunto de componentes, que desempenham papéis
específicos e integrados, representam pilares da aplicação;
Aplicações Android
35. • Intent
– Representa a forma padrão de ativação de componentes;
– Envia uma mensagem assíncrona ao Sistema Operacional,
explicitando a intenção de se realizar uma ação:
• Iniciar uma nova Activity da aplicação,
• Realizar uma chamada telefônica para determinado número, etc.;
– A classe Intent contém uma lista pré-determinada de
constantes, para execução de ações gerais, tais como:
• ACTION_CALL: Ligar para um número de telefone;
• ACTION_VIEW: Exibir informações através de uma Activity;
Aplicações Android
36. • Intent (cont.)
– Filtragem de Intent leva em consideração 3 aspectos:
• Ação;
• Categoria;
• Opcionalmente, informações adicionais, como URI e MIME Type;
Aplicações Android
37. • Activity
– Representa uma interface visual da aplicação (tela);
– Local onde elementos gráficos, chamados de views, são
dispostos, de forma a compor a tela;
– Interação com o usuário;
– Representam estruturas independentes entre si e,
geralmente, há uma Activity principal, que representa o
ponto de partida da aplicação;
Aplicações Android
38. • Activity (cont.)
– Declaração de Activity no arquivo AndroidManifest.xml
Aplicações Android
39. • Services
– Executam ações em background, ligados a operações de
longa duração ou até mesmo processamentos remotos;
– Não possuem interface gráfica, e executam em background
mesmo se o usuário inicia novas aplicações:
• Player de música;
• Transferência de dados;
– Devem ser usados sempre que uma ação precisa se
estender além do escopo da aplicação;
Aplicações Android
40. • Services (cont.)
– Declaração de Service no arquivo AndroidManifest.xml
Aplicações Android
41. • Content Provider
– Gerencia formas de acesso padronizadas e segurança de
repositórios de dados entre aplicações distintas;
– Acessos ao Content Provider são feitos através de um
cliente específico, ou seja, um Content Resolver:
• Elo de ligação entre o ContentProvider e a aplicação cliente;
• Buscas realizadas através do método query() ;
• Encaminha a requisição para o Content Provider adequado,
através da autoridade da query-string;
– Necessidade de implementação dos métodos CRUD;
Aplicações Android
42. • Content Provider (cont.)
– Definição de Content URI :
• Prefixo/Scheme: Prefixo padrão ‘’content://’’, que garante o
tratamento da requisição por um Content Provider adequado;
• Autoridade: Identificador único do Content Provider. Geralmente
possui o caminho completo da classe na aplicação;
• Path: Caminho que o Content Provider utiliza para efetuar a query
na tabela correta;
• Parameter: Parâmetro adicional que denota o intuito de se obter
um registro específico da tabela, utilizando o campo _ID;
Ex: content://my_library/books/13
Aplicações Android
43. • Content Provider (cont.)
– Definição de Content Provider no AndroidManifest.xml:
Aplicações Android
44. • Broadcast Receiver
– Android implementa envio de mensagens através do
padrão ‘’Observer’’
• Intents são, por padrão, enviadas por meio de broadcast;
• As mensagens são enviadas sem saber quem as irá receber;
• Qualquer aplicação está apta a receber estas mensagens;
• Filtros são necessários para decodificar o receptor correto;
– Broadcast Receivers ‘’ouvem’’ mensagens enviadas por
qualquer aplicação
• Se as tags da mensagem corresponderem a um determinado filtro,
o Broadcast Receiver é instanciado, se já não o estiver;
Aplicações Android
45. • Broadcast Receiver (cont.)
– Exemplos de constantes de Intents nativas, cujos
componentes-alvo são Broadcast Receivers:
• ACTION_BOOT_COMPLETE (Total inicialização do S.O.);
• ACTION_HEADSET_PLUG (Aviso de Headset inserido ou retirado);
• ACTION_BATTERY_LOW (Aviso de nível crítico de bateria);
Aplicações Android
46. • Broadcast Receiver (cont.)
– Broadcast Receivers podem ser registrados de 2 formas:
• Dinamicamente, através do método registerBroadcast();
• Via AndroidManifest.xml, através da tag <receiver>;
Aplicações Android
47. • Necessidade de interação? Notificações!
– Canal de comunicação entre componentes;
– Exibem informações para o usuário;
– Podem emitir som, piscar de LEDs e até mesmo vibrações;
Aplicações Android
49. • Ciclo de vida de um aplicativo
– Setup: Instalação do ambiente Android (SDK), criação de
AVD’s e conexão de dispositivos-alvo;
– Development: Desenvolvimento de código do projeto
referente ao aplicativo;
– Debugging/Testing: Execução da aplicação em modo
Debug e utilização de ferramentas diversas de depuração
como a classe android.util.Log;
Publicação de Aplicativos
51. • Google Play
– Portal oficial de distribuição de aplicativos Android;
– Possui guidelines e políticas de submissão de apps, como:
• Não permite conteúdos considerados como spam;
• Garantia de não infrigimento da propriedade intelectual de
aplicativos de terceiros;
• Proibição de qualquer material pornográfico em apps;
• Não permite upload de apps que coletam informações, com fim
malicioso, sem o consentimento do usuário (spywares)
Publicação de Aplicativos
54. • Principais features
– Novidades em animações e transições;
– Notificações inteligentes e configuráveis;
– Projeto Volta, que irá oferecer maior eficiência no
consumo de bateria;
– Novas APIs de suporte a multimedia tunneling (como o 4K);
– Melhorias significativas em renderização gráfica e áudio;
– Material design;
– ART nativo;
Presente e futuro do Android
55. • Material design
– Padronização de comportamento visual entre dispositivos;
– Novas APIs para temas, widgets e views;
– Adição do conceito de ‘’eixo Z’’ em views (elevação 3D);
Presente e futuro do Android
56. • ART
– Implementa a abordagem ‘’Ahead of Time’’ (AoT);
• Realiza pré-compilação do bytecode (via dex2oat) em linguagem
de máquina (binário) no ato da instalação do app no sistema;
• Ganhos de performance em garbage collection;
• Transforma o código em uma dependência do sistema;
• Menor uso de CPU, logo, uma redução do consumo de bateria;
Presente e futuro do Android
58. • Futuro
– Números de crescimento
• Cerca de 75% dos smartphones mundiais rodam o Android;
• Mais de 1 milhão de novas ativações ocorrendo diariamente;
• 1 bilhão de usuários ativos mensalmente nos serviços do Google;
Presente e futuro do Android
59. • Previsão de vendas de smartphones (IDC)
Presente e futuro do Android
61. • PS Gamers
– App Android de consulta a dados da Playstation Network;
– Possibilita ao usuário visualizar diversas informações, como:
• Perfil;
• Level, progresso e escada de troféus;
• Lista de games;
• Troféus conquistados por game;
• Detalhes de troféu;
• Amigos online;
• Consulta de games e troféus de cada amigo;
Projeto Prático