quinta-feira, 21 de julho de 2011

Características e Arquitetura Android


Características e Arquitetura Android

No post anterior, citei o SDK, que é um kit de desenvolvimento e através dele, temos as ferramentas e APIs necessárias para desenvolver aplicações em Java para o Android.
A plataforma Android, possui alguns recursos:

- Application framework: possibilita a substituição e reutilização de componentes.

- Máquina Virtual Dalvik: otimizada para dispositivos móveis.

- Navegador Web Integrado (Browser): baseado na engine open source  webkit.
                                 
- Gráficos Otimizados: possui uma biblioteca 2D e 3D baseada na especificação   
  OpenGL ES 1.0 (aceleração de hardware é opcional).

- SQLite: para guardar dados estruturados, ou seja, armazenar dados no formato de estruturas relacionais.

- Suporte multimídia: para vídeo, áudio e formatos de imagem (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF).

- Telefonia GSM (dependente de hardware).

- Bluetooth, EDGE, 3G, e WiFi (dependente de hardware).

- Câmera, GPS, compasso, e acelerômetro (dependente de hardware).

- Rico Ambiente de Desenvolvimento: incluindo um emulador de dispositivo, ferramentas de depuração, analisador de memória e performance, e um plugin para o Eclipse (ADT).


Arquitetura Android


De acordo com a figura, podemos visualizar a estrutura da arquitetura Android que é dividida em camadas: Applications, Application Framework, Libraries, Android Runtime e Linux Kernel.

Applications: Localiza-se nesta camada, um conjunto de aplicações padrões, como - um cliente de e-mail, programa de SMS, calendário, mapas, navegador, contatos, agenda, entre outros (todos desenvolvidos em Java).

Application Framework: Esta camada enfatiza a reutilização de código, pois é nesta camada que se encontram os componentes que permitirão que novas estruturas sejam utilizadas futuramente. Abaixo o conjunto de componentes desta camada:

* Um rico e grande conjunto de componentes gráficos que podem ser utilizado para construir uma aplicação, e também listas, grids, caixas de textos, botões, e até um navegador web embutido.

* Provedores de conteúdo que habilitam às aplicações acessar dados de outras aplicações (Ex: Contatos) ou compartilhar seus próprios dados.

* Gerenciador de recursos que prove acesso a recursos não codificados como strings, gráficos e arquivos de layout.

* Um gerenciador de notificação que permite que todas as aplicações exibam mensagens de alerta personalizáveis na barra de status.

* Um gerenciador de atividade que gerencia o ciclo de vida das aplicações e permite controlar os recursos previamente alocados, sendo que caso eles não estejam sendo mais utilizados, os mesmos são deslocados para liberar memória.

Libraries e Android Runtime: Nesta camada, encontram-se as bibliotecas escritas em C/C++e o ambiente de execução (Composta pelas bibliotecas e pela máquina virtual Dalvik). Toda aplicação Android roda em seu próprio processo, com sua própria instância da máquina virtual.

- System C library (Biblioteca de Sistema C) – uma implementação derivada da biblioteca C padrão sistema (libc) do BSD sintonizada para dispositivos rodando Linux.

- Media Libraries (Bibliotecas de Mídias) – baseado no PacketVideo’s OpenCORE; as bibliotecas suportam a maioria dos formatos de áudio e vídeo, imagens como MPEG4, H.264, MP3, AAC, AMR, JPG, e PNG.

- Surface Manager (Gerenciador de Superfície) – gerencia o acesso ao subsistema de exibição bem como as múltiplas camadas de aplicações 2D e 3D.

- LibWebCore – um web browser engine utilizado tanto no Android Browser quanto para exibições web.

- SGL – uma engine de gráficos 2D.

- 3D libraries – uma implementação baseada na especificação OpenGL ES 1.0 APIs, as bibliotecas utilizam aceleração 3D via hardware (quando disponível) ou o software de renderização 3D altamente otimizado incluído no Android.

- FreeType – renderização de fontes bitmap e vetoriais de fontes.

- SQLite – um poderoso e leve engine de banco de dados relacional disponível
para todas as aplicações.

Linux Kernel: Esta é a base da camada. O Kernel também atua como uma camada de abstração entre o hardware e o software. É utilizada a versão 2.6, onde fornece serviços do sistemas, como segurança, gerenciamento de memória, gerenciamento de processos, pilhas de redes, etc.

A tabela abaixo apresenta as principais APIs Android


Nossa !!! Haja teoria.
No próximo post, vamos entender a organização do código no Eclipse.

Até breve !

Nenhum comentário:

Postar um comentário