Acima das Nuvens com o Android

Computação em nuvem e a pilha de software Android

O sistema operacional Android de software livre 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. Voe mais alto com o Android e experimente a computação remota como se nunca tivesse feito isso antes.

Bill Zimmerly , Freelance Writer and Knowledge Engineer, Author

Photo of Bill ZimmerlyBill 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® e 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.



17/Mar/2009

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 ou o Windows Vista®, 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 (consulte Recursos). 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 (consulte 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

A IBM está trabalhando duro para criar dois grandes centros de computação em nuvem no Research Triangle Park, Carolina do Norte, e em Tóquio. 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 a IBM pode fazer por você (consulte Recursos).

Você pode gravar seus aplicativos para que tirem proveito da nuvem, onde recursos de backup e restauração são automáticos e engenheiros qualificados estão disponíveis para tornarem suas visões realidade. Imagine seu telefone celular Android como meramente uma extensão do poder de computação coletiva da IBM. 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 imagem mais recentes da NASA executados em seu programa de filtragem customizado em um servidor de processamento paralelo de velocidade muito alta na noite passada? 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? 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

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre
ArticleID=391262
ArticleTitle=Acima das Nuvens com o Android
publish-date=03172009