sexta-feira, 4 de janeiro de 2008

Android - Parte 1


Este primeiro post não passa muito de uma (má, diga-se de passagem... :) tradução da documentação oficial do Android, adicionada de algumas (poucas) citações de minhas impressões pessoais acerca da tecnologia. Android é uma nova plataforma tecnológica criada por um consorcio chamado "Open Handset Alliance" encabeçado pela Google e mais de 30 parceiros. Tem como intuito fornecer uma alternativa livre e de código aberto as atuais soluções para dispositivos móveis. Antes do lançamento oficial, houve muita especulação a respeito de um possível "GPhone", infelizmente (ou felizmente) os boatos não se confirmaram, por fim a Google decidiu não investir em hardware, em vez disto, fez o mais natural, que é trabalhar no que ela faz bem, software de infra-estrutura. A parte do hardware (ou seja os aparelhos) ficará a cargo de parceiros como LG Eletronics, Motorola, Sansung, Intel, Texas Instruments etc...


Iniciando

A Androi Plataform, conjunto de softwares que faz de um aparelho, um celular Android é composta por:
  • Sistema operacional
  • Middleware
  • Aplicativos chave
No decorrer deste "tutorial", estudaremos mais a fundo o Android SDK. Em linhas gerais, o Android SDK fornece as APIs e ferramentas necessárias para começar a desenvolver para a Android Plataform ("Plataforma Android"). Toda a plataforma está fortemente apoiada sobre os ombros do Java, inclusive o Framework disponibilizado pela própria Google é desenvolvido utilizando esta linguagem.


Características da Plataforma Android
  • Application Framework: Conjunto de componentes reutilizáveis necessários para tornar o desenvolvimento de aplicativos mais simples.
  • Maquina virtual Dalvik: Maquina virtual Java otimizada para dispositivos móveis.
  • Browser Integrado: Utiliza a engine open-source WebKit (a mesma do Konqueror, Safari, etc...) para renderização de paginas Web.
  • Suporte avançado a gráficos: Biblioteca 2D customizada e biblioteca 3D baseada no OpenGL (especificação ES 1.0) com suporte a aceleração por hardware.
  • Banco de Dados Open Source SQLite
  • Suporta nativamente os tipos mais comuns de arquivos multi-mídia: MPEG4, H.264, MP3, AAC, AMR, JPG, PNG e GIF
  • Telefonia GSM
  • Bluetooth, EDGE, 3G, and WiFi (Depende do Hardware)
  • Camera Digital, GPS, bússola e acelerômetro (Depende do Hardware)
  • Rico ambiente de desenvolvimento: Emulador de dispositivos, ferramentas de depuração, monitoração de memória e performance e um plugin que integra tudo com o Eclipse (IDE genérica multi-plataforma, comummente utilizada para desenvolvimento em Java)

A Arquitetura Android


A arquitetura Android pode ser dividida entre os seguintes componentes:

Aplicativos

O Android por padrão vem com uma série de aplicativos básicos incluindo cliente de e-mail, programa de envio/recebimento de SMS, calendário, mapas, browser, contatos dentre outros. Como dito antes, todos os softwares são escritos em Java.

Application Framework

Os desenvolvedores terão acesso total a qualquer API do Framework utilizada pelas aplicações básicas. A arquitetura é desenvolvida para simplificar a reutilização de componentes; Qualquer aplicativo pode compartilhar suas capacidades, e outros aplicativos podem fazer uso destas capacidades (sujeito as restrições de segurança "forçadas" peloframework). Este mesmo mecanismo permite que componentes sejam substituídos pelo desenvolvedor.

Internamente, todas as aplicações da plataforma Android, são construidas a partir dos seguintes sistemas e/ou serviços:
  • Um rico e extensível conjunto de Views que podem ser utilizadas no desenvolvimento de suas aplicações, incluindo listas, grades, caixas de texto, botões e até mesmo um webbrowser embutivel.
  • Content Providers: Permite que os aplicativos acessem dados de outros aplicativos (e.g Contatos) ou compartilhem seus próprios dados.
  • Resource Manager: Prover acesso a partes dos aplicativos que não são elementos de programação (código), e.g: Imagens, strings para internacionalização, arquivos de layout, etc...
  • Notification Manager: Controla todos os alertas customizados exibidos na barra de status
  • Activity Manager: Gerencia o ciclo de vida da aplicação, controla a concorrencia e a "multi-tarefa" (multi-tasking/multi-threading) entre diversas "janelas" de uma aplicações.
Visivelmente o framework aproxima-se do padrão MVC em sua contrução, com seus 3 elementos básicos:
  • Model: Content providers
  • View: obviamente, as Views :)
  • Controller: Activity Manager (embora o seu foco não seja na regra de negócios em si, o controle que este serviço exerce sobre a camada View, possibilita a construção de validações interessantes)
Bibliotecas

O Android inclui um conjunto de bibliotecas C/C++ utilizadas por vários componentes do sistema. Suas capacidades são disponibilizadas aos desenvolvedores atravez do Android Framework. Algumas destas bibliotecas são elencadas abaixo:
  • System C library - uma implementação da bibliotéca "C" padrão (C system library - libc), sobe licença BSD, otimizada para sistemas embarcados baseados em Linux;
  • Media Libraries - baseada na biblioteca OpenCORE da PacketVideo; esta biblioteca suporta os mais populares formatos de audio e video incluindo MPEG4, H.264, MP3, AAC, AMR, JPG, e PNG;
  • Surface Manager - gerencia o acesso ao sub-sistema de video e compõe camadas 2D e 3D de multiplas aplicações;
  • LibWebCore - uma moderna engine para web browsers, são baseados nela o browser padrão do Android e um componente do tipo View, o Embeddable Web Browser;
  • SGL - engine para gráficos 2D
  • 3D libraries - implementação baseado nas APIs do OpenGL ES 1.0; esta biblioteca é utilizada tanto para aceleração por hardware (quando disponível) como pode utilizar um mecanismo altamente otimizado de aceleração 3D via software;
  • FreeType - impressão de fontes vetoriais ou raster;
  • SQLite - um mecanismo gerenciador de bancos de dados relacionais, leve e funcional, disponível para todas as aplicações.
Android Runtime

O Android inclui um conjunto de bibliotecas básicas que proveem a maioria das funcionalidades presentes nas bibliotecas padrão da linguagem Java. Cada aplicação Android roda em seu próprio processo (processos separados), em sua própria instancia da maquina virtual Dalvik. A Dalvik é escrita de modo que o dispositivo pode rodar multiplas maquinas virtuais de forma bastante eficiente. A maquina virtual Dalvik roda arquivos no formato "Dalvik Executable" (.dex), os aplicativos neste formato são otimizados para uso mínimo de memória. A maquina virtual Dalvik é "baseada em registradores" (este tipo de maquina costuma realizar as mesmas tarefas com muito menos instruções que as maquinas baseadas em "pilhas" ["stack-based"]), roda classes previamente compiladas por um compilador Java (bytecode) e convertidas em arquivos .dex pelo utilitario dx. A maquina virtual Dalvik invoca funções intrínsecas do kernel do Linux, a exemplo de execução em threads e gerenciamento de memória em baixo nível.

Kernel do Linux

O Android faz uso de serviços básicos do kernel 2.6 do Linux, como segurança, gerenciamento de memória, gerenciamento de processos, serviços de rede e modelo de drivers. O kernel também atua como uma camada de abstração (ou seja, "oculta" o trabalho sujo, "expondo" uma interface mais "amigável" as demais aplicações) entre o hardware e os demais softwares rodando no aparelho.


Considerações Finais


Contra a iniciativa da Google existe muita gente de peso, inclusive Steve Ballmer, o CEO e Show Man da Microsoft.

John Forsyth, vice presidente para assuntos estratégicos do Symbian, não acredita que a dominação da Google na internet se refletirá no mercado de dispositivos móveis.

Por outro lado, a Nokia, que antes engrossava as linhas da "turma do contra", parece estar se mostrando menos cética quanto a nova plataforma, tanto que Simon Ainslie, diretor-gerente da Nokia no Reino Unido afirma que a gigante Finlandesa está aberta a discussões a respeito da nova tecnologia.

Uma coisa é certa, a Google e seus parceiros enfrentarão um grande desafio ao bater de frente com seus concorrentes naturais, plataformas consolidadas como Symbian, Windows Mobile, que possuem um considerável Market Share e a confiança de muitos usuários. Mas pelas disposição para inovações e pelo apetite por novos mercados que a turma de Mountain View vem apresentando nos últimos anos, não devemos nos assombrar se daqui a muito pouco tempo, todos nós estejamos com um pedaço de tecnologia Google no bolso.

Na próxima, prometo postar algo melhor e original... Abraços, e até a proxima!

Fontes: Android Documentation, Android Developer Blog, Open Handset Alliance

Nenhum comentário:

Postar um comentário