fg.raonioliveira.com.br
COMPUTAÇÃO MOBILE E CLOUD
Prof. Raoni Oliveira (raoni.oliveira@faculdade guararapes.edu.br)
COMPUTAÇÃO MOBILE
INTRODUÇÃO A telefonia móvel, desde que foi criada em 1973 por Martin Cooper, trouxe diversos benefícios para todo o mundo. A possibilidade de levar um aparelho celular no bolso e fazer ligações em qualquer lugar, a qualquer momento, foi uma inovação muito bem aceita pelos consumidores. Sem dúvida, os aparelhos celulares hoje possuem um papel fundamental na vida de muitos. Desde sua criação, os aparelhos celulares passaram por um processo de evolução constante. Diversos fabricantes do mundo todo investiram tempo e recursos financeiros para criar novos aparelhos, cada vez mais modernos e desejados pelos consumidores.
INTRODUÇÃO Dentre os avanços obtidos destacam-se a miniaturização dos aparelhos, melhor qualidade dos sinais das operadoras (2G, 3G, 4G) e novas funcionalidades (câmera, acelerômetro, GPS, bluetooth). A redução do preço dos aparelhos celulares, tornando-os mais acessíveis, possibilitou a aquisição dos mesmos por parte da população menos favorecida financeiramente. São diversos os fabricantes de aparelhos celulares, dentre eles destacam-se a Motorola, Nokia, LG, Samsung, Apple e BlackBerry. Os fabricantes costumam adotar um SO (Sistema Operacional) para seus aparelhos, em alguns casos eles desenvolvem seus próprios sistemas operacionais. Os sistemas operacionais, também conhecidos como plataformas, mais utilizados são o Android, iOS, Windows Phone, BlackBerry OS e Symbian. Cada SO possui características únicas que as diferem das demais. Linguagens de programação e ferramentas de desenvolvimento são os principais fatores que diferem uma plataforma da outra.
INTRODUÇÃO Os aplicativos para plataformas móveis se tornaram cada vez mais comuns e requisitados pelos usuários. As plataformas possuem lojas virtuais onde vendem os aplicativos que são publicados por empresas especializadas e desenvolvedores de mundo todo. Pelo fato de cada plataforma possuir suas características únicas, a possibilidade de desenvolver um aplicativo multi-plataforma (que seja compatível com mais de uma plataforma) é, no mínimo, interessante.
AS 7 PRINCIPAIS LINGUAGENS DE PROGRAMAÇÃO USADAS EM DESENVOLVIMENTO MOBILE Java
Adquirida pela Oracle, é a linguagem mais utilizada por programadores ao redor do mundo. Orientado a objetos, o Java é compilado e flexível, podendo ser executada tanto numa janela de navegador quanto em aparelhos sem browser. Outra grande vantagem da linguagem Java é a capacidade multiplataforma, cujo código é executado com especial sucesso em sistemas Android e Windows. Ainda assim, quando fala-se em desenvolvimento mobile no Brasil, com a salada mista de SO nos smartphones e tablets, dependendo dos seus objetivos, uma plataforma integrada é mais do que bem-vinda: é quase indispensável.
AS 7 PRINCIPAIS LINGUAGENS DE PROGRAMAÇÃO USADAS EM DESENVOLVIMENTO MOBILE C
Desenvolvida nos anos 1970, pode-se dizer que a linguagem C é como o latim para a maioria dos idiomas ocidentais: uma língua-mãe. Dela se originaram Java, C# e praticamente todas as outras. Contudo, assim como o latim, é complexa e exige de você muitas linhas para cumprir tarefas que outras linguagens fazem em apenas uma. Também é compilado, e ideal para sistemas com muitos cálculos ou para jogos com gráficos espetaculares. Se você tiver tempo e criatividade, pode ser uma escolha interessante.
AS 7 PRINCIPAIS LINGUAGENS DE PROGRAMAÇÃO USADAS EM DESENVOLVIMENTO MOBILE C++ Derivada diretamente da linguagem C, essa linguagem é uma das mais populares e utilizadas pelo comércio devido ao fácil manuseio e pluralidade de plataformas. Você pode criar aplicativos simples para uma infinidade de funções. Mas não é só isso. Para se ter uma ideia, a C++ foi usada como base para o desenvolvimento de softwares grandiosos como Photoshop, Illustrator, Firefox e Microsoft Office. Python Esse sim parece nome de alguma civilização dos planetas inventados por George Lucas e Gene Roddenberry. No entanto, o nome é oriundo do grupo de comediantes ingleses Monty Python. É uma linguagem com sintaxe clara e didática, excelente particularmente se você for um iniciante. No entanto, é uma linguagem robusta, uma vez que permite ao programador resultados sofisticados apesar da simplicidade. Está presente em web apps megapopulares como Instagram e Pinterest, por meio do framework Django, além de Yahoo! e Google.
AS 7 PRINCIPAIS LINGUAGENS DE PROGRAMAÇÃO USADAS EM DESENVOLVIMENTO MOBILE Objective-C
Também conhecida como Obj-C, essa linguagem foi utilizada pela Apple enquanto a C++ era a moda. Também foi desenvolvida a partir da linguagem Smalltalk, não obstante com mais foco em funções gráficas e de exibição. É a base original dos aplicativos feitos para iOS e Mac OS X e orientada a objeto. Está em processo de substituição pela Swift. Swift É a nova linguagem desenvolvida pela Apple. Não há opção melhor se o seu objetivo é focar em aparelhos iOS. Recentemente, a marca inventada por Steve Jobs anunciou que a Swift será transformada em código aberto. A medida busca aumentar o número de programadores e transformá-la na linguagem mais popular para desenvolvimento de softwares e aplicativos mobile.
AS 7 PRINCIPAIS LINGUAGENS DE PROGRAMAÇÃO USADAS EM DESENVOLVIMENTO MOBILE C#
Assim como o Obj-C está para a Apple, o C# está para a Microsoft. Todavia, a empresa fundada por Bill Gates não tem se saído muito bem no desenvolvimento mobile. Ainda assim, a credibilidade estabelecida pelo Windows no Brasil é imensa e você não pode descartá-la de forma alguma. Logo, se pretende desenvolver aplicativos que englobem o sistema mais popular do mundo é melhor incluir a linguagem C# na sua lista. Finalmente, essas são as principais linguagens para desenvolvimento mobile. Lembre-se de não levar em conta apenas o gosto pessoal, mas sim os objetivos finais e as plataformas que pretende atingir.
LINGUAGENS CROSS-PLATAFORMA Cross-Plataforma (cross-platform) de desenvolvimento mobile é uma técnica para desenvolver uma única base de código para os aplicativos que venham a ser utilizados em diferentes sistemas operacionais. Os principais sistemas operacionais, tais como telefone android e iOS são estruturalmente diferentes em sua arquitetura
LINGUAGENS CROSS-PLATAFORMA Google e Apple possuem codificação diferente, o que torna muito difícil para os programadores escrever uma base de código única e que seja eficaz para ambas as plataformas. Isso também significa que os desenvolvedores terão de duplicar código e conhecer como as duas plataformas funcionam. Por estas e muitas outras razões a demanda por desenvolvimento cross-plataforma mobile vem crescendo cada vez mais no mercado. A necessidade básica para os programadores em qualquer plataforma é a compatibilidade. Abaixo estão sete ferramentas cross-browser que ajudará qualquer desenvolvedor no caminho para a criação de aplicativos flexíveis que resistem ao teste de compatibilidade.
LINGUAGENS CROSS-PLATAFORMA MoSync
É uma ferramenta avançada para o desenvolvimento de aplicações multi-plataforma. O kit de desenvolvimento padrão inclui bibliotecas para tecnologias comuns utilizadas para moldar o futuro da web. MoSync é em grande parte compatível com o Eclipse e suporta C / C ++, PHP, Python, Ruby, JavaScript e Java. A melhor coisa sobre o MoSync é que você consegue importar aplicativos nativos sem muito esforço, aplicativos nativos como Symbian, Windows Mobile, Linux Mobile, Android, iOS e plataformas iPad. Desenvolvedores mobile certamente irá apreciar o grande MoSync. 2. Whoop Whoop é uma ótima plataforma para iniciantes em desenvolvimento mobile, para aqueles que procuram desenvolver versões beta de seus projetos. No entanto, Whoop é muito básico e perde em requisitos importantes, mesmo que seja muito fácil de usar.
LINGUAGENS CROSS-PLATAFORMA Whoop
Tem uma interface que permite aos desenvolvedores WYSYWIG arrastar e soltar elementos dos aplicativos e ajustar o código da barra de tarefas. Ele funciona bem com Windows Mobile, Symbian Blackberry, Android, iPhone, e outros grandes sistemas operacionais mobile. Ele é gratuito, com alguns pacotes pagos disponíveis. Appcelerator (Titanium) Utiliza a recursos web para permitir a compatibilidade entre plataformas. Os aplicativos nativos são derivados de tecnologias como HTML5, CSS3, JavaScript, PHP, Python e Ruby. Esta plataforma é realmente eficiente, e dá aos usuários acesso a mais de 300 API. Appcelerator também é muito fácil de
LINGUAGENS CROSS-PLATAFORMA Whoop
Tem uma interface que permite aos desenvolvedores WYSYWIG arrastar e soltar elementos dos aplicativos e ajustar o código da barra de tarefas. Ele funciona bem com Windows Mobile, Symbian Blackberry, Android, iPhone, e outros grandes sistemas operacionais mobile. Ele é gratuito, com alguns pacotes pagos disponíveis. Appcelerator (Titanium) Utiliza a recursos web para permitir a compatibilidade entre plataformas. Os aplicativos nativos são derivados de tecnologias como HTML5, CSS3, JavaScript, PHP, Python e Ruby. Esta plataforma é realmente eficiente, e dá aos usuários acesso a mais de 300 API. Appcelerator também é muito fácil de aprender.
LINGUAGENS CROSS-PLATAFORMA Rhomobile
É uma ferramenta integrada desenvolvida em Ruby, e é usado para fazer aplicações que funcionam em várias plataformas mobiles. Ele permite que aplicativos nativos possam ser criado para Windows Mobile, Symbian, Android, iOS e RIM. Isso deriva da compatibilidade acentuada nos recursos avançados de dispositivos móveis. RhoHub, é um ambiente de código nuvem de hospedagem enquanto RhoSync é um on-the-fly servidor independente, o que aumenta a riqueza da experiência do desenvolvedor. Ambos RhoSync e RhoHub tornam o desenvolvimento mobile mais prático e livre de problemas. PhoneGap Esta plataforma de desenvolvimento premiada é capaz de lidar com aplicativos para Android, Symbian, Palm, Blackberry, iPhone e iPads. Ele é baseado em tecnologias tais como JavaScript, HTML e CSS3. PhoneGap é muito eficiente e dá ao desenvolvedor acesso fácil aos componentes de hardware avançados, como o acelerômetro e GPS Tracker. Além disso, a equipe PhoneGap dá treinamento gratuito para desenvolvedores. Há uma ativa comunidade de desenvolvedores que está constantemente estudando as características pertinentes da linguagem.
LINGUAGENS CROSS-PLATAFORMA Xamarin
Finalmente, Xamarin é uma plataforma C# onde o código é escrito em geral, para iOS e Android e compilados de forma diferente durante a implantação. Xamarin possuí vários recursos. Antes de compilar, Xamarin executa o código em um framework .NET em tempo de execução e oferece interface nativa para qualquer iOS ou Android. Para as grandes equipes que trabalham em diferentes partes de um mesmo projeto, podemos indicar este como versátil e adaptável.
COMPUTAÇÃO NAS NUVENS
MOTIVAÇÃO Com o avanço da sociedade humana moderna, serviços básicos e essenciais são quase todos entregues de uma forma completamente transparente. Serviços de utilidade pública como água, gás, eletricidade e telefone tornaram-se fundamentais para nossa vida diária e são explorados através de um modelo de pagamento baseado no uso [Vecchiola et al. 2009].
As infra-estruturas existentes permitem entregar tais serviços em qualquer lugar e a qualquer nhora, de forma que possamos simplesmente acender a luz, abrir a torneira ou usar o fogão. O uso desses serviços é, então, cobrado de acordo com as diferentes políticas para o usuário final. Recentemente, a mesma ideia de utilidade tem sido aplicada no contexto da informática e uma mudança consistente neste sentido tem sido feita com a disseminação de Cloud Computing ou Computação em Nuvem.
O QUE É A CLOUD COMPUTING ? A computação na nuvem ou Cloud Computing é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer lugar e independente da plataforma, bastando para isso ter um terminal conectado à "nuvem”.
O QUE É A CLOUD COMPUTING ? A palavra nuvem sugere uma idéia de ambiente desconhecido, o qual podemos ver somente seu início e fim. Por este motivo esta foi muito bem empregada na nomenclatura deste novo modelo, onde toda a infra-estrutura e recursos computacionais ficam "escondidos”, tendo o usuário o acesso apenas a uma interface padrão através da qual é disponibilizado todo o conjunto de variadas aplicações e serviços. A nuvem é representada pela internet, isto é, a infra-estrutura de comunicação composta por um conjunto de hardwares, softwares, interfaces, redes de telecomunicação, dispositivos de controle e de armazenamento que permitem a entrega da computação como serviço.
O QUE É A CLOUD COMPUTING ? A palavra nuvem sugere uma idéia de ambiente desconhecido, o qual podemos ver somente seu início e fim. Por este motivo esta foi muito bem empregada na nomenclatura deste novo modelo, onde toda a infra-estrutura e recursos computacionais ficam "escondidos”, tendo o usuário o acesso apenas a uma interface padrão através da qual é disponibilizado todo o conjunto de variadas aplicações e serviços. A nuvem é representada pela internet, isto é, a infra-estrutura de comunicação composta por um conjunto de hardwares, softwares, interfaces, redes de telecomunicação, dispositivos de controle e de armazenamento que permitem a entrega da computação como serviço.
CLOUD COMPUTING Para tornar este modelo possível, é necessário reunir todas as aplicações e dados dos usuários em grandes centros de armazenamento, conhecidos como data centers. Uma vez reunidos, a infra-estrutura e as aplicações dos usuários são distribuídos na forma de serviços disponibilizados por meio da internet. Outro ponto importante para o entendimento deste modelo de computação refere-se aos participantes da nuvem. Estes podem ser divididos em três grandes grupos: Provedor de serviço, Desenvolvedor e Usuário. O provedor é responsável pela tarefa de disponibilizar, gerenciar e monitorar toda a infra-estrutura da nuvem, garantindo o nível do serviço e a segurança adequada de dados e aplicações. Já o desenvolvedor deve ser capaz de prover serviços para o usuário final, a partir da infra-estrutura disponibilizada pelo provedor de serviço. Enquanto o usuário final é o consumidor que irá utilizar os recursos oferecidos pela nuvem computacional.
Enfim, a computação na nuvem representa um novo modelo de serviço capaz de fornecer todo o tipo de processamento, infraestrutura e armazenamento de dados através da internet (tanto como componentes separados ou uma plataforma completa) baseado na necessidade do usuário.
CAMADAS DE ARQUITETURA E TIPOS DE NUVEM Os serviços de computação na nuvem são divididos em três classes, que levam em consideração o nível de abstração do recurso provido e o modelo de serviço do provedor. O nível de abstração pode ser visto como a camada de arquitetura onde os serviços das camadas superiores podem ser compostos pelos serviços das camadas inferiores. As três classes de serviço são nomeadas da seguinte forma: Infra-estrutura como Serviço (IaaS), camada inferior; Plataforma como Serviço (PaaS), camada intermediária; e Software como Serviço (SaaS), camada superior.
CAMADAS DE ARQUITETURA E TIPOS DE NUVEM Infra-estrutura como Serviço - IaaS Nesta classe são oferecidos os serviços de infra-estrutura sob demanda, isto é, oferece recursos "de hardware” virtualizados como computação, armazenamento e comunicação. Este tipo de serviço prove servidores capazes de executar softwares customizados e operar em diferentes sistemas operacionais. Possui uma aplicação que funciona como uma interface única para a administração da infra-estrutura, promovendo a comunicação com hosts, switches, roteadores e o suporte para a inclusão de novos equipamentos. Por se tratar da camada inferior, esta também é responsável por prover a infra-estrutura necessária para as camadas intermediária e superior.
CAMADAS DE ARQUITETURA E TIPOS DE NUVEM Plataforma como Serviço - PaaS Esta é a camada intermediária. É oferecido como serviço um ambiente no qual o desenvolvedor pode criar e implementar aplicações sem ter que se preocupar em saber quantos processadores ou o quanto de memória esta sendo usada para o executar a tarefa. Utilizando-se da camada inferior, fornece uma infra-estrutura com alto nível de integração compatível com diversos sistemas operacionais, linguagens de programação e ambientes de desenvolvimentos.
CAMADAS DE ARQUITETURA E TIPOS DE NUVEM Software como Serviço - SaaS A camada mais alta da arquitetura da computação na nuvem tem a responsabilidade de disponibilizar aplicações completas ao usuário final. Este acesso é provido pelos prestadores de serviço através de portais web, sendo completamente transparente ao usuário, o que permite a execução de programas que executam na nuvem a partir de uma máquina local. Para oferecer esta transparência, o SaaS utiliza-se das duas camadas inferiores, o PaaS e o IaaS.
MODELOS DE IMPLEMENTAÇÃO Tratando-se do acesso e disponibilidade de ambientes de computação em nuvem, tem-se diferentes tipos de modelos de implantação. A restrição ou abertura de acesso depende do processo de negócios, do tipo de informação e do nível de visão desejado. Pode-se perceber que certas empresas não desejam que todos os usuários possam acessar e utilizar determinados recursos no seu ambiente de computação em nuvem. Neste sentido, surge a necessidade de ambientes mais restritos, onde somente alguns usuários devidamente autorizados possam utilizar os serviços providos. Os modelos de implantação da computação em nuvem podem ser divididos em: público, privado, híbrido e comunidade [NIST 2009].
MODELOS DE IMPLEMENTAÇÃO Privado No modelo de implantação privado, a infra-estrutura de nuvem é utilizada exclusivamente para uma organização, sendo esta nuvem local ou remota e administrada pela própria empresa ou por terceiros. Neste modelo de implantação são empregados políticas de acesso aos serviços. As técnicas utilizadas para prover tais características podem ser em nível de gerenciamento de redes, configurações dos provedores de serviços e a utilização de tecnologias de autenticação e autorização. Um exemplo deste modelo seria o cenário de uma universidade e seus departamentos. A universidade pode estar interessada em disponibilizar serviços para seus departamentos e outros órgãos desta instituição não devem ter acesso a esses serviços.
Público No modelo de implantação público, a infra-estrutura de nuvens é disponibilizada para o público em geral, sendo acessado por qualquer usuário que conheça a localização do serviço. Neste modelo de implantação não podem ser aplicadas restrições de acesso quanto ao gerenciamento de redes, e menos ainda, aplicar técnicas de autenticação e autorização.
MODELOS DE IMPLEMENTAÇÃO Comunidade No modelo de implantação comunidade ocorre o compartilhamento por diversas empresas de uma nuvem, sendo esta suportada por uma comunidade específica que partilhou seus interesses, tais como a missão, os requisitos de segurança, política e considerações sobre flexibilidade. Este tipo modelo de implantação pode existir localmente ou remotamente e pode ser administrado por alguma empresa da comunidade ou por terceiros.
Híbrido No modelo de implantação híbrido, existe uma composição de duas ou mais nuvens, que podem ser privadas, comunidade ou pública e que permanecem como entidades únicas e ligadas por uma tecnologia padronizada ou proprietária que permite a portabilidade de dados e aplicações.
DÚVIDAS ? Aulas disponíveis em: fg.raonioliveira.com.br