O sistema operacional Android impressionou o mundo,
permitindo que aplicativos de computação em nuvem sofisticados sejam
executados onde quer que você esteja.
Projetado para ser altamente eficiente em dispositivos alimentados por
bateria, como o telefone inteligente T-Mobile G1, fundamentalmente, o
Android é Linux e há diversas camadas para o modelo de programação do
Android que permitem a criação de aplicativos seguros ajustados para
computação em nuvem.
Introdução
Em um segmento de mercado inundado por metáforas excessivamente
sagazes, não é de se surpreender quando surge outra e capta a imaginação
popular de pessoas criativas das áreas de negócios e de TI. Computação em nuvem é uma dessas metáforas e ? perdoe-me pela expressão ? impressionou o mundo. Mas o que isso realmente significa?
Nuvens, é claro, consistem em uma enorme quantidade de partículas de
vapor d’água, chegando a centenas de milhões. Nuvens não têm controle
central e, basicamente, vão para onde o vento sopra.
Com essa
perspectiva, a grande quantidade de computadores clientes e servidores
da Internet juntamente com muitos diferentes propósitos e entidades de
controle que direcionam seu progresso são semelhantes a nuvens. Junte
isso à revolução de dados wireless que as empresas de telefonia celular
nos trouxeram e parece, realmente, que estamos todos cobertos por uma
“nuvem” invisível de energia de computação.
Desde o início de computadores eletrônicos, há uma divisão clara da
mão-de-obra entre quatro partes funcionais principais de um computador:
- Dispositivos de entrada/saída (E/S) que fornecem a interface com pessoas/computador
- Unidade central de processamento
- Memória de acesso aleatório volátil (RAM)
- Memória não volátil
As três primeiras partes colocam a “computação” nos computadores. É
na quarta parte, onde os ativos de dados importantes são geralmente
armazenados, que mudou mais radicalmente com o advento de computação em
nuvem. Ativos de dados importantes residem na memória não volátil para
que sejam protegidos contra a queda de energia elétrica ?
independentemente de se a perda é deliberada.
Geralmente, dispositivos
de memória não volátil são discos rígidos, mas também podem ser
dispositivos de estado sólido, como placas digitais seguras (SD) e, até
mesmo, dispositivos de fita magnética (praticamente obsoletos agora).
Mas esses dispositivo de armazenamento têm suas limitações.
O tempo passa, a tecnologia progride e vieram as redes de
computadores, nas quais os ativos de dados importantes de uma
organização podem ser centralizados em um computador compartilhado por
diversos terminais e dos quais se pode fazer backup regularmente, como
uma função base necessária de TI.
Esse modelo (conhecido como o modelo de mainframe)
ofereceu muitas vantagens ? uma sendo deixar mais leve a carga que cada
local de terminal tinha. Pequenos escritórios com pouco mais de um
pequeno terminal (teclado, mouse, monitor e PC) podiam acessar gigabytes
de dados da empresa e o poder de processamento de grandes mainframes
sem atravancar o local ? desde que estivessem conectados por fios.
A próxima grande mudança de paradigma veio com a rede das redes que conhecemos afetuosamente como a Internet,
onde sistemas de computadores absolutamente gigantescos (redes locais)
podem atender enormes populações de pequenos terminais em qualquer parte
do mundo onde uma antena parabólica possa ser colocada. A natureza
remota wireless dessa configuração ficou conhecida como a nuvem.
Então, vieram os assistentes pessoais digitais (PDAs), os telefones
móveis e os telefones inteligentes, para os quais a miniaturização de
computadores progrediu para o formato portátil, fator que conhecemos e
amamos tanto. De repente, terminais inteligentes estão nas mãos de
incontáveis milhões de pessoas produtivas, produzindo e consumindo
informações a taxas prodigiosas.
De meados ao final dos anos 90, e-mail e a World Wide Web eram os
aplicativos mais populares que dominavam a nuvem. A maioria das pessoas
interagia com a nuvem usando um navegador da Web e entendia que a
Internet era um aplicativo relativamente simples. Com o avanço de
sucessos comerciais, como o Yahoo! e o Google, servidores e conexões de
rede de terabytes substituíram discos rígidos locais como os
dispositivos de armazenamento não volátil preferenciais.
Assim como
muitos visionários de pensamento progressista previram, a nuvem
tornou-se uma utilidade moderna, como água, telefones e eletricidade.
Usando a rede digital de telefone móvel como um Provedor de Serviços da
Internet (ISP), a nuvem cresceu e usa milhões de dispositivos portáteis
como a principal ferramenta para exibir os dados que residem nesses
servidores.
Assim como as nuvens se deslocam e são alteradas pelos ventos das
mudanças, o mesmo ocorreu com os paradigmas sob os quais esses
dispositivos operam ? os terminais ficaram menores, mais poderosos e
muito mais portáteis, enquanto os servidores, de forma semelhante,
ficaram mais poderosos e mais capacitados para atenderem às necessidades
de dados dos usuários através da virtualização de software e da medição
de seu uso.
As empresas não precisam mais manter grandes e caros “parques” de
servidores 24 horas por dia quando há outra alternativa menos cara:
contratar esses serviços externamente através de fornecedores, como
Google, Amazon e IBM.
Através da virtualização, os aplicativos que
anteriormente eram executados em ambientes customizados podem ser
duplicados ou “ter imagem criada” para serem executados na nuvem nos
servidores do fornecedor. E com a medição adequada desses serviços, a
empresa não precisará pagar preços altos para aquelas horas em que seus
serviços estão sendo usados de forma mínima.
À medida que a tecnologia de hardware seguiu em frente, o mesmo
ocorreu com software, e vimos a criação de novos aplicativos. Por
exemplo, serviços baseados em local que mapeiam os negócios próximos ao
local em que a torre de celular ou o sistema de posicionamento global
(GPS) integrado determinou que você está. Novos mercados talhados para
download e teste de programas e arquivos de dados úteis, como o Android
Market e o Amazon MP3 Market, para aquisição e download de música.
Sem
dúvida, veremos avanços adicionais nesses novos aplicativos exclusivos
de computação em nuvem ? por exemplo, as empresas poderiam classificar e
selecionar informações de contato regionais, em seguida, transferir
automaticamente a lista do dia de chamadas aleatórias para o telefone
móvel baseado em Android do representante de vendas regional enquanto
ele dorme.
A computação em nuvem, onde dispositivos portáteis complementam
servidores poderosos, requer um sistema operacional que maximiza o que
os arquitetos e programadores do sistema podem fazer em um pequeno
computador cliente. Android é esse sistema operacional.
A arquitetura do Android
Primeiramente, o Android é uma pilha de software para dispositivos
móveis. Isso significa que no topo da lista de prioridades está a
preservação da energia da bateria e o gerenciamento eficiente de
recursos de memória limitados. Há cinco camadas distintas para a pilha
do sistema Android:
- O núcleo do Acorn RISC Machine (ARM) Linux forma a base sólida
sobre a qual todas as outras camadas estão. Linux é uma tecnologia
comprovada que é altamente confiável e a família de processadores ARM é
conhecida pelo alto desempenho em requisitos de energia muito baixos. - As bibliotecas fornecem o código de nível inferior reutilizável e compartilhável para funções básicas, como funções codecs
? software para codificação e decodificação de som e vídeo digital ?
para apresentação de gráficos ricos em um pequeno monitor, suporte a
shell seguro para tráfego TCP/IP criptografado na nuvem, assim como
suporte a componente para navegação na Web (WebKit), funcionalidade de
banco de dados SQL (SQLite) e funcionalidade da biblioteca C padrão,
esperados em um sistema Linux. - O interpretador de bytecode do tempo de execução Dalvik, muito
parecido com o interpretador de bytecode da linguagem Java? , inclui
alguns recursos distintos que definem de forma exclusiva o modelo de
segurança e de preservação de energia do Android.
Todo aplicativo atualmente em execução, por exemplo, possui seu
próprio ID do usuário e sua própria cópia do interpretador em execução
para separar processos de forma rígida por segurança e confiabilidade. - A estrutura do aplicativo Android permite que você use e
substitua componentes conforme achar necessário. Essas classes Java de
alto nível são componentes altamente integrados que definem a API do
Android. - Os principais aplicativos do Android incluem o navegador WebKit,
o calendário Google, o Gmail, o aplicativo Maps, o SMS messenger e um
cliente de e-mail padrão, entre outros. Os aplicativos do Android são
escritos na linguagem de programação Java e você pode fazer download de
muitos mais do Android market rapidamente.
Cada aplicativo Android pode ser subdividido ainda mais em unidades funcionais distintas:
- Atividades
- Intentos
- Serviços
- Modelo de segurança
Atividades
Atividades são os componentes de um aplicativo Android que estendem a classe base
Activity e definem uma interface que consiste em uma Visualização que responde a Eventos.
Se um aplicativo consiste em três janelas (por exemplo, uma janela de
login, uma janela de visualização de texto e uma janela de visualização
de arquivo), cada uma é geralmente representada por uma diferente classe
Activity.
O Android mantém uma pilha de histórico para cada execução de aplicativo a partir da página inicial e você pode clicar no botão Voltar para rolar de volta por esse histórico de atividades.
Intentos
Intentos, como atividades, são uma classe especial de código
de aplicativo que descrevem e definem o que um aplicativo deseja fazer.
Intentos incluem uma camada sem direcionamento que permite reutilização e
substituição sofisticadas de componentes.
Por exemplo, um aplicativo
pode apresentar um botão rotulado Clientes que, ao ser clicado,
exibe uma lista de contatos que são seus clientes. E é aqui que entra a
falta de direcionamento: não é necessário usar o visualizador padrão
para esses contatos; em vez disso, você pode substituir por um
visualizador diferente.
Para alguns aplicativos, isso pode ser uma função muito poderosa de integração de aplicativos.
Possivelmente, uma mapa topográfico é melhor para uma exibição específica do que a visualização de mapa padrão.
Classes, como uma BroadcastReceiver, definem código
que será executado quando os eventos externos acionarem o mesmo.
Eventos, como o disparo de um cronômetro ou o toque de um telefone,
podem ser monitorados dessa forma. Geralmente, código como esse não
exibe uma janela, mas pode usar a classe NotificationManager
para alertar o usuário sobre algo que precisa de atenção.
Serviço
Um serviço é um aplicativo executado em um nível baixo e sem um
monitor ou UI. É, geralmente, um aplicativo que deve ser executado por
muito tempo em segundo plano. Um exemplo perfeito disso é um programa
reprodutor de mídia reproduzindo uma lista de músicas.
Apesar de um
aplicativo de reprodução de mídia apresentar uma UI que permite que os
usuários definam suas listas de reprodução, o programa passa o controle
para o serviço para realmente reproduzir as músicas da lista de
reprodução fornecida.
Modelo de segurança
O modelo de segurança do Android permite que os programas tenham
somente seus próprios dados. Se os programadores quiserem compartilhar
dados entre diversos programas variados, eles podem definir provedores
de conteúdo para esse propósito.
O pacote android.provider define classes e
interfaces que permitem que aplicativos leiam muitos bancos de dados integrados do Android.
Informações, como contatos, fotos e músicas, são facilmente compartilhadas entre aplicativos com essas interfaces.
O poder de software livre nunca deve ser subestimado, assim como o
poder de pessoas livres e criativas. Livre de APIs proprietárias e
interesses de empresas, que geralmente obstruem o progresso de
engenharia de software, a plataforma Android possui uma comunidade de
desenvolvedores grande e muito ativa, cujos talentos combinados
realmente fazem da soma maior que as partes.
Deseja conferir poderes a
sua carreira de programação? Aprenda a programar na plataforma Android
e, algum dia, terá milhões de usuários de telefone móvel em seu mercado
em potencial ? alguns dos quais podem precisar de seu programa.
O coração do Android é o ARM Linux. Isso, por si só, deveria
inspirar confiança na capacidade da importância dessa plataforma em
crescer rapidamente. Linux é um sistema operacional rápido e seguro com
muitos milhares de programadores familiarizados com ele. Muitos sistemas
baseados em Linux são conhecidos por terem um tempo de atividade de
anos consecutivos conectados e atendendo pedidos na nuvem ? e isso,
realmente, define confiabilidade.
O ambiente de desenvolvimento: Eclipse, Windows, Linux
Os programadores têm diversas opções em relação ao ambiente de
desenvolvimento Android. Podem usar o Microsoft Windows XP,
Windows
Vista e Windows 7, o Macintosh OS X (V10.4.8 ou posterior, somente x86) ou o
Desktop
Linux (preferencialmente, o Ubuntu). Há um kit de desenvolvimento de
software (SDK) que pode ser transferido por download para todos esses
sistemas operacionais comumente usados.
É possível usar um IDE de GUI, como o Eclipse ou o NetBeans da Sun
Microsystems, ou o famoso método “verdadeiro programador” da linha de
comando e um editor padrão. A opção é sua.
A comunidade Android incentiva comunicação, assim como as empresas
por trás da criação do Android ? Google, HTC, T-Mobile e outros membros
do Projeto Open Handset Alliance. Open realmente significa manter linhas de comunicação entre pessoas (programadores, usuários, profissionais de marketing, etc.)
abertas, protocolos abertos e APIs de programação abertas.
As organizações também podem colocar programas e dados
proprietários no Android, graças aos tipos de licenças de software
usados. Isso evita que elas fujam da plataforma, mas também não limita
as opções dos consumidores. É uma combinação vencedora para todas as
partes.
Comece com o SDK do Android
A primeira tarefa para qualquer pessoa interessada em desenvolver para o
Android é fazer download e instalar o SDK do Android.
Agora, você está pronto para programar!
Há tantas maneiras de iniciar a
programação quanto há programadores. Alguns, incluindo a minha pessoa,
gostam de estudar tudo que podem fazer antes de iniciar a codificação.
Outros gostam de entrar de cabeça e seguir os exemplos de tutoriais
fornecidos pela abrangente documentação do Android.
Mas onde quer que estejam suas inclinações, você deve, eventualmente,
codificar alguma coisa. Para iniciar, verifique o desvio do Android no
programa mais complexo Hello World – ao final do artigo consulte a seção Recursos para obter o aplicativo de amostra “Hello Android”.
Recursos do desenvolvedor
Há diversos recursos na nuvem para desenvolvimento para o Android,
incluindo diversos wikis e fóruns da comunidade Android, assim como
diversos blogs de programação do Android.
A principal empresa que
direciona o fenômeno Android, a Google, é, fundamentalmente, uma empresa
de comunicações e, portanto, possui diversos fóruns úteis (conhecidos
como Google
Groups) para comunicação entre desenvolvedores de diferentes conjuntos de qualificações e talentos.
Os links do Android na seção Recursos
não conseguem nem começar a mostrar a vastidão do universo Android.
Computação em nuvem ? e o Android, especificamente ? é algo muito,
muito, muito interessante.
Mantendo nossas cabeças nas nuvens: um olho no futuro
Imagine seu telefone celular Android como meramente uma extensão do
poder de computação coletiva. Enquanto estiver sentado em um café
tomando seu latte favorito, o que gostaria de ver em seu telefone
portátil? Diagramas de fluxo de caixa? Dados e gráficos do portfólio
para mostrar seu crescimento? Possivelmente, os dados de terremoto atuais diretamente do
Centro Nacional de Informações de Terremotos ou simplesmente quem ganhou
o campeonato da NBA na noite passada?
O acesso aos serviços que ativam seus aplicativos customizados de
computação em nuvem é tão simples quanto visitar os Web sites do centro e
explorar o que podem fazer por você.
Os dados estão “lá fora” e o
poder de processamento para que façam sentido, também: tudo que se
precisa é você fazer as coisas acontecerem. O tempo dirá quais novos aplicativos inovadores de computação em
nuvem serão criados nos próximos anos com todos buscando superar as
criações dos grandes desenvolvedores que os precederam.
Recursos
Aprender
- Saiba mais sobre Android.
- Descubra porque a computação em nuvem é importante, como iniciar e onde aprender mais sobre ela no developerWorks em Espaço de Computação em Nuvem.
- Interaja com desenvolvedores do Android em Google Groups.
- Para obter informações adicionais sobre o potencial de computação em nuvem, verifique “Manifesto Arquitetônico: Uma Introdução a Possibilidades (e Riscos) de Computação em Nuvem.”
- Para ouvir entrevistas e discussões interessantes para desenvolvedores de software, verifique os podcasts do developerWorks.
-
Visite, no developerWorks, a Zona de Software Livre
para obter informações extensivas de instruções, ferramentas e
atualizações de projetos para ajudá-lo a desenvolver com tecnologias de
software livre e usá-las com produtos IBM. - Assista e aprenda sobre tecnologias da IBM e de software livre e funções de produtos gratuitamente com as demos on demand do developerWorks.
Obter produtos e tecnologias
- Acesse produtos de middleware IBM no ambiente virtual Amazon Elastic Compute Cloud (EC2) e comece a desenvolver seus aplicativos hoje.
- Faça download do SDK do Android.
- Verifique o aplicativo de amostra do Android.
- Inove seu próximo projeto de desenvolvimento de software livre com o software de avaliação da IBM, disponível para download ou em DVD.
*
artigo publicado originalmente no developerWorks Brasil, por Bill Zimmerly
Bill Zimmerly é um engenheiro de conhecimento, um programador de
sistemas de nível inferior e especialista em diversas versões do UNIX e
do Microsoft
Windows, além de um pensador livre que reverencia o altar da Lógica.
Bill também é conhecido como uma pessoa irracional. Irracional como em: “Pessoas sensatas adaptam-se ao mundo. Pessoas irracionais tentam adaptar o mundo a elas.
Todo o progresso, portanto, depende das pessoas irracionais” (George
Bernard Shaw). Criar novas tecnologias e escrever sobre elas são suas
paixões.
Ele reside na região rural de Hillsboro, Missouri, onde o ar é fresco,
as paisagens inspiradoras e boas vinícolas estão por toda a parte.
Não há nada como escrever um artigo sobre shell script do UNIX enquanto
se saboreia um copo claro como cristal de Stone Hill Blush. Ele pode ser
contatado em bill@zimmerly.com.






