Beruflich Dokumente
Kultur Dokumente
Trabalho de Graduao
RECIFE
FEV/2015
Trabalho apresentado ao Programa de Graduao em Engenharia da Computao do Centro de Informtica da Universidade Federal de Pernambuco como requisito parcial
para obteno do grau de Bacharel em Engenharia da
Computao.
RECIFE
FEV/2015
Agradecimentos
Primeiramente, gostaria de agradecer toda minha famlia pela base que me foi dada, e
por me mostrar a importncia da educao durante todas as etapas da minha vida. A minha noiva,
Isabela, por ter me acompanhado de perto durante toda a minha graduao e principalmente
no processo de desenvolvimento deste trabalho, me apoiado nos momentos mais difceis e
comemorando as alegrias das boas novas. Meus pais, Ricardo e Alessanndra, e meu irmo,
Ricardo, pela pacincia e compreenso, sempre presentes na longa jornada que foi a graduao
em engenharia, e principalmente pelo constante apoio e exemplos que me serviram de guia nesta
vida.
Aos meus amigos, cujo apoio foi fundamental para o trmino deste trabalho e para minha
graduao. Fica aqui o meu muito obrigado a todos, especialmente para os colegas de graduao
e pelas madrugadas no CIn : Danilo Pena, Digenes Santos, Diogo Almeida , Ricardo Mariz,
Pedro Neves e Victor Carrio.
Aos professores Vinicius Cardoso Garcia (orientador), com o qual tive a oportunidade
de trabalhar durante 2 anos como monitor-auxiliar, fica aqui meu obrigado pela confiana
depositada, sempre abrindo novas oportunidades e acreditando no meu potencial. Lenildo Morais
(co-orientador), obrigado pela pacincia de acompanhar a evoluo deste trabalho, dando valiosos
feedbacks para o trmino do mesmo. E ao professor Kiev Gama, pela disposio de fazer parte
da banca deste trabalho.
No poderia deixar de agradecer aos amigos da famlia Ustore pela compreenso e
colaborao de todos, pelas dicas e produtivas discusses sobre o tema. Sou grato pelo convvio
com vocs, que me faz aprender cada vez mais.
Obrigado a todos!
The key question to keep asking is, Are you spending your time on the right
things? Because time is all you have.
RANDY PAUSCH
Resumo
A expanso do mercado tecnolgico desencadeado pela apresentao em 2007 do primeiro iPhone resultou em uma onda de grandes oportunidades. Dentre estas, deu origem ao que
hoje conhecemos como Apps. Diante da possibilidade de lucrar e distribuir estes aplicativos
diretamente para o cliente final, milhares de desenvolvedores voltaram suas atenes para o
desenvolvimento de aplicativos mveis. Segundo uma pesquisa encomendada pela Universidade
do Alabama, estima-se que at 2017 sejam realizados aproximadamente 268 bilhes de downloads, resultando em uma receita de $77 bilhes. Porm, assim como proporcionaram grandes
oportunidades, essa abertura de mercado trouxe novos obstculos: a onda de novos dispositivos
ps-iPhone - com diferentes modelos, tamanhos distintos, hardwares diferenciados e sistema
operacionais concorrentes - tornou o processo de desenvolvimento de apps muito mais complexo
do que no incio, em que s existiam poucos dispositivos.
Atualmente, Apple, Google e Microsoft detm a maior parte do market-share dos sistemas
operacionais embarcados nos smartphones, iOS, Android e Windows Phone respectivamente.
Essas empresas concorrem entre si de modo que os seus desenvolvedores sejam beneficiados,
em uma tentativa de blindagem contra as outras plataformas, visto que um dos critrios de
aquisio dos dispositivos a quantidade e qualidade de apps disponveis. Por outro lado, essa
incompatibilidade entre as plataformas tema de discusso, uma vez que ela gera um custo
maior de desenvolvimento para cada plataforma suportada. A fim de minimizar esse custo,
desenvolvedores comearam a pensar em uma abordagem multiplataforma em que, por exemplo,
um App codificado para o iOS, tivesse um baixo custo para ser adaptado outras plataformas.
Desde ento, diversas abordagens esto sendo estudadas neste sentido. Aps a visualizao
dessas, ser realizada um estudo para analisar qual abordagem ser mais adequada para o
desenvolvimento de um aplicativo mvel multiplataforma a partir de um cenrio especificado.
Palavras-chave: Desenvolvimento de aplicativos moveis, desenvolvimento multiplataforma,
Titanium framework
Abstract
The expansion of the technology market triggered by the presentation of the first iPhone
in 2007 resulted in a wave of great opportunities. Among these gave rise to what we now know
as Apps. Given the opportunity to publish and monetize applications directly to the end customer,
thousands of developers migrate their attention to the development of mobile applications.
According to a survey commissioned by the University of Alabama, it is estimated that 2017
will be realized approximately 268 billion downloads, resulting in revenues of $ 77 billion.
These facts, draw attention of the whole community of developers. However, great opportunities
come new obstacles: the wave of new post-iPhone devices with different models, different sizes,
different hardware and operating system competitors, became the apps development process
much more complex than at the beginning, where there were only a few devices.
Apple, Google and Microsoft, today, hold most of the market share of operating systems
embedded in smartphones, iOS, Android and Windows Phone, respectively. These companies
compete with each other, to bring benefits to its developers, in an attempt to shield the other
platforms, since the main reason for choices between a device and the other is the quantity and
quality of available apps. Furthermore, this incompatibility between platforms is the subject of
debate, since it generates a higher development cost. Independent developers and companies
need to pay various development teams for each supported platform, and to optimize the cost,
developers began to think of a multiplatform approach where, for example, a coded App for
iOS, had its development cost minimized in the work porting to other platforms. Since then,
several approach being studied in this regard. After visualization of such a study is performed to
examine which approach is most suitable for the development of a mobile platform application
from a specified scenario.
Keywords: Development of mobile applications, cross-platform development, Titanium framework
Lista de Figuras
2.1
2.2
2.3
2.4
2.5
Arquitetura do iOS . . . . . . . .
Estrutura de um aplicativo iOS . .
Arquitetura do Android . . . . . .
Estrutura de um aplicativo Android
Tabela de similiaridade . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
17
19
22
22
3.1
3.2
3.3
3.4
3.5
3.6
.
.
.
.
.
.
.
.
.
.
.
.
25
26
27
28
29
37
4.1
4.2
39
42
Lista de Acrnimos
API
MVC Model-View-Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
DSL
UI
User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Sumrio
1
Introduo
1.1 Relevncia do tema . . . . . . . . . .
1.2 Objetivos . . . . . . . . . . . . . . .
1.2.1 Objetivos especficos . . . . .
1.3 Metodologia . . . . . . . . . . . . . .
1.3.1 Definio de multiplataforma
1.4 Fora de escopo . . . . . . . . . . . .
1.5 Estrutura deste trabalho . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Desenvolvimento de Aplicativos
2.1 Apps . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Desenvolvimento de Apps iOS . . . . . . . . . . . . .
2.2.1 Arquitetura do iOS . . . . . . . . . . . . . . .
2.2.1.1 Camada Cocoa Touch . . . . . . . .
2.2.1.2 Camada de Mdia . . . . . . . . . .
2.2.1.3 Core Services . . . . . . . . . . . .
2.2.1.4 Core OS . . . . . . . . . . . . . . .
2.2.2 Estrutura de um aplicativo iOS . . . . . . . . .
2.3 Desenvolvimento de Apps Android . . . . . . . . . . .
2.3.1 Arquitetura do Android . . . . . . . . . . . . .
2.3.1.1 Application Framework . . . . . . .
2.3.1.2 Libraries . . . . . . . . . . . . . . .
2.3.1.3 Android Runtime . . . . . . . . . .
2.3.2 Estrutura de um aplicativo Android . . . . . .
2.4 Um comparativo sobre os componentes das plataformas
2.5 Concluses sobre o desenvolvimento de aplicativos . .
Introduo a abordagens multiplataforma
3.1 Motivao . . . . . . . . . . . . . . . . . . . . . . .
3.2 Web apps . . . . . . . . . . . . . . . . . . . . . . .
3.3 Apps Hbridos . . . . . . . . . . . . . . . . . . . . .
3.4 Apps Gerados . . . . . . . . . . . . . . . . . . . . .
3.5 Apps Interpretados . . . . . . . . . . . . . . . . . .
3.6 Apps Cross-Compilados . . . . . . . . . . . . . . .
3.7 Alguns Frameworks em suas determinadas categorias
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
11
12
12
12
13
13
13
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
14
14
14
15
15
16
16
17
17
18
18
19
21
21
21
22
23
.
.
.
.
.
.
.
24
24
24
25
26
27
28
29
10
.
.
.
.
.
.
.
.
.
.
29
30
30
30
30
31
31
32
36
37
.
.
.
.
.
.
.
.
.
38
38
38
38
40
42
43
45
45
46
Concluso
5.1 Principais Concluses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1 Novas ferramentas em potencial . . . . . . . . . . . . . . . . . . . . .
5.2 Trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
47
48
48
3.8
3.9
4
Referncias
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
49
11
1
Introduo
Genius is one percent inspiration, ninety-nine percent perspiration.
THOMAS A. EDISON
1.1
Relevncia do tema
1.2. OBJETIVOS
12
do mesmo. Cada plataforma tem requisitos especficos, por exemplo, para um desenvolvimento
nativo, aplicaes devem ser desenvolvidas separadamente: em Android normalmente so
programadas em Java, enquanto aplicaes para iOS usam a linguagem Objective-C.
Todavia, quando requisitado desenvolver um aplicativo que seja suportado em mltiplas
plataformas, uma aplicao elaborada para uma plataforma no ser compatvel com outra,
forando o desenvolvedor a reescrever a aplicao para cada um dos cenrios desejados, o que
aumenta o esforo e custo para o desenvolvedor e tempo para o aplicativo chegar ao usurio
final. A fim de solucionar essa adversidade, o desenvolvimento multiplataforma foi proposto,
abordagem na qual aplicativo escrito apenas uma vez e adaptado para suportar vrios sistemas
operacionais.
1.2
Objetivos
Este trabalho tem por objetivo principal apresentar as abordagens para o desenvolvimento
de aplicativos que devem suportar mais de uma plataforma. Por meio deste, sero expostas
as principais abordagens multiplataforma, suas vantagens e desvantagens, a fim de auxiliar na
escolha de uma destas, ao final ser desenvolvido um estudo de caso para validar as vantagens
de adotar tal abordagem.
1.2.1
Objetivos especficos
Para alcanar o objetivo geral, foram designados objetivos especficos:
1.3
Metodologia
Aps a definio dos objetivos, foi realizada uma reviso da literatura com a inteno
de sintetizar as abordagens nativas e de multiplataforma mais utilizadas pelo mercado e suas
tendncias (XANTHOPOULOS; XINOGALOS, 2013). Dentre os resultados da pesquisa se
destacaram as abordagens: Web apps, Apps hbridos, Apps interpretados, Apps gerados e Apps
cross-compilados.
1.3.1
13
Definio de multiplataforma
Diante dos dados explicitados pelo relatrio do (IDC, 2014), o termo multiplataforma
ser usado neste trabalho como referncia s plataformas iOS e Android.
1.4
1.5
Fora de escopo
14
2
Desenvolvimento de Aplicativos
2.1
Apps
2.2
15
Normalmente um aplicativo iOS escrito na linguagem Objective-C ou, mais recentemente, na linguagem Swift, na qual utilizada o Xcode para a escrita do cdigo em si, modelagem
e construo da interface grfica e auxlio na compilao e depurao do aplicativo.
Para entender o processo de desenvolvimento de aplicativos iOS necessrio um prvio
conhecimento da arquitetura do sistema operacional, a fim de conhecer os principais componentes
disponibilizados pelo iOS SDK.
2.2.1
Arquitetura do iOS
O esquema de arquitetura do iOS pode ser vista em quatro grandes camadas de abstrao
(APPLE, 2010), como visto na Figura 2.1. Apesar dessas divises em camadas, um App pode se
comunicar com qualquer uma das camadas diretamente, mas deve-se atentar que a utilizao de
componentes das camadas mais inferiores exige uma maior complexidade do cdigo.
2.2.1.1
16
mesmo quesitos mais bsicos, como o controle do loop principal do aplicativo durante sua
interao com o sistema.
Multitasking Framework
Este framework permite que, quando um aplicativo finalizado, colocado em um modo
congelado, residindo na memria, porm sem permisso para executar nenhuma ao.
Entretanto, em alguns casos, necessrio realizar alguma operao em segundo plano,
devendo informar a necessidade atravs de um arquivo de propriedades, para que o sistema
operacional possibilite o Multitasking (APPLE, 2010).
2.2.1.2
Camada de Mdia
Core Services
17
Core OS
2.2.2
Cada aplicativo iOS tem como alicerce principal um objeto chamado UIApplication, que
uma subclasse do NSObject, e tem por objetivo permitir a interao entre os objetos do sistema
operacional ou mesmo com outros objetos do mesmo App. Pode-se examinar na Figura 2.2 a
maioria dos componentes mais comuns em um app baseado no iOS.
2 http://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Art/core_objects_2x.p
18
2.3
2.3.1
Arquitetura do Android
O sistema operacional Android pode ser visto por uma composio de cinco componentes
principais, conforme a Figura 2.3.
Uma das principais caractersticas herdadas de um sistema baseado em Linux foi o
conceito de mltiplos usurios, em que o Android considera cada App como um usurio distinto.
Isso permite que cada App seja executado dentro de um processo diferente um do outro, criando
uma espcie de sandbox, ou seja, um ambiente seguro para que um App no acesse o espao
de endereamento alheio, ou at mesmo do prprio sistema operacional. Alm disso, cada App
por padro executado com o mnimo de permisses necessrias e, caso seja necessrio utilizar
APIs do sistema operacional, como SMS, Agenda, Bluetooth e etc, necessrio que o usurio
aceite explicitamente no momento da instalao do App.
19
2.3.1.1
Application Framework
20
21
Libraries
Android Runtime
Dado que o ambiente de execuo do Android deva suportar uma gama de dispositivos
heterogneos com diferentes requisitos de hardwares, as aplicaes necessitam ser encapsuladas
para atender os requisitos de desempenho e segurana sem depender do hardware embarcado.
Assim, cada aplicativo Android roda seu prprio processo, com sua prpria instncia da mquina
virtual Dalvik, ou mais recentemente ART (GOOGLE, 2015b).
A Dalvik foi desenvolvida para o Android permitindo que o dispositivo consiga suportar
o overhead, que criado pelas instanciaes de mltiplas mquinas virtuais eficientemente. Esta
VM executa classes compiladas pelo Java que so transformadas em um formato nativo desta,
o formato .dex, por uma ferramenta chamada dxtools, minimizando em at 50% o consumo
de memria em relao ao bytecode original (TECHTROPIA, 2013). Apesar de no estar
explicitado na figura 2.3, a mquina virtual Dalvik tem acesso direto ao kernel do Linux para
manipulao de funcionalidades como threads e controle da memria.
2.3.2
Cada aplicativo Android tem como base uma classe chamada java.lang.Object. Esta
classe a raiz de toda a hierarquia de classes primitivas e no primitivas, como por exemplo, os
componentes essenciais vistos acima. A maioria desses componentes mais comuns em um App
desenhado para Android pode ser observado na Figura 2.4.
Para mais informaes sobre o desenvolvimento de aplicativos Android ver MEW (2011)
e ROGERS et al. (2009)
22
2.4
Conforme visto na Figura 2.2 e na Figura 2.4 existe diferena entre as arquiteturas de
cada plataforma. Entretanto pode-se perceber algumas equivalncias entre os componentes do
ponto de vista estrutural de um App. Adiante algumas dessas podem ser vistas na Figura 2.5.
23
2.5
Como visto nas sees anteriores, pode-se perceber que cada plataforma requer uma
linguagem de programao especfica, diferentes requisitos e ambientes de desenvolvimento e
distintos modelos de programao, baseado em seus kits de desenvolvimento especficos (SDK).
Por exemplo, desenvolver aplicativos para Android requer um prvio conhecimento de Java,
enquanto desenvolver para iOS requer domnio sobre Objective-C/Swift.
O problema ocorre quando um aplicativo precisa ser pensado para suportar ambas
as plataformas, exigindo a restrio de se manter duas verses do mesmo produto, porm
implementadas em suas tecnologias nativas, e como pode-se perceber baseado nas sees acima,
totalmente independentes e incompatveis.
A fragmentao, termo utilizado para descrever as diferentes verses de sistema operacional, e distintas resolues de tela entre os dispositivo mveis, tornou-se um dos maiores
obstculos no ecossistema mobile, sendo um dos fatores mais significantes e custoso para o
desenvolvimento e manuteno de um aplicativo pensado em multiplataformas (FLING, 2009).
Pelo alto custo adicionado ao desenvolvimento e manuteno a cada nova plataforma
suportada, foi pensada uma abordagem onde fosse possvel reusar parte do esforo utilizado em
uma plataforma, no desenvolvimento de outras, a fim de reduzir o custo associado.
24
3
Introduo a abordagens multiplataforma
3.1
Motivao
Conforme visto no Captulo 2, possvel ter uma ideia sobre os componentes cada
sistema operacional, suas caractersticas e diferenas. O custo de desenvolvimento de um App
pensado para suportar ambas as plataformas requer manter dois repositrios de cdigo em
paralelo, mantidos por uma ou mais equipes de desenvolvimento, o que em algumas fases de um
projeto, seja individual ou corporativo, pode se tornar invivel em termos financeiros.
Sabe-se que o Android tem um mercado mais abrangente, entretanto o iOS a plataforma
mais rentvel (The Guardian, 2013). Visando contemplar os benefcios de cada plataforma e
evitar a criao de dois ou mais bancos de cdigo independentes, os desenvolvedores comearam a pensar em abordagens extensveis maioria das plataformas (XANTHOPOULOS;
XINOGALOS, 2013).
3.2
Web apps
25
App, ou seja, adicionar novas funcionalidades, por exemplo, pois assim como sistemas Web,
basta modificar o cdigo do site no servidor, no sendo necessria nenhuma atualizao no lado
do cliente.
Em compensao a desvantagem dos Web apps a impossibilidade de usufruir da
distribuio e das aes de marketing providos pelas lojas de aplicativos, visto que os mesmos
so acessados atravs de uma URL (HEITKTTER; HANSCHKE; MAJCHRZAK, 2013). Alm
disso, seu desempenho comprometido pela renderizao que realizada atravs de um browser,
e pela qualidade da infraestrutura de rede, pois a cada nova pgina solicitada, realizada uma
nova requisio ao servidor externo (backend) como visto na Figura 3.1, onde em casos extremos
pode-se ter um Web app indisponvel.
Diante disso, a utilizao desta abordagem apenas recomendada para aplicaes simples,
e que no necessitem de recursos nativos de cada plataforma.
3.3
Apps Hbridos
Para contornar as desvantagens dos Web Apps, foi pensada em uma abordagem hbrida,
na qual tenta-se combinar as vantagens de um Web App e a de um App nativo. Os Apps
hbridos, assim como os Web Apps, so desenvolvidos utilizando tecnologias web como HTML5.
Entretanto sua diferena est no fato de ser encapsulado por browser transparente ao usurio,
chamado de UIWebView (iOS) e WebView ( Android ).
O funcionamento de um App hbrido, baseia-se na utilizao do engine Webkit presente
nesses browsers nativos como visto na Seo 2.2.1.3, que tem como responsabilidade renderizar
o HTML5 escrito para a aplicao. Pelo fato de ambas as plataformas, conter esse engine de
renderizao, obtm-se o mesmo comportamento esperado.
1 http://cross-platform.mobi/images/cpmd_serversideweb.png
26
3.4
Apps Gerados
27
Esta abordagem, permite que os Apps tenham o mesmo desempenho de um App nativo,
pois aps ter o modelo interpretado pelo gerador de cdigos, o mesmo criar vrios cdigos
nativos escrito para as plataformas descriminadas. Assim, torna-se possvel escrever cdigos em
alto nvel, que fazem uso de todo o potencial do SDK destas plataformas, previsto na DSL.
Entretanto, a desvantagem da utilizao da abordagem dos Apps Gerados est na necessidade do aprendizado de uma linguagem especfica do domnio, e caso venha a ser necessrio
utilizar alguma funcionalidade no descrita na DSL ou acompanhar as atualizaes dos SDKs,
o cdigo nativo e o gerador de cdigos devem ser alterado para suportar esses requisitos. Isso
causa um overhead para o desenvolvedor, visto que ser necessrio escrever para cada uma
dessas plataformas suportada.
3.5
Apps Interpretados
Os Apps interpretados so uma evoluo natural dos Apps hbridos, conseguindo unir
as vantagens do rpido desenvolvimento, utilizando JavaScript, e o desempenho nativo provido
pelos Apps Gerados. Em parte, essa evoluo foi possibilitada pela adio de interpretadores
JavaScript, como o JavaScriptCore Framework visto na seo 2.2.1.3, aos sistemas operacionais,
onde antes estavam presentes apenas no escopo de componentes de WebViews.
Assim, esta abordagem tem como principal caracterstica a utilizao de uma camada
intermediria, uma ponte, que ser responsvel pela comunicao entre o cdigo interpretado
pelo interpretador JavaScript e o ambiente de execuo do cdigo nativo de cada plataforma,
conforme visto na Figura 3.4.
3 http://cross-platform.mobi/images/cpmd_generatedapps.png
28
3.6
Apps Cross-Compilados
Diferente das abordagens citadas acima, os Apps cross-compilados so escritos e desenvolvidos a partir da escolha de uma das tecnologias nativas Java ou Objective-C. A estratgia de
suportar mltipla plataformas vem da utilizao de um compilador cruzado, que ser utilizado
para traduzir o cdigo escrito em uma destas, em linguagem de mquina (bytecode), suportando
assim as diferentes plataformas que compartilhem da mesma arquitetura de hardware (SHEN;
HSU; YANG, 2014).
Pode-se dividir a construo desses Apps em duas etapas de desenvolvimento: implementao do cdigo backend, que responsvel pela lgica do aplicativo, e implementao do
cdigo frontend, que responsvel pela interface visual.
4 http://cross-platform.mobi/images/cpmd_interpreted.png
29
3.7
3.7.1
30
3.7.2
O PhoneGap, cujo atual nome chama-se Apache Cordova (CORDOVA, 2014), uma
ferramenta de desenvolvimento multiplataforma hbrida, de cdigo aberto e licenciada sob
Apache 2.0. O Apache Cordova funciona basicamente encapsulando uma aplicao web.
O Apache Cordova minimiza as desvantagens citadas na Seo 3.3, pois implementa
alguns componentes presentes no SDK dos sistemas operacionais, permitindo o desenvolvimento
de aplicaes mais complexas.
3.7.3
3.7.4
3.7.5
3.8
31
3.8.1
3.8.2
32
Abordagem Nativa
1. Desempenho (Conceito: Alto) - Os aplicativos nativos apresentam uma
excelente responsividade ao usurio, visto que so Apps desenvolvidos utilizando os
kits de desenvolvimento disponibilizados nativamente por cada sistema operacional.
2. Custo (Conceito: Alto) - Para se desenvolver um aplicativo que suporte a
vrias plataformas, cada aplicativo deve ser desenvolvido separadamente, podendo
requerer duas ou mais equipes de profissionais qualificados para cada plataforma.
Acesso a API nativa (Conceito: Alto) - Por serem desenvolvidos utilizando as
ferramentas prprias de cada sistema operacional, estes podem ter acesso a totalidade
de APIs disponveis no SDK, alm de total controle dos recursos de hardware
disponvel no dispositivo.
Facilidade de Manuteno (Conceito: Baixo) - A cada plataforma suportada
preciso manter um repositrio de cdigo, aumentando assim o nmero de linhas de
cdigo a cada plataforma adicionada.
Velocidade de desenvolvimento (Conceito : Baixo) - preciso iniciar o desenvolvimento para cada uma das plataformas paralelamente (em caso de duas ou mais
equipes), ou seja, no aproveitado o cdigo de um aplicao em uma outra, por
consequncia pode gerar um atraso entre o lanamento do aplicativo nas diferentes
plataformas.
Suporte da comunidade (Conceito: Alto) Foram contabilizados aproximadamente 311.842 e 635.787 questes utilizando as tags "ios"e "android"respectivamente.
O que mostra uma comunidade bastante ativa, oferecendo muito suporte ao usurio
iniciante e durante o desenvolvimento.
33
34
Facilidade de Manuteno (Conceito: Alto) - Por utilizar as mesmas tecnologias utilizadas para o desenvolvimento dos Web Apps, e um nico repositrio de
cdigo, o conceito foi mantido o mesmo.
Velocidade de desenvolvimento (Conceito: Alto) - Por utilizar as mesmas
tecnologias utilizadas para o desenvolvimento dos Web Apps, o conceito foi mantido
o mesmo.
Suporte da comunidade (Conceito: Alto) Foram contabilizados aproximadamente 40.801, 32.104 e 69.941 questes utilizando as tags "phonegap"e "cordova"e
"html5". O que mostra uma comunidade relativamente ativa, oferecendo muito
suporte ao usurio iniciante e durante o desenvolvimento.
35
36
3.8.3
Com o objetivo de auxiliar o leitor sobre qual abordagem mais vantajosa, props-se neste
trabalho questionamentos que devem ser respondidos utilizando os conceitos de Alto,Mdio ou
Baixo de acordo com o cenrio do Aplicativo a ser desenvolvido. Considerando como parmetro
as respostas suscitadas, possvel fazer uma comparao com a tabela que sumariza as avaliaes
dos conceitos explanados na subseo anterior, esta tabela pode ser vista na Figura 3.6.
Qual nvel de desempenho requerido para executar a aplicao? Leve em considerao, por exemplo, se seu aplicativo requer a necessidade de realizar processamento
de imagens em trs dimenses (3D) ou processar matrizes complexas.
Qual seu nvel de restrio ao custo total para o desenvolvimento do App. Leve em
considerao a quantidade de profissionais envolvidos e licena de software.
Qual seu nvel de urgncia para desenvolver o aplicativo e entreg-lo ao mesmo
tempo em ambas as plataformas?
Aps a entrega do aplicativo, qual nvel de intensidade de manutenes como por
exemplo, acrescentar funcionalidades ao App?
Qual nvel de integrao com o sistema operacional seu App precisar ter? Leve
conta acesso funcionalidade de hardware como Cmera, Bluetooth, NFC, GPS.
Qual seu nvel de dependncia de suporte da comunidade? Leve em considerao seu
domnio e conhecimento sobre a ferramenta e as tecnologias que iro ser utilizadas.
3.9. CONCLUSO
37
3.9
Concluso
Pode-se verificar que no h uma soluo tima que atenda a todos os casos, para cada
abordagem destacada v-se vantagens e desvantagens para cada tipo de cenrio, ou seja, a
escolha de uma abordagem dependente de uma srie de critrios contextuais. Atravs dos
questionamentos propostos neste trabalho e da verificao das respostas na matriz de critrios
vista na Figura 3.6, possvel indicar uma direo para a escolha de uma abordagem mais
vantajosa.
Pode-se citar alguns exemplos como o cenrio de um App baseado em dados - catlogos,
comunicao, finanas, armazenamento - no qual no necessrio utilizar todos os recursos de
desempenho do dispositivo, aliado a necessidade de um rpido desenvolvimento em ambas as
plataformas, porm com uma restrio de custo. Logo a abordagem interpretada a mais indicada.
Para outro cenrio, no qual h a necessidade de se desenvolver um jogo 3D, por exemplo, o
alto desempenho uma restrio crucial, logo se deve pagar o custo associado, atravs de uma
abordagem nativa ou cross-compilada. Para aplicaes simples ou mesmo temporrias, que
devem ser desenvolvidas a um baixo custo, pode-se optar por uma abordagem hbrida ou mesmo
o desenvolvimento de um Web app.
No captulo seguinte, ser visto um estudo de caso demonstrando o desenvolvimento
de um App utilizando uma abordagem multiplataforma. O estudo de caso foi demandado sob
os critrios de restrio mxima de custo, necessidade de APIs nativas como: GPS, Rede e
Celular, e rpida entrada em ambas as App Stores. Como esse no demandou grandes recursos
de desempenho, e baseado-se nos critrios vistos a abordagem indicada foi a interpretada.
38
4
Desenvolvimento de um estudo de caso
4.1
Introduo
4.2
Desenvolvimento do Aplicativo
4.2.1
Planejamento da UI
39
Por isso, durante a fase de planejamento, necessrio decidir se o App ser construdo sob uma
interface visual agnstica, ou utilizar somente componentes nativos de cada plataforma.
A abordagem agnstica segue o mesmo padro para cada sistema operacional. Ou
seja, possvel criar uma interface totalmente independente do sistema operacional. Contudo,
deve-se atentar que usurio espera um comportamento parecido com o sistema nativo o qual est
habituado a usar, o que no deve ser obstculo para inovar no modo de interao criando uma
identidade nica ao App.
No planejamento do AcheUPA, foi preferido uma abordagem agnstica, a fim de demostrar a flexibilidade do framework Titanium. Visto que, por exemplo, o Android tem um
componente nativo chamado barra de ao (ActionBar), esse componente utilizado normalmente como guia de localizao contextual do usurio, alm de prover botes para expandir menu
lateral e de aes, como compartilhamento. Porm, ambos componentes no so encontrados
nativamente no iOS, sendo necessrio construir esses componentes. Pode-se ter uma viso da
tela principal do AcheUPA na Figura 4.1
(a) iOS
(b) Android
4.2.2
40
Implementando a UI
41
J no trecho do TSS, visto em 4.2 , pode-se verificar uma boa prtica de estratgia de
multiplataforma. Como o Alloy pr-processado antes da compilao do aplicativo, possvel
utilizar macros, para possibilitar a compilao em uma plataforma especfica utilizando a sintaxe
[plataform=*]. A ideia mostrar que, com o mesmo controlador, pode-se criar diferentes interface grficas para cada plataforma, sem nenhuma mudana estrutural de cdigo.
Por fim, durante a implementao, pode ser necessrio utilizar arquivos estticos como:
imagens, udios, entre outros. Ao usar o framework Alloy possvel organizar esses arquivos,
utilizando uma organizao de diretrio: arquivos que sero compartilhados entre todas as
plataformas devem ficar na pasta raiz do diretrio, enquanto que os arquivos especficos devem
residir dentro das suas determinadas pastas como mostrado na Figura 4.2
42
4.2.3
Implementando as funcionalidades
43
4.2.3.1
Conectando a Webservices
44
45
Geolocalizao
4.2.3.3
46
4.3
Como pde-se perceber, a manuteno de um App multiplataforma desenvolvido utilizando o framework Titanium mais produtivo do que a manuteno de dois aplicativos nativos
distintos. Essa facilidade provida pela maior parte do cdigo ser compartilhada, com pequenos
ramos referentes a funcionalidades especficas dos sistema operacional. Deve-se atentar para a
criao do mnimo de ramificaes possveis, como por exemplo, uma soluo mais custosa
primeira vista pode ser uma mais econmica a longo prazo.
Um bom domnio da interface grfica de cada uma das plataformas desejadas permite
que o App tenha uma boa avaliao na reviso tcnica e tenha destaque nas App Store. Alm
disso, conhecer as diferentes implementaes do interpretador JavaScript pertencente ao sistema
operacional uma tima maneira de otimizar o desempenho do cdigo lgico.
47
5
Concluso
5.1
Principais Concluses
A rpida evoluo das tecnologias de sistema embarcado permitiram que diversos nichos
de dispositivos eletrnicos - dentre eles smartphones e tablets- se estabelecessem no mercado.
Cada uma destes dispositivos tem presente um sistema operacional, com suas caractersticas
especficas e peculiares. timo para os consumidores que se beneficiam da concorrncia
do mercado para satisfazer suas necessidades tecnolgicas. Alguns chegam a defender sua
plataforma como uma unidade.
As lojas de aplicativos demonstraram um potencial imenso para um novo tipo de mercado
focado diretamente no cliente, onde empresas tiveram que repensar seus negcios para se adaptar
a este novo conceito. Milhares de desenvolvedores voltaram suas atenes atrados pelo grande
valor de mercado gerados por essas lojas. Entretanto, devido incompatibilidade entre as
arquiteturas destes sistemas operacionais, cada plataforma apresenta seus kits de desenvolvimento.
Logo, o desenvolvimento de aplicativos pensados para suportar as diversas plataformas tornouse bastante custoso, da foram pensadas abordagens que permitissem o desenvolvimento de
aplicativos multiplataforma.
Web apps, Apps Hbridos, Gerados, Cross-compilados e Apps Interpretados so algumas
das abordagens utilizadas pelo desenvolvimento multiplataforma numa tentativa de contornar os
obstculos do desenvolvimento nativo. Estas abordagens apresentam vantagens e desvantagens
em relao uma a outra e em relao ao desenvolvimento nativo.
Web apps so sites webs responsivos que se adaptam a diferentes tamanho e orientaes de telas e so a opo mais econmica, enquanto os Apps Hbridos so apenas Web
apps encapsulados com um componente nativo, restringindo o escopo do mesmo a poucas
funcionalidades.
Os Apps Interpretados apresentaram um bom desempenho e facilidade de entendimento,
porm podem depender de ferramentas para minimizar suas desvantagens. Por fim, os Apps
cross-compilados e gerados exigem o conhecimento de linguagens mais especficas, como uma
DSL para o caso dos gerados ou, para o caso dos cross-compilados, o conhecimento de um
48
5.1.1
Novas abordagens e ferramentas esto sendo criadas para minimizar o custo de desenvolvimento de Apps multiplataforma. Recentemente, o Facebook noticiou que o App Facebook
Groups (FACEBOOK, 2015), foi desenvolvido utilizando-se uma ferramenta muito parecida
com o Titanium. Essa ferramenta se tornou de cdigo aberto recentemente e est sendo chamada
de ReactJS (FACEBOOK, 2015).
O Google tambm demonstrou sua soluo de desenvolvimento multiplataforma, utilizando um compilador cruzado, chamado J2OBJC (GOOGLE, 2015d), que traduz o cdigo nativo
escrito em Java para o Objective-C, porm ainda com algumas restries de funcionalidades.
A Microsoft tambm mostrou-se interessada no desenvolvimento multiplataforma e, no inicio
do ano, tornou aberto o cdigo-fonte da biblioteca WinJS (MICROSOFT, 2014), que permite a
criao de Apps utilizando a linguagem JavaScript.
5.2
Trabalhos futuros
Algumas possibilidades para novos trabalhos a partir deste:
Realizar um novo estudo de caso utilizando outro cenrio para validar outras abordagens.
49
Referncias
Appcelerator Inc. Titanium Mobile Application Development. 2015.
APPLAUSE. APPlause. 2015.
APPLE. iOS Technology Overview. Media, [S.l.], p.69, 2010.
APPLE. JavaScriptCore Framework Reference. Media, [S.l.], p.111, 2013.
APPORTABLE. Apportable - Objective-C for Android. 2015.
CATCHO. Guia de Profisses e Salrios | Catho. 2015.
CLANG. C Language Family Frontend for LLVM. 2015.
CORDOVA. Apache Cordova. 2014.
DEACON, J.; SYSTEMS, C. Model View Controller Architecture. , [S.l.], n.Mvc, p.16, 2009.
DEURSEN, A. V.; KLINT, P.; VISSER, J. Domain-specific languages: an annotated
bibliography. ACM Sigplan Notices, [S.l.], v.35, p.2636, 2000.
ENTREPREUNER. By 2017, the App Market Will Be a $77 Billion Industry (Infographic).
2014.
FACEBOOK. A JavaScript library for building user interfaces | React. 2015.
FLING, B. Mobile Design and Development: practical concepts and techniques for
creating mobile sites and web apps. [S.l.: s.n.], 2009. 336p.
FOWLER, M. Mocks Arent Stubs. 2007.
GARTNER. Gartner Says Mobile App Stores Will See Annual Downloads Reach 102
Billion in 2013. 2013.
GOOGLE. Chrome V8 Google Developers. 2014.
GOOGLE. Application Fundamentals | Android Developers. 2015.
GOOGLE. ART and Dalvik | Android Developers. 2015.
GOOGLE. Servios da Web da API do Google Maps - Servios da Web da API do Google
Maps. 2015.
GOOGLE. J2ObjC. 2015.
HEITKTTER, H.; HANSCHKE, S.; MAJCHRZAK, T. a. Evaluating cross-platform
development approaches for mobile applications. Lecture Notes in Business Information
Processing, [S.l.], v.140 LNBIP, p.120138, 2013.
HILLEGASS, A. Objective-C Programming. [S.l.: s.n.], 2011.
IDC. IDC: smartphone os market share 2014, 2013, 2012, and 2011. 2014.
REFERNCIAS
50