Sei sulla pagina 1di 61

Ps-graduao

MIT em Desenvolvimento Mobile

A WEB COMO UNIFICAO DAS


PLATAFORMAS MOBILE
Allan Marques Baptista
Coordenador: Thiago Cortat

Rio de Janeiro, maio de 2015

RESUMO
Este trabalho tem como objetivo fazer uma anlise da atual situao das
plataformas mveis do ponto de vista tanto do desenvolvedor, quanto de negcios,
trazendo uma comparao tcnica sobre cada uma das plataformas mais populares,
listando os benefcios e malefcios de cada abordagem e sugerindo uma opo mais
vivel em termos de custo e tempo de desenvolvimento, utilizando a WEB e suas
tecnologias como uma interface de alto nvel para os recursos nativos das
plataformas mobile. Se baseando em casos de uso do mundo real, este trabalho
explicita os problemas recorrentes nos projetos de desenvolvimento de aplicativos
para dispositivos mveis e tenta introduzir possveis solues utilizando uma
abordagem comumente chamada de multi-plataforma, que pode aproveitar ou no
de ferramentas e tecnologias j disponveis na WEB, facilmente acessveis e
assimilveis. Finalizando, lista opes de ferramentas j consolidadas no
desenvolvimento de aplicaes multi-plataforma, hbridas ou nativas, que tentam
solucionar justamente os problemas discutidos durante o discorrer deste trabalho,
deixando claros todos os caminhos disponveis para evitar ao mximo o desperdcio
de recursos e tempo em um projeto de aplicativo mobile.

Palavras-Chave: Dispositivos mveis, Desenvolvimento, Aplicativos, Android, iOS,


Windows Phone, Multi-Plataforma, Web

ABSTRACT
This paper has the goal of making an analysis of the current mobile
platforms situation, not only in the developer`s point of view, but in the business point
of view as well. Bringing a tecnical overview of each of the most popular platforms,
listing the pros and cons of each approach and suggesting a more viable option in
terms of cost and development time, using the web and it`s technologies as a highlevel interface for the native resources of mobile platforms. Based on real-world use
cases, this paper explains the recurrent problems in mobile application development
projects and tries to introduce possible solutions using a common approach called
cross-platform, which can make use or not, of accessible tools and technologies
already available on the web. Finally, it lists some tool options, that are already
consolidated in cross-platform applications development, hybrid or native, and tries to
solve the problems discussed during the discourse of this paper, making clear all
available paths in order to minimize the waste of resources and time in a mobile
application project.

Keywords: Mobile devices, Development, Apps, Android, iOS, Windows Phone,


Cross-Platform, Web

SUMRIO
Resumo ...................................................................................................................... 2
Abstract ...................................................................................................................... 3
1 Introduo ............................................................................................................... 5
1.1 Mobile no o futuro, o presente ....................................................................... 5
1.2 A ascenso e queda das startups ......................................................................... 7
1.3 A abordagem multi-plataforma e a WEB ............................................................. 11
2 Comparando as abordagens ............................................................................... 14
2.1 Aplicativos nativos: vantagens ............................................................................ 15
2.2 Aplicativos nativos: desvantagens....................................................................... 16
2.3 Aplicativos multi-plataforma/hibridos: vantagens ................................................ 18
2.4 Aplicativos multi-plataforma/hibridos: desvantagens........................................... 19
2.5 Por que a abordagem multi-plataforma/hibrida o ideal?................................... 19
3 Ferramentas para desenvolvimento de aplicativos multi-plataforma ............. 21
3.1 Apache Cordova .................................................................................................. 22
3.2 Appcelerator Titanium ......................................................................................... 29
3.3 Intel XDK ............................................................................................................. 35
3.4 Sencha Touch ..................................................................................................... 40
3.5 NativeScript ......................................................................................................... 45
3.6 React Native ........................................................................................................ 50
4 Concluso ............................................................................................................. 57
Referncias .............................................................................................................. 59

1 INTRODUO
Este trabalho ir tentar explicitar o quanto ferramentas oriundas do
desenvolvimento WEB tm influenciado de maneira positiva no desenvolvimento de
aplicativos mobile e o porque esta abordagem pode a vir se tornar a maneira mais
popular de desenvolver aplicativos, devido a sua facilidade, rapidez, baixo custo e
manutenibilidade. Tambm sero abordados cases e exemplos das ferramentas
citadas aqui e como seus benefcios podem ajudar a baratear o custo do
desenvolvimento de um aplicativo, se tornando uma tima maneira de validar uma
ideia e ajudando uma pequena/media empresa, startup ou desenvolvedor autnomo
entrar no disputado mundo dos apps.

1.1 MOBILE NO O FUTURO, O PRESENTE


A plataforma mobile j deixou de ser coadjuvante no atual contexto
tecnolgico e continua a ganhar espao, sendo o nico aparelho tecnolgico at
hoje com a possibilidade de ser acessvel por toda a populao terrestre.
H pouqussimo tempo atrs pensvamos em smartphones como a segunda
tela, ou seja, um aparelho secundrio que complementava a experincia do seu
irmo maior, o laptop ou desktop PC. Era um mundo que visitvamos somente
quando no tnhamos um PC prximo, porm o comportamento das pessoas
mudaram muito, em pouqussimo tempo. O tempo que passamos utilizando um
smartphone j ultrapassou o tempo que passamos em frente do PC ou da televiso.

Proporo de tempo que passamos utilizando cada dispositivo. (Fonte:


http://www.millwardbrown.com/adreaction/2014)

De acordo com o um estudo da Millward Brown, nos EUA, as pessoas


passam 151 minutos por dia utilizando o smartphone contra 147 minutos dirios na
frente da televiso. Limitando o escopo somente para o Brasil, os nmeros so
ainda mais impressionantes, os brasileiros gastam em mdia 149 minutos por dia
utilizando o smartphone, enquanto passamos somente 113 minutos dirios
assistindo televiso.
A mesma pesquisa tambm revela que 34% da utilizao de dispositivos
eletrnicos como smartphones, tables, PCs e TVs, so feitos de forma simultnea.
Comportamento que aumentou muito a necessidade de uma boa experincia crossdevice, ou seja, uma experincia consistente para o usurio que utiliza aquele
mesmo servio ou produto em mltiplas telas.

Com esses nmeros fica fcil de perceber como o mobile sendo o principal
canal de aquisio e reteno de clientes no mais o futuro, e sim o presente, e as
empresas que no acompanharem esta tendncia pode ficar para trs muito rpido
e alcanar as empresas que s ultrapassaram pode se revelar improvvel.

1.2 A ASCENSO E QUEDA DAS STARTUPS


O contexto atual na rea de tecnologia j est claro h algum tempo, qualquer
empresa que almeja continuar crescendo, seja ela pequena, mdia ou grande, deve
ter algum tipo de presena no mundo mobile, seja por meio de sites responsivos,
sites exclusivamente mobile ou aplicativos nativos. Sobre qual abordagem a
empresa deve tomar, depende muito do segmento, objetivo e aplicao, mas j
comum ver as trs abordagem serem utilizadas simultaneamente em grandes
produtos como Twitter, Pinterest e Gmail.
Alm da necessidade de produtos j consolidados estenderem suas
presenas para o mobile, h tambm uma quantidade enorme de novas minsculas
empresas que tentam validar suas ideias utilizando o mobile como escopo principal.
Essas empresas, comumente chamadas de startups, tm surgido no mundo todo,
incentivadas pelo sucesso de grandes cases como WhatsApp, Instagram e Vine.
Cases de sucesso que comearam como startups de pouqussimos integrantes com
uma simples e inovadora ideia, e que em pouco tempo depois acabaram sendo
compradas por centenas de milhes, ou at dezenas de bilhes de dlares. Graas
esses grandes cases, em 2015 o nmero de startups criadas no primeiro semestre
aumentou 300% em relao ao ano anterior.
Mas chegar no patamar dessas pequenas startups que se tornaram enormes
empresas, pode se revelar uma tarefa rdua. Segundo a revista Fortune, nove entre
dez startups acabam falindo antes de alcanar este objetivo, enterrando com ela
todo o esforo feito pelos envolvidos. A revista ainda lista os 20 principais motivos
pelo qual isso acontece.

As 20 razes pelas quais startups vem a falir, de acordo com seus fundadores (Fonte:
http://fortune.com/2014/09/25/why-startups-fail-according-to-their-founders/)

So muitos motivos para se atentar, o que torna claro o quanto qualquer


pequeno erro nesta fase pode representar a falha da startup. Segundo o grfico
acima o segundo maior motivo o trmino do dinheiro para manter a pequena
empresa respirando, o que torna crucial para uma startup, que almeja chegar ao
patamar dos peixes grandes, planejar bastante seus custos na hora de validar uma
ideia que pode ou no ter valor no mercado.

O primeiro grande motivo para a morte das startups a falta de valor no


mercado, mas isso tambm pode ser amenizado com uma boa gesto de custos
nesta etapa to crucial, afinal se a ideia se revelar no-produtiva, mas ainda houver
dinheiro em caixa para manter a empresa em funcionamento comum acontecer o
que chamamos de pivot, uma palavra bastante utilizada no mundo das startups
para representar a adaptao de uma ideia para que ganhe valor de mercado. Por
exemplo, o Paypal comeou como uma empresa de troca de dinheiro virtual entre
dispositivos Palm, mas com o tempo perceberam que seu servio tinha mais
potencial nos micropagamentos e na troca de dinheiro via web, e agora o Paypal
consolidado o maior servio de troca de pagamentos online do mundo.
Quando percebemos que qualquer erro na gesto de custos pode levar
extino da startup, fica claro que toda e qualquer forma econmica de validar uma
ideia deve ser tratada como tima opo nesta fase.
Voltando para o escopo mobile, que o foco deste trabalho, existem grandes
diferenas entre os caminhos que uma grande e consolidada empresa, e uma
pequena startup devem seguir para serem bem sucedidos ao introduzir seu produto
ou servio no competitivo mundo das telas pequenas.
Uma empresa consolidada dispe dos recursos necessrios para atacar em
todas as frentes (site responsivo, Web App ou Apps de mltiplas plataformas) e
medir o sucesso de cada uma delas, iniciando um ciclo de implementao, medio,
aprendizado e aprimoramento em todas elas.
Uma pequena startup possui recursos muito limitados e precisam cuidar muito
bem deles, ento a abordagem de validar a ideia economizando o mximo possvel
de recursos o ideal. Mas existem vrias dificuldades ao tentar validar uma ideia de
maneira barata no contexto mobile, algumas delas so:
Para atingir todo o pblico mobile necessrio atender a mltiplas
plataformas
Para um produto passar credibilidade e qualidade, devem respeitar as
particularidades visuais de cada plataforma
Tempo de concepo multiplicado por cada plataforma atendida

10

Custo de concepo multiplicado por cada plataforma atendida


Falta de mo de obra qualificada
Deixando claro que o fato de ter de atender mais de uma plataforma o
principal motivo de aumento de custos na durante o processo de desenvolvimento
de um aplicativo nativo de smartphone. Este fato torna o mundo mobile em um mar
perigoso para uma pequena startup estar.

Ciclo de desenvolvimento sugerido pela metodologia Lean Startup (Fonte:


http://theleanstartup.com/principles)

Ficando explicito que um dos principais motivos de uma startup falhar a


pobre gesto de custos ao validar uma ideia, a metodologia Lean Startup trouxe a
abordagem de validar essas ideias com verses simplificadas do produto de maneira
que o custo, tempo e risco da implementao dele seja bem menor, tornando
mnimo o ciclo de implement-lo, medir seu sucesso, aprender com os resultados e
aprimor-lo. Esta verso simplificada do produto chamada de MVP, acrnimo para
Minimium Viable Product que representa o produto minimamente vivel para validar
uma ideia.

11

Tendo em vista o que a metodologia Lean Startup prega fica claro que uma
abordagem perfeita para pequenas startups, mas como podemos aplic-la no
contexto mobile? J que devemos ter em vista vrias plataformas para maior
alcance, como podemos desenvolver um MVP que atenda todas as plataformas e
ainda sim ser simples, rpido e barato de implementar?

1.3 A ABORDAGEM MULTI-PLATAFORMA E A WEB


As plataformas mobile mais amplamente difundidas atualmente so duas:
Android (da Google, corresponde 78% do mercado de smartphones) e iOS (da
Apple, corresponde 18.3% do mercado de smartphones). Existem tambm
plataformas que alcanam bem menos pessoas mas ainda sim possuem seu lugar
no mercado e devem ser levadas em considerao, so elas: Windows Phone (da
Microsoft, corresponde 2.7% do mercado de smartphones) e BlackBerry OS (da
Blackberry, corresponde 0.3% do mercado de smartphones). O grfico abaixo
demonstra a mudana dessas estatsticas ao longo dos trimestres dos ltimos trs
anos.

12

Market share mundial de plataformas de smartphone (Fonte:


http://www.idc.com/prodserv/smartphone-os-market-share.jsp)

Sabendo que h pelo menos quatro plataformas para serem atacadas,


existem vrias abordagens para diminuir os custos de um projeto de aplicativo
mobile. Uma delas seria ignorar as plataformas menos populares no incio e
somente atacar as outras plataformas assim que a ideia sendo validada se revelar
valiosa o bastante para continuar sua implementao. Embora essa estratgia seja
tima para diminuir os custos de um projeto, uma grande massa de usurios em
potencial esto sendo ignoradas junto com as essas plataformas, o que pode
diminuir bastante as chances de sucesso na introduo de uma nova ideia no
mercado de aplicativos mobile.
E se existisse uma abordagem que tornasse possvel atacar todas as
plataformas possveis e ainda ter um custo menor que a abordagem descrita acima?
Essa abordagem existe, ela conhecida como multi-plataforma.
A abordagem multi-plataforma surgiu da necessidade de atender todas as
plataformas mobile existentes de forma mais barata, rpida e manutenvel do que
criar e manter um projeto separado para cada plataforma que deseja atingir. Essa

13

abordagem torna possvel manter somente um projeto, uma base de cdigo, e por
meio de algum tipo de ferramenta de build e compilao, esta base cdigo portada
para cada plataforma escolhida, provendo uma experincia consistente em todas
elas.
J existem dezenas de ferramentas que implementam a abordagem multiplataforma, muitas delas j consolidadas no mercado, e todas elas implementam
esta abordagem de maneiras diferentes para justificar sua existncia.
Algumas ferramentas utilizam de linguagens como Java e C# para abstrair e
unificar as APIs similares de cada plataforma, resultando em s uma API, s um
framework, que encarregado de compilar para sua verso nativa de cada
plataforma. Outras utilizam uma abordagem mais simples, que consiste em utilizar
um componente de WebView, que funciona como um navegador embarcado na
aplicao que ir renderizar telas criadas com as tecnologias web mais conhecidas:
HTML, CSS e Javascript. Alm de fornecer uma API, geralmente via Javascript, para
comunicao com as caractersticas nativas que todo dispositivo mobile oferece,
como GPS, contatos, armazenamento local, acelermetro e giroscpio, vibrao e
at bluetooth.
A abordagem multi-plataforma utilizando ferramentas web j est muito
difundida entre os desenvolvedores que j possuem experincia com a tecnologias
web, pelo fato de no precisarem abdicar de todas suas habilidades e aprenderem
um novo ecossistema de ferramentas, somente para desenvolver um aplicativo
mobile nativo. Vrias grandes empresas tambm aderiram esta abordagem para
melhor utilizao de seus recursos na validao de um produto como aplicativo de
smartphones.
Este trabalho ir apresentar cases de sucesso e exemplos utilizando a
abordagem multi-plataforma, utilizando ferramentas web j consolidadas como
espinha dorsal de sua implementao. Sero apresentadas as ferramentas mais
populares que implementam essa abordagem, suas vantagens e desvantagens, e
como a adoo destas ferramentas em grande escala est mudando o mundo do
desenvolvimento de aplicativos nativos para sempre.

14

2 COMPARANDO AS ABORDAGENS
At ento foram citadas trs abordagens (sites responsivos/web apps, apps
nativos e apps multi-plataforma/hbridos) para desenvolvimento de aplicaes
mobile, embora este trabalho foque em somente um deles, preciso listar as
diferenas entre cada abordagem e o porqu da soluo proposta aqui, poder ser
uma abordagem melhor dependendo do escopo.
Na tabela abaixo feita uma comparao entre as abordagens de ao longo
de vrios items.
App nativo

Apps necessrios
para atingir todas as
plataformas mais
populares

App multi-plataforma
/ hibrido

HTML

HTML

CSS

Objective-C /
Swift

CSS

Javascript

Java

Javascript

C++

C#

Linguagem de
back-end
(nodeJS, PHP,
Ruby...)

Linguagem de
back-end
(nodeJS, PHP,
Ruby...)

Framework de
desenvolvimen
to mobile

Skill / ferramentas
necessrias para
desenvolvimento em
vrias plataformas

Web app / site


responsivo

Instalado no
dispositivo?

Sim

No

Sim

Distribuio

App Store/Market

Internet

App Store/Market

Integrao com
dispositivo

Integrao total:
(cmera, microfone,
GPS, giroscpio,
acelermetro, upload
de arquivos, contatos,
bluetooth)

Integrao parcial:
(GPS, giroscpio,
acelermetro, upload
de arquivos)

Integrao total:
(cmera, microfone,
GPS, giroscpio,
acelermetro, upload
de arquivos, contatos,
bluetooth)

15

Na comparao acima fica

ntida que a abordagem multi-plataforma

utilizando ferramentas web une as caratersticas da aplicao nativa com as


caractersticas do web app, formando um hbrido que rene as foras das outras
abordagens (por isso so chamados de Aplicativos Hbridos). Mas ainda assim, ao
desenvolver aplicativos mobile, h vantagens e desvantagens de seguir cada
abordagem, e imprescindvel que elas sejam levadas em considerao ao iniciar
um projeto, pois cada abordagem somente adequada para um caso, se este
atende os requisitos que a abordagem necessita.

2.1 APLICATIVOS NATIVOS: VANTAGENS

Melhor performance grfica possvel: Quando criados utilizando a


linguagem nativa do dispositivo, os aplicativos oferecem a melhor performance
grfica e animaes possveis. Se o aplicativo necessita ter grande performance
grfica, como um jogo, aplicativos escritos com sua linguagem nativa so sua
melhor opo.
Distribuio nas lojas de aplicativos: Aplicativos nativos so distribudos
pelas lojas e marketplaces de aplicativos da sua plataforma. Distribuio em lojas de
aplicativos essencial se o aplicativo necessita ser acessvel para consumidores em
larga escala, ou em aplicativos que precisam ser vendidos. importante notar que
aplicativos hbridos tambm podem ser distribudos em lojas de aplicativos.
Integrao com o dispositivo: Aplicativos nativos possuem total acesso ao
hardware do dispositivo como seu sensor GPS, lista de contatos, cmera, microfone,
giroscpio, acelermetro e bluetooth. Essas capacidades so essenciais para
aplicativos que necessitam de informaes do dispositivo como localizao
geogrfica ou posio/deslocamento do dispositivo. importante notar que
aplicativos hbridos tambm possuem total integrao com essas capacidades do
dispositivo.

16

2.2 APLICATIVOS NATIVOS: DESVANTAGENS


Sem portabilidade: Como cada aplicao nativa roda somente em uma
plataforma, deve-se tomar a deciso de construir o aplicativo para uma s
plataforma ou para vrias. Infelizmente no h respostas fceis. Como ilustrado pela
imagem abaixo, o panorama mobile possui quatro consolidadas plataformas de
smartphones e quatro consolidadas plataformas de tablets. Construindo um
aplicativo para uma s plataforma, exclui outras sete, j construindo para todas as
plataformas necessita de uma significante quantidade de tempo e recursos.

(Fonte: http://www.mrc-productivity.com/)

Instabilidade de plataforma: O panorama das plataformas mobile


notoriamente instvel. Uma plataforma popular hoje pode desaparecer em alguns
anos. Por exemplo, ambos Blackberry e Palm dominaram a indstria mobile h
somente cinco anos atrs. Hoje, Blackberry est lutando para continuar viva e Palm
no existe mais. Quando se escolhe a abordagem nativa sempre h o risco de
desperdcio de tempo e dinheiro, construindo um aplicativo para uma plataforma que
pode no durar muito tempo.
Custo de desenvolvimento: Enquanto o custo do desenvolvimento de
aplicativos nativos varia de acordo com a complexidade do aplicativo, facilmente a

17

abordagem mais cara e que exige mais tempo para ser seguida. Por exemplo, a
Forrester Research, em uma de suas pesquisas, estima que aplicativos nativos
necessitam de pelo menos seis meses de trabalho e custam entre $20.000 e
$150.000 dependendo da sua complexidade. A mesma pesquisa resultou em uma
tabela de custos bem desanimadora para pequenos empreendedores.
Custo de um
aplicativo
Aplicativo de uma
plataforma

Nmero de
aplicativos

Custo total

necessrios

$20.000 - $150.000

$20.000 - $150.000

$20.000 - $150.000

$80.000 - $600.000

$20.000 - $150.000

Aplicativo de
vrias
plataformas
Aplicativo de
varias
plataformas +
aplicativos de

$160.000 $1.200.000

tablets

No brasil, segundo uma pesquisa feita pela Esauce, Um aplicativo de celular


de pequeno porte consome de 150 a 500 horas para ser desenvolvido. Tem o custo
aproximado entre R$ 10 mil e R$ 60 mil. Aplicativos mais complexos podem custar
entre R$ 100 mil e R$ 200 mil. (esauce.com.br, 2014)
Tempo de desenvolvimento: Como mencionado acima, a Forrester
Research estima que um nico aplicativo nativo necessita de seis meses de tempo
de desenvolvimento. Quando desenvolvendo aplicativos para mais de uma
plataforma, o tempo requerido aumenta dependendo do nmero de desenvolvedores
necessrios e complexidade da aplicao. Por exemplo, utilizando somente um
desenvolvedor para desenvolvimento de aplicativos para vrias plataformas de

18

smartphones aumenta o tempo de desenvolvimento para dois anos (4 aplicativos x 6


meses para cada). Porm, estimao de tempo de desenvolvimento quando
utilizando mltiplos desenvolvedores no nada fcil. Por exemplo, se uma startup
utiliza quatro desenvolvedores diferentes para cada plataforma de smartphone,
estes iro receber quatro designs diferentes da aplicao. Como qualquer
gerenciador de projetos sabe, garantir que mltiplos aplicativos, desenvolvidos por
mltiplos desenvolvedores, tenham comportamentos e experincias idnticas uma
tarefa que consume bastante tempo.
Custo de manuteno: Enquanto todas as aplicaes necessitam de
manutenes e atualizaes regulares, aplicativos nativos necessitam de muito mais
manutenes futuras quando comparamos com as outras abordagens de
desenvolvimento. Alm da manuteno regular, aplicativos nativos tambm podem
ter que ser atualizados sempre que a plataforma atualizada. Adicionalmente,
quando construindo aplicativos nativos para vrias plataformas, tambm
necessrio manter estes aplicativos em vrias plataformas, ou sejas, cada pequena
mudana em um aplicativo nativo de smartphone e tablet que possui verso em
todas as plataformas mais populares pode ter que ser replicada at oito vezes, uma
vez para cada plataforma.

2.3 APLICATIVOS MULTI-PLATAFORMA/HIBRIDOS: VANTAGENS

Look-and-feel nativo (sem o custo do nativo): Como aplicativos nativos,


aplicativos hbridos tambm so instalados no dispositivo e funcionam como uma
tpica aplicao nativa. Esses atributos nativos fazem com que o aplicativo hibrido se
torne praticamente indistinguvel de aplicativos nativos. Na verdade, muitas pessoas
no sabem que aplicativos nativos populares como Linkedin, Foursquare, e Twitter
so na verdade aplicativos hbridos.
Integrao com o dispositivo: Como mencionado acima, aplicativos
hbridos funcionam exatamente como aplicativos nativos, ento possuem total
acesso capacidades nativas do dispositivo, sem exceo.

19

Distribuio nas lojas de aplicativos: Novamente aqui, como aplicativos


nativos, aplicativos hbridos podem ser distribudos nas lojas de aplicativos da
mesma maneira, ento win-win".
Desenvolvimento multi-plataforma de baixo custo: Como geralmente
necessrio uma base de cdigo para desenvolver e manter aplicativos para vrias
plataformas, o custo e o tempo necessrio so bem menores quando comparados
com a abordagem nativa. Por exemplo, se uma startup j tem um web app, o tempo
e custo para portar este aplicativo como aplicativo nativo so quase nulos j que
toda base de cdigo pode ser reutilizada. Adicionalmente, todo conhecimento dos
desenvolvedores web podem ser aproveitados no desenvolvimento de um aplicativo
hibrido, o que diminui o custo na perspectiva de que no ser preciso alocar tempo
para aprender uma nova plataforma de desenvolvimento ou gastar dinheiro
contratando um desenvolvedor que possui proficincia naquela plataforma.

2.4 APLICATIVOS MULTI-PLATAFORMA/HIBRIDOS: DESVANTAGENS

Performance grfica limitada: Apesar da sua aparncia nativa, aplicativos


nativos possuem as mesmas capacidades grficas que web apps. Embora na
maioria dos casos esta diferena na performance negligencivel, quando o
aplicativo necessita de grande capacidades grficas, como games, a abordagem
ideal a nativa.
Necessita

familiaridade

com

algum

framework

mobile

hibrido:

Transformar um web app em um aplicativo mobile hibrido necessita do


conhecimento da ferramenta/framework mobile hibrido. Mesmo sendo muito mais
simples que o desenvolvimento nativo, a abordagem hibrida adiciona um nvel de
complexidade ao processo de desenvolvimento do web app mobile, j que os
desenvolvedores necessitam se familiarizar com o framework hibrido.

2.5 POR QUE A ABORDAGEM MULTI-PLATAFORMA/HIBRIDA O IDEAL?

20

A no ser que esteja num escopo onde o custo e tempo de desenvolvimento


no seja um problema (o que geralmente improvvel) ou que o produto final
necessite de magnifica performance no mobile (como games, por exemplo), no h
valor de negcios em seguir a abordagem nativa para validar um ideia ou ao iniciar
um projeto.
Aps de levar em considerao os pontos levantados neste capitulo e os
conceitos que o Lean Startup prega, fica claro que a melhor maneira de desenvolver
um MVP no escopo mobile seguir a abordagem multi-plataforma/hibrida. Ao fazer
isso, agrega-se os benefcios dos aplicativos nativos com os benefcios da web,
minimiza-se ao mximo suas desvantagens e ainda sim, com o menor custo
possvel quando comparando com as outras abordagens.
Como a abordagem hibrida no desenvolvimento de aplicativos mobile nativos
possui maior valor de negcios, novas ferramentas que implementam essa
abordagem surgem todo dia, logo o principal problema se torna decidir qual
ferramenta a ideal para o escopo da ideia que deseja validar, mas comparado
problemas que podem extinguir uma startup embrionria, este o menor deles.

21

3 FERRAMENTAS PARA DESENVOLVIMENTO DE APLICATIVOS MULTIPLATAFORMA / HIBRIDOS

Dentre todas as opes disponveis para desenvolvimento de aplicativos


multi-plataforma/hbridos h aquelas ferramentas que se destacam, embora isso no
signifique que as ferramentas menos populares no devem ser levadas em
considerao. Alm disso, o panorama de desenvolvimento um muito voltil, um
mundo em constante movimento, em que a todo momento novas ferramentas
nascem e outras se tornam obsoletas, portanto a escolha deve levar em
considerao vrios pontos importantes como:
Escopo do problema a ser solucionado;
Custo (nem todas as ferramentas so gratuitas ou open-source);
Tamanho da comunidade (geralmente quanto maior a comunidade em torno
da ferramenta, mais informao sobre ela pode ser encontrada online);
Qualidade do suporte e documentao;
Habilidades j dominadas pelos desenvolvedores da equipe;
Curva de aprendizado;
Velocidade de desenvolvimento e facilidade de manuteno.
Sabendo como avaliar as opes, falta saber que opes avaliar. Neste
capitulo sero apresentadas as opes mais populares, sero listadas suas
vantagens e desvantagens e e seus cases de sucesso.
As ferramentas que sero apresentadas aqui so:
Apache Cordova (Adobe Phonegap, Ionic)
Appcelerator Titanium
Intel XDK
Sencha Touch
NativeScript
React Native

22

3.1 APACHE CORDOVA


Antes chamado de Phonegap, projeto open-source iniciado e mantido pela
empresa Nitobi que foi comprada pela poderosa Adobe, e por ter um grande nmero
de contribuidores (inclusive de grandes empresas como IBM), foi includa no Apache
Software Foundation.
No inicio, o nome do projeto foi alterado para Apache Callback, mas depois
renomeado para Apache Cordova (nome de uma rua onde os escritrios da Nitobi
se situavam). A mudana de nome foi necessria pois, diferentemente do projeto, a
marca Phonegap fazia parte da compra da Nitobi pela Adobe.
Hoje Phonegap somente uma distribuio comercial do Apache Cordova.
Para ilustrar melhor, Brian Leraux (um dos criadores do Phonegap) fez a analogia de
que o Apache cordova para o Phonegap o que o Webkit para o Chrome ou
Safari (LERAUX, BRIAN, 2011).
Como definido pelo prpria documentao, o Apache Cordova um conjunto
de APIs que permite que o desenvolvedor acesse funes nativas do dispositivo,
como cmera e acelermetro, via Javascript. Quando combinado com um framework
de interfaces de usurio como JQuery Mobile, Dojo Mobile ou Sencha Touch,
permite que um aplicativo de smartphone ou tablet seja desenvolvido utilizando
apenas HTML, CSS e Javascript.
Enquanto utilizando as APIs do Apache Cordova, um aplicativo pode ser
construdo sem a necessidade do desenvolvedor escrever sequer uma linha de
cdigo nativo (Java, Objecttive-C, Swift, C#, etc...). Ao invs disso, tecnologias web
so utilizadas e servidas localmente, direto do aplicativo (normalmente no em um
servidor HTTP remoto).
Devido ao fato das APIs Javascript serem consistentes em mltiplas
plataformas de dispositivos e serem construdas em cima dos padres web, o
aplicativo se torna portvel para outras plataformas, com poucas ou mesmo
nenhuma mudana.

23

O Apache Cordova prov uma srie de bibliotecas Javascript uniformes que


abstraem o cdigo nativo especifico de cada plataforma e est disponvel nas
plataformas: iOS, Android, Windows Phone, Blackberry, Palm WebOS, Bada e
Symbian.
Construdo desde o incio com o mindset em extensibilidade e plugabilidade, o
Apache Cordova prov um sistema simples de desenvolvimento, consumo e
contruibuio de plug-ins. Com exceo do Core, todas as APIs de acesso s
capacidades nativas do dispositivo s estaro disponveis assim que seu plug-in
equivalente estive instalado no projeto. Por exemplo, caso seja necessrio o acesso
cmera do dispositivo, ser necessrio instalar o plug-in de cmera no projeto
utilizando a ferramenta de interface de linha de comando (CLI) do Apache Cordova.
Aps o plug-in ser instalado, a API de acesso a cmera do dispositivo estar
disponvel para o desenvolvedor via Javascript.
A maior parte da utilizao do Apache Cordova feita a partir de sua
ferramenta de CLI. Como esta ferramenta baseada em Node.js, e distribuda via
NPM (Node Package Manager), necessrio como pr-requisito que o usurio
instale o Node.js e um cliente Git (o mais utilizado gerenciador de verses). Aps a
instalao destas ferramentas, basta utilizar o comando sudo npm install g
cordova (OS X ou Linux) ou npm install g cordova (Windows), e a ferramenta de
CLI do Apache Cordova estar pronta para ser utilizada.
Aps a instalao da ferramenta de CLI do Apache Cordova o prximo passo
criar um projeto do aplicativo, que pode ser facilmente feito a partir do comando
cordova create $DIR_DO_APP $ID_DO_APP $NOME_DO_APP na interface de
linha de comandos do sistema operacional sendo utilizado. Com isso ser criado um
projeto de aplicativo com o nome de $NOME_DO_APP, identificador de aplicativo
$ID_DO_APP, na pasta $DIR_DO_APP.

24

Estrutura de arquivos de um projeto de aplicativo do Apache Cordova

A estrutura de arquivos do Apache Cordova foi pensada de maneira que


qualquer desenvolvedor que tenha familiaridade com as mais conhecidas ferramenta
web de front-end se sinta vontade em seu ambiente. A estrutura de um projeto de
aplicativo do Apache Cordova composta basicamente por quatro pastas de
arquivos e um arquivo config.xml na raz do projeto. Abaixo uma breve descrio
sobre cada parte da estrutura:

config.xml: Arquivo de configurao XML global, agnstico de plataforma,


que controla vrios aspectos de comportamento do aplicativo (como
cones, splash-screen, customizaes de plataforma e etc...);

hooks/: Pasta onde so armazenados scripts que podem ser adicionados


por plug-ins, pela aplicao ou scripts de build, para customizar comandos
do Apache Cordova;

platforms/: Pasta onde ficam armazenados os projetos de cdigo nativos


de plug-ins e da prpria aplicao. Este cdigo quando compilado que
origina o executvel do aplicativo que poder ento ser distribudo nas
lojas de aplicativos;

plugins/: Pasta onde ficam armazenados os plug-ins instalados no


projeto;

25

www/: Pasta onde ficam os principais arquivos do aplicativo e onde o


desenvolvedor construir a interface para ser consumida pelo usurio
mobile. O arquivo index.html contido aqui o ponto de entrada para o
aplicativo.

Apesar de ser possvel testar o aplicativo direto do navegador do desktop ou


notebook sendo utilizado como maquina de desenvolvimento, o que torna o
desenvolvimento mobile bem mais dinmico (sem precisar compilar aplicao
sempre que fizer uma modificao), tambm possvel testar a aplicao direto de
um dispositivo smartphone/tablet, ou simplesmente de um simulador da plataforma
desejada.
O comando cordova platform add $PLATAFORMA adiciona um projeto de
cdigo nativo da plataforma escolhida, que permite compilar o aplicativo para aquela
plataforma. Executando o comando cordova build $PLATAFORMA, o Apache
Cordova executa o build que compila o projeto nativo da plataforma escolhida e cria
o pacote que pode ser enviado para loja de aplicativos para ser baixado pelos
usurios finais. Por fim, o comando cordova run $PLATAFORMA executa o
aplicativo em um dispositivo conectado em modo de desenvolvedor ou no simulador
daquela plataforma, se estiver disponvel.

26

Aplicativo do Apache Cordova simples, rodando nos simuladores de iOS e Android

Como falado mais acima, o Apache Cordova somente revela APIs de


comunicao com as APIs nativas do dispositivo, deixando o desenvolvedor com a
total liberdade de utilizar qualquer framework de interface de usurios ou conjunto de
bibliotecas em que ele tiver mais proficincia. Esta flexibilidade fez que com que
vrios frameworks web exclusivos para dispositivos mobile tenham nascido com sua
arquitetura pensada para total interoperabilidade com as APIs que o Apache
Cordova fornece. Estes frameworks ajudam a abstrair grande parte das
complexidades existentes ao criar uma aplicao web voltada para o mobile,
deixando o desenvolvedor focar no que realmente importa. Dentre os vrios
frameworks e bibliotecas existentes, h os mais aceitos pela comunidade e com a
maior gama de cases de sucesso, alguns deles so:
Ionic Framework (Baseado no framework Javascript AngularJS da Google)
Onsen UI (Pode ser utilizado com Angular JS ou JQuery)
JQuery Mobile (Baseado em JQuery e JQuery UI)

27

Reapp (Baseado no framework de UI ReactJS do Facebook


Sencha Touch (Abordado aqui com mais profundidade mais abaixo)
Famo.us (Baseado em canvas HTML5)
Como foi dito acima, h vrios cases de sucesso que utilizaram o Apache
Cordova como espinha dorsal do seu desenvolvimento de aplicativos mobile,
entre eles:
Wikipedia: O aplicativo oficial do Wikipedia foi construdo utilizando o
Cordova/Phonegap;
Facebook: Utiliza uma verso alterada do Apache Cordova na sua API
mobile;
Salesforce: Utiliza uma verso alterada do Apache Cordova na dua API
mobile;
IBM: A plataforma IBM/Worklight de desenvolvimento mobile baseada em
cima do Apache Cordova;
Microsoft: Utiliza a plataforma Apache Cordova para criar alguns aplicativos
multi-plataforma, alm de contribuir para o projeto (especificamente para
plataforma Windows Phone);
Adobe: Como dito acima, a Adobe atual mantenedora da maior distribuio
do Apache Cordova existente, o Phonegap. A Adobe possui todo um
ecossistema de criao de aplicativos utilizando o Phonegap.

28

Aplicativos construdos com Apache Cordova/Phonegap. (Fonte:


http://phonegap.com/app/feature/)

O Apache Cordova uma das maiores e mais consolidadas ferramentas de


desenvolvimento multi-plataforma utilizando o ecossistema web como sua base para
criao de interfaces de usurio para aplicativos mobile. Porm possui alguns
pontos ruins que devem ser salientados. Por exemplo, sua documentao bem
rasa e nada intuitiva, obrigando o desenvolvedor a procurar a soluo de possveis
problemas em fontes menos confiveis como blogs ou fruns. Outra desvantagem
que o Apache Cordova atualizado com uma frequncia relativamente baixa, o que
torna o acesso novas capacidades nativas e solues de bugs bastante
burocrtico.
Concluindo, o Apache Cordova uma tima opo para projetos que
necessitam de grande flexibilidade no aproveitamento de conhecimentos prvios de
ferramentas web dos desenvolvedores envolvidos. Possui vrios plug-ins que
aceleram o desenvolvimento e consequentemente diminuem o custo, tm uma das
maiores comunidades em torno dela, vrios casos de uso e exemplos para serem
estudados, e por ultimo, mas no menos importante, open-source. Para sempre.

29

3.2 APPCELERATOR TITANIUM


No ano de 2008, quando foi introduzido, o Titanium tinha como foco principal
o desenvolvimento multi-plataforma de aplicaes desktop e era frequentemente
comparado ao Adobe Air, que tinha o mesmo propsito. Mas em 2009 foi adicionado
o suporte para desenvolver aplicaes mobile para Android e iPhone, que foi
ganhando mais e mais importncia e visibilidade, quando em 2012, o Titanium
Desktop foi separado e se transformou em um projeto mantido pela comunidade
chamado TideSDK. Durante os anos seguintes o Titanium Mobile SDK foi evoluindo
e ganhando suporte para cada vez mais plataformas como Blackberry, Tizen,
Tablets Android e iOS, e Windows Phone.
Em 2013, Jeff Haynie, CEO da Appcelerator (empresa criadora e
mantenedora do Titanium) anunciou que a tinham iniciado um projeto para
reescrever o Titanium SDK em Javascript para melhorias de performance e tambm
para tornar o acesso ao cdigo de baixo nvel do SDK mais simples para
desenvolvedores. Em um artigo ele escreveu: Ns acreditamos que Javascript deve
ser a linguagem correta para construir o Titanium SDK em s, e no somente
aplicativos desenvolvidos em cima do Titanium (HAYNIE, JEFF, 2013). Neste ano,
segundo a Business Insider, estimava-se que 10% dos smartphones do mundo todo
estariam rodando aplicativos construdos com o Titanium, alm disso, j possua
uma base de mais de 500.000 desenvolvedores cadastrados.
O Appcelerator Titanium um framework open-source, tambm licenciado
pela Apache, que permite a criao de aplicativos mobile multi-plataforma, e oferece
suporte para as plataformas Android, iOS, Windows Phone, Blackberry OS e Tizen,
com somente uma base de cdigo em Javascript. O componente principal do
Titanium o Titanium SDK, porm a Appcelerator desenvolveu tambm o Alloy, um
framework que segue o paradigma Modelo-Interface-Controladora (MVC) baseado
no Titanium que ajuda a acelerar ainda mais o desenvolvimento de aplicativos que
podem ser rodados nas mais populares plataformas mobile. Tambm includo no
ecossistema do Titanium, a Appcelerator criou o Titanium Studio, um ambiente

30

integrado de desenvolvimento (IDE) proprietrio que permite o desenvolvimento com


Titanium utilizando ferramentas visuais de criao de interfaces mobile.
As principais caractersticas do Appcelerator Titanium incluem:
Uma API multi-plataforma para acessar componentes nativos de interfaces de
usurio, tais como barras de navegao, menus, e caixas de dilogo, alm de
funcionalidades

do

dispositivo

como

sistema

de

arquivos,

rede,

geolocalizao, acelermetro e mapas.


Acesso transparente funcionalidades nativas em que o SDK ainda no
oferece suporte.
Todo cdigo-fonte da aplicao instalado no dispositivo, onde interpretado
utilizando o motor Javascript V8, da google. O carregamento do aplicativo pode levar
mais tempo do que em aplicativos desenvolvidos com sua respectiva SDK nativa.
Isso acontece porque o interpretador e todas as bibliotecas necessrias precisam
ser carregadas antes que a interpretao do cdigo-fonte seja iniciada.
A Appcelerator afirma que o Titanium e seu ecossistema permite a
reutilizao de 60% 90% do cdigo-fonte da aplicao quando desenvolvendo
para mltiplas plataformas, o que o torna uma tima opo para prototipao e
validao de ideias com baixssimo custo e curtssimo tempo. A Appcelerator
tambm oferece uma extensa serie de ferramentas disponibilizadas por meio de
uma interface web simples e amigvel que permite:
Criar APIs para prover dados para os aplicativos;
Gerenciar, escalar e estender APIs na nuvem;
Enviar notificaes Push;
Gerenciar o ciclo de vida dos aplicativos;
Receber vises diferenciadas de negcio;
Monitorar performance e erros fatais de aplicativos;

31

Representao do ecossistema Appcelerator (Fonte: http://www.appcelerator.com/)

Embora o Titanium SDK seja open-source, a melhor maneira de desenvolver


um aplicativo mobile utilizando-o, por meio das ferramentas que a Appcelerator
oferece, e para isso ser possvel necessrio o cadastro na base de
desenvolvedores do Appcelerator. O cadastro gratuito, e suas ferramentas
tambm possuem verses gratuitas, porem para usufruir o mximo da plataforma
Appcelerator necessrio uma assinatura, que pode ser adquirida por $39 dlares
mensais. A plataforma Appcelerator permite trs formas de iniciar a criao de um
aplicativo:
Appcelerator Studio: Uma IDE baseada no Eclipse que prov uma ambiente
nico e extensvel para o desenvolvimento de aplicativos mobile;
Appcelerator CLI: Ferramenta de interface de linha de comando que rene
todos os comandos para criar e gerenciar aplicativos mobile;
Importao de Aplicativos: Oferece ferramentas de anlise, servios e
testes para aplicativos construdos com Titanium SDK, ACS ou Node.ACS.

32

Projeto criado no Titanium Studio

Um projeto tpico do Appcelerator Studio possui a seguinte arquitetura de


arquivos:
app/: Diretrio principal da aplicao, contm estrutura baseada em MVC;
o assets/: Arquivos que sero instalados como recursos do aplicativo
nativo;
o controllers/: Controladoras da aplicao;
o lib/: Bibliotecas de utilidades;
o migrations/: Arquivos de migraes necessrias de banco de dados
o models/: Modelos de acesso a dados da aplicao;
o styles/: Arquivos de estilo .tss, baseado em css, oferece uma
abstrao unificada da construo de estilos de cada plataforma;
o views/: Arquivos de interface .xml, oferece uma abstrao unificada na
construo de interface de usurios de cada plataforma;
o widjets/: Componentes pr-compilados reutilizveis pela aplicao
o alloy.js: Arquivo executado antes da execuo de qualquer controller,
utilizado para inicializao (bootstrapping)

33

o config.json: Arquivo de configurao utilizado para revelar variveis


disponveis em toda execuo da aplicao
platform/: Contm cada projeto de cdigo fonte nativo criado pelo Titanium;
plugins/: Plugins utilizados pela aplicao;
tiapp.xml: Configuraes principais do aplicativo (como ID da App, verso,
etc...);
ITunesConnect.png,

MarketplaceArtwork.png:

Imagens

da

loja

de

aplicativos.

Mesmo aplicativo de mapa rodando no iOS e Android

Graas ao tamanho de sua base de desenvolvedores e por ser consolidado


no mercado de hbridos por muito tempo, muitas empresas o escolhem como
primeira opo para criao de aplicativos mobile, o que tornou a lista de cases de
sucesso muito grande para serem listados aqui sem resumo. Uma lista dos
aplicativos mais populares construdos com Appcelerator Titanium inclui:
Wunderlist (gerenciador pessoal de tarefas)

34

Paypal (servio de pagamentos e troca de dinheiro online)


ebay (anuncio de produtos)
citi (gerenciamento de carto de credito)
Khan Academy (plataforma de treinamento de desenvolvimento)
Vmware (virtualizao)
GameStop (loja de games)

Aplicativos desenvolvidos com Appcelerator Titanium (fonte:


http://www.appcelerator.com/customers/app-showcase/)

Como foi dito anteriormente, o Appcelerator possui uma das maiores bases
de desenvolvedores cadastrados do mundo, robusto, com um ecossistema
completssimo de ferramentas que possibilitam a criao, manuteno e
monitoramento de aplicativos mobile. Oferece servios de back-end em que o
aplicativo pode se apoiar, como criao de APIs e envios de notificaes de Push.
de fcil aprendizado, tem incrvel performance quando comparado com outras
ferramentas

de

desenvolvimento

multi-plataforma,

simplifica

acelera

desenvolvimento de prottipos e aplicativos pequenos. Porm o Appcelerator

35

Titanium tambm possui alguns problemas que devem ser levados em


considerao:
Para usufruir de todas as ferramentas necessrio assinar os servios da
Appcelerator, o quem para uma pequena startup ou desenvolvedor autnomo
pode no ser nada atrativo;
Todas as ferramentas, incluindo as gratuitas, necessitam de login para ser
utilizadas e ocasionalemente o sistema de autenticao se torna instvel, o
que pode impedir que desenvolvedores trabalhem nos seus aplicativos;
Normalizar aplicativos em todas as plataformas, embora possa ser
considerado uma vantagem, tambm uma desvantagem, j que
necessrio o aprendizado de tecnologia proprietria que pode no ser
diretamente transfervel fora do ecossistema do Titanium.
Baseado em tudo que foi falado aqui, fica claro o quanto o Titanium pode
baratear e diminuir o tempo de um projeto de aplicativo mobile. Os seus servios
completos e robusto, junto ao fato de somente estarem disponveis a partir de uma
assinatura torna o Appcelerator uma opo mais apropriadas para empresas
pequenas que j possuem algum recurso para investir na validao de um modelo
de negcios, mas ainda precisam gerenciar esses recursos de forma eficiente e
eficaz.

3.3 INTEL XDK


Em 2013, a Intel adquiriu a AppMobi, uma plataforma de servios integrados
voltados para aplicativos mobile, na iniciativa de oferecer um ecossistema integrado
de construo, manuteno, monitoramento, e servios de back-end como APIs e
envios de notificaes Push. Esse ecossistema foi ento, integrado ao Intel XDK,
uma IDE centralizada que inclui o popular editor Brackets e um Editor WYSIWYG,
criando uma plataforma que hoje um dos mais completos e consolidados conjunto
de ferramentas para desenvolvimento de aplicativos mobile multi-plataforma

36

existentes. O Intel XDK pode ser baixado gratuitamente em seu site, e possui verso
para todos os sistemas operacionais mais populares.
Diferentemente das outras opes, o Intel XDK no requer nenhuma
dependncia para compilar aplicativos para as plataformas que ele suporta.
Utilizando o Apache Cordova por exemplo, para compilar um aplicativo iOS voc
necessita do XCode e suas ferramentas, e consequentemente, necessrio que
esteja utilizando o sistema operacional Mac OS X para que seja possvel iniciar o
processo de build. Com o Intel XDK isso no necessrio, como sua compilao
feita na nuvem, graas aos seus servios integrados, qualquer aplicativo pode ser
compilado para todas as plataformas de dispositivos em qualquer sistema
operacional. O Intel XDK suporta a criao de aplicativos mobile para Android, iOS,
Windows, Firefox OS e Tizen, alm de suportar tambm o desenvolvimento Apps
para Chrome OS, Facebook, Amazon e Nook.
Embora seja gratuito, para iniciar o desenvolvimento com o XDK necessrio
que o desenvolvedor se cadastre na base de usurios da Intel, pois ao abrir a IDE
so requisitadas as credenciais do utilizador, que s quando validadas habilitam o
acesso as ferramentas integradas que ele oferece.
O Intel XDK utiliza o Apache Cordova como base de seus projetos, o que o
possibilita a importao de um projeto feito puramente com Apache Cordova,
transformando-o em um projeto do Intel XDK. A IDE oferece duas maneiras de
desenvolver os aplicativos: uma utilizando um editor criado para desenvolvimento
web, o Brackets, que possui uma grande base de usurios, plug-ins e mantido pela
Adobe. A outra maneira utilizando um editor visual de interfaces onde o
desenvolvedor pode facilmente criar um prottipo por meio de clique e arraste de
componentes reutilizveis. Esses componentes so baseados em frameworks
HTML5 especficos para interfaces mobile. Os frameworks suportados so:
App Framework (mantido pela prpria Intel)
Ionic
Twitter Bootstrap 3
JQuery Mobile

37

TopCoat
Ratchet

Ambiente de desenvolvimento do Intel XDK

As ferramentas da IDE so separadas por abas numa sequncia lgica, que


tenta seguir os passos existentes no ciclo de desenvolvimento de aplicativos mobile,
as abas seguem a seguinte ordem:
1. Desenvolvimento: Onde fica o cdigo fonte e as ferramentas de edio de
cdigo ou o App Designer (Editor WYSIWYG);
2. Simulao: Usado para simular sua aplicao dentro de um dispositivo alvo,
baseado no Apache Ripple, que basicamente uma verso empacotada do
Chrome (Webkit) com suporte algumas APIs extras;
3. Teste: Utilizado para testar seu aplicativo em um dispositivo real, utilizando o
aplicativo da Intel chamado App Preview que deve estar instalado no
dispositivo alvo;
4. Depurao: Por enquanto disponvel somente para Android e iOS, permite a
depurao de aplicativos em tempo real via USB;

38

5. Monitoramento de Performance: Somente disponvel para Android at o


momento, permite o monitoramento de performance do aplicativo em tempo
real via USB;
6. Build/Packaging: Utilizado para criar o executvel do aplicativo para ser
includo nas lojas de aplicativos.
A estrutura de arquivos de um projeto criado ou importado pelo Intel XDK
varivel, j que ele oferece vrias opes de frameworks, alm da opo de criar um
projeto XDK ou Apache Cordova, cujo suas arquiteturas so muito similares. Um
desenvolvedor que tenha alguma experincia em desenvolvimento com Apache
Cordova ter pouqussima frico ao migrar para o Intel XDK, embora perca um
pouco da liberdade que o Cordova oferece, as ferramentas agregadas que o XDK
oferece podem ser atrativas dependendo dos requisitos do projeto.

39

Simulador integrado do XDK rodando um aplicativo de exemplo que utiliza a biblioteca Javascript d3js

Por ser uma ferramenta bastante completa, robusta e ter uma grande
empresa com a Intel por trs, o Intel XDK j opo primria de algumas empresas,
startups e desenvolvedores autnomos, mas por ser uma ferramenta relativamente
nova a quantidade de aplicativos populares criados com o XDK bem pequena,
porm existem. A maior parte dos projetos conhecidos desenvolvidos com XDK so
jogos, o que contradiz o fato de no ser possvel desenvolver games com
ferramentas hibridas por causa da performance. Alguns dos aplicativos mais
populares so:
Star Nomad Elite (Game de RPG/RTS)
Nika Digital (Game de estratgia)
Hostel HookApp (App para busca de albergue para estudantes)

40

ZonzoFox (App de turismo italiano, que oferece informaes de locais


turisticos na Itlia)
DeadShotZ (Game de tiro de zumbis)
Porm o Intel XDK tem algumas desvantagens que podem pesar na hora de
escolher a ferramenta certa para se iniciar um projeto, por exemplo, por ter tantas
ferramentas integradas em um s local, o XDK pode apresentar lentido em vrias
tarefas (pesadas, como rodar o aplicativo no simulador, ou at leves, como arrastar
um componente de um lado para outro no editor visual), e o fato de precisar de um
cadastro para utiliz-lo algo que pode desestimular desenvolvedores mais
apegados ao open-source. Como dito anteriormente, por ser uma ferramenta
relativamente nova, pode haver dificuldades ao procurar recursos de informao
sobre problemas comuns, j que a comunidade em torno do XDK ainda
relativamente pequena, porm a rea de documentao e treinamento do Intel XDK
e suas ferramentas so excepcionais.
Todas as ferramentas integradas ao Intel XDK oferecem um suporte 360 ao
desenvolvedor/time no ciclo de desenvolvimento de um projeto de aplicativo mobile.
Permite uma rpida prototipao, que possibilita consolidar uma ideia em produto,
em pouqussimo tempo com baixssimo custo. uma tima opo para startups ou
pequenos desenvolvedores que desejam validar uma ideia com o menor custo
possvel.

3.4 SENCHA TOUCH


Sencha Touch um produto da Sencha, uma empresa conhecida pela
criao do ExtJS (popular framework HTML5). Foi criado com base na combinao
dos j consolidados frameworks HTML5 ExtJS, JQTouch e Raphael. Por ser um
framework concebido com o principal proposito de facilitar o desenvolvimento de
sites mobile, hoje ele suporta a grande maioria de navegadores mobile.
O Touch (como chamado em alguns crculos) um framework HTML5
baseado em MVC para criao de aplicativos web mobile, e utiliza de tcnicas de

41

acelerao de hardware para prover componentes de interface de usurio de alta


performance em dispositivos mveis. Possui mais de 50 componentes reutilizveis
disponveis por padro, cada um com seu visual e comportamento nativo para cada
plataforma alvo. O Sencha Touch suporta as plataformas iOS, Android, Blackberry e
Windows Phone.

Mesma interface utilizando os vrios temas disponveis. (Fonte: http://moduscreate.com/5-bestmobile-web-app-frameworks-sencha-touch/)

Como j foi dito, o Sencha Touch somente um framework HTML5 para


criao de interfaces mobile para web, logo, para ser utilizado para criao de um
aplicativo hbrido o Sencha Touch necessita de uma casca para abstrair a
comunicao com o dispositivo e dar acesso a suas habilidades nativas. A casca
utilizada pelo Touch o, j abordado aqui, Apache Cordova. Por meio da ferramenta
de CLI do Touch possvel transformar a aplicao mobile web em um aplicativo
hibrido que pode ser includo nas lojas de aplicativos e instalado em qualquer
dispositivo das plataformas suportadas.
O Touch um dos frameworks especficos para mobile mais complexos, e
embora a curva de aprendizado possa ser mais ngreme quando comparamos com
as outras opes, ele permite que seja possvel criar interfaces de qualquer
complexidade com relativa facilidade e alm disso, a sua documentao uma das
melhores e mais completas quando comparamos com as opes aqui citadas.
Complementando, a comunidade em torno do Sencha Touch enorme, o que
equivale uma vasta base de recursos de informao online, assim a tarefa de
iniciar os primeiros passos com o framework se torna bem menos dolorosa.
O Sencha Touch totalmente integrado com o Apache Cordova, e oferece
abstraes das APIs do dispositivo nativo como cmera, geolozalizao, contatos,
acelermetro e giroscpio. Essas APIs so providas de forma consistente com todo

42

seus sistema de namespace e classes, tornando todo o ecossistema do framework


homogneo e bastante elegante.
Para continuar competitiva no mercado a Sencha precisou comear a
oferecer ferramentas facilitadoras do ciclo de desenvolvimento, ento criou o Sencha
Architect, uma ferramenta visual que permite criar interfaces de usurio com o
Sencha Touch utilizando interaes de clique e arraste. Outra forma de iniciar o
desenvolvimento de um aplicativo mobile com o Touch por meio de sua ferramenta
de interface de linha de comando (CLI), chamada de Sencha CMD, quem tem como
objetivo prover o suporte com o projeto base, processo de desenvolvimento,
gerenciamento de temas, build, simulao e empacotamento do aplicativo (utilizando
o Apache Cordova ou o servio Sencha Packager, tambm um servio de
compilao em nuvem).
O Sencha Architect, embora seja gratuito para testar por 30 dias, a sua
licena anual possui um preo relativamente salgado para escopos onde no h
muito recurso financeiro para investir muito em uma ferramenta facilitadora, ainda
mais quando h uma alternativa gratuita, que o Sencha CMD + qualquer editor
web que o desenvolvedor tenha mais proficincia. O Sencha CMD durante ou
desenvolvimento (por meio de um watcher, que acelera bastante o ciclo de escrever
cdigo e verificar seu impacto no browser) ou empacotamento do aplicativo,
escaneia o cdigo fonte, descobre suas dependncias, remove o cdigo no
utilizado, concatena e minifica o cdigo final (tanto Javascript quanto CSS, por meio
do SASS, um pre-compilador CSS), resultando em um aplicativo web mais otimizado
possvel para ser rodado eficientemente em um dispositivo mobile.
Para iniciar um projeto com o Sencha Touch utilizando o Sencha CMD
necessrio suprir algumas dependncias:
Baixar e descomprimir em qualquer diretrio o SDK do Sencha Touch;
O JRE (Java Runtime Environment) precisa estar instalado (O Sencha CMD
escrito em Java);
Ruby (para compilar o cdigo SASS em CSS);
Instalar o Sencha CMD;

43

Com todas as dependncias supridas criar um projeto to simples quanto


executar

um

comando

no

console,

especificamente

sencha

sdk

/caminho/para/sencha-touch-sdk generate app $NOME_DO_APP $DIRETORIO, e


pronto, o projeto base est criado e pronto para iniciar o desenvolvimento.

Projeto base do Sencha Touch

A estrutura de arquivos de um projeto do Sencha Touch simples de


entender para desenvolvedores que j esto acostumados com o ambiente front-end
da web. A arquitetura a seguinte:
app/: Diretrio que contm os arquivos de modelos, interfaces, controladoras
e armazns de dados da aplicao;
build/: Diretrio que contm os arquivos gerados pelo processo de build do
Sencha CMD;
packages/: Diretrio que contm os arquivos binrios de cada plataforma
mobile, gerado pelo processo de build do Apache Cordova;
resources/: Diretrio que contm os estilos e imagens utilizadas do aplicativo;
app.js: Arquivo de entrada principal do aplicativo;
app.json: Arquivo de configurao do aplicativo;

44

index.html: Arquivo HTML principal do aplicativo;


packager.json: Arquivo de configurao utilizado pelo Sencha CMD para
gerar os binrios nativos de cada plataforma com o Apache Cordova;
Utilizando o comando sencha app build run native o Sencha CMD compila
a aplicao, gera os pacotes nativos de acordo com as configuraes e abre o
aplicativo em algum dispositivo conectado em modo de desenvolvimento ou em
algum simulador local disponvel.

Mesmo aplicativo sendo simulado no iOS e Android.

Segundo a pgina de clientes da Sencha, eles possuem um grande nmero


de clientes corporativos, segundo eles mais de 10 mil, incluindo 60% da lista Fortune
100, que lista as 100 melhores empresas para se trabalhar, compilada pela revista
Fortune. Em meio a tantos clientes, no difcil listar cases de sucesso do Sencha
Touch, mas uma pequena compilao de aplicativos inclui:
United Heritage Insurance (Aplicativo de uma grande empresa de seguros)
Open Banking (Aplicativo bancrio)
Smile Brands (Aplicativo para tablets, voltado para a rea odontolgica)

45

Ford Showroon (Aplicativo da Ford para tablets)


Getorapher (Aplicativo de fotografia)
O Sencha Touch possui algumas desvantagens que podem no ser atraentes
para alguns desenvolvedores, por exemplo: embora seja gratuito, todo o
ecossistema do Sencha, incluindo o suporte, pago e no possuem um valor
considerado negligencivel. O framework grande e complexo e pode levar algum
tempo para aprender, alm de ter uma performance limitada em plataformas que
no suportam Webkit.
O Sencha Touch robusto, maduro e amplamente consolidado, o tornando
uma tima opo para desenvolver aplicativos mobile hbridos. A melhor opo para
uma startup seria seguir o caminho gratuito que o Sencha Touch oferece, assim o
custo bastante reduzido e os resultados so bem impressionantes. Embora possa
levar algum tempo para dominar o framework, depois que se pega o jeito, se torna
simples, criar um aplicativo relativamente complexo em pouco tempo.

3.5 NATIVESCRIPT
NativeScript a ferramenta mais nova das opes aqui citadas, sua primeira
verso foi lanada em maio de 2015 e causou bastante alarde na comunidade de
desenvolvedores web por causa da maneira que aborda o desenvolvimento mobile
multi-plataforma. Diferentemente das outras opes de ferramentas abordadas at
agora, que resultavam em interfaces de usurio hibridas por meio de WebViews, o
NativeScript permite a criao de aplicativos mobile multi-plataforma com interfaces
de usurio realmente nativas e 100% de compartilhamento de cdigo-fonte entre
todas as plataformas.
Uma ferramenta que faz algo similar, porm no ser abordada neste trabalho
por no utilizar tecnologias web no seu processo de desenvolvimento o popular
Xamarin, que utiliza o framework .NET da Microsoft e a linguagem C# como base de
seus projetos. Como um evangelista da Telerik (criadora e mantenedora do
NativeScript) explicou, para a concepo do NativeScript focou-se fortemente no

46

conjunto de habilidades de um desenvolvedor web. O objetivo que qualquer um


que

esteja

confortvel

hoje

escrevendo

HTML/CSS/Javascript

se

sinta

instantaneamente vontade criando aplicativos mobile nativos usando NativeScript


(ANGLIN, TODD, 2015).
Embora o NativeScript tambm oferea wrappers ou abstraes de APIs
nativas do dispositivos, diferentemente das outras opes, ele no necessita de
atualizao para tirar vantagem de novas capacidades caso uma nova API nativa
seja lanada ou uma API j existente seja modificada. Isso possvel porque o
NativeScript o nico que utiliza reflexo em tempo de compilao para tornar
qualquer API nativa ou biblioteca de terceiros disponvel para o proxy Javascript, ou
seja, via Javascript possvel executar comandos com a exata interface da API
nativa e efetivamente chamar aquela funcionalidade equivalente em tempo de
execuo. Mas as abstraes oferecidas pelo NativeScript so o meio recomendado
de acessar estas APIs nativas, pois expem uma interface nica, simples e multiplataforma. O NativeScript suporta as plataformas Android, iOS e Windows Phone.

47

Representao do mesmo cdigo sendo compartilhado em vrias plataformas com o NativeScript.


(Fonte: http://www.telerik.com/nativescript)

Para padronizar a criao de UIs (interfaces de usurio) entre todas as


plataformas que o NativeScript suporta, utilizada uma estrutura XML para definir os
layouts e seus componentes. Essas estruturas XML so separadas em pginas,
cada pgina representa uma tela do aplicativo, e so estilizadas utilizando CSS
(nem todas as regras so suportadas, somente um subconjunto delas). Para cada
pgina XML necessrio um arquivo escrito em Javascript ou TypeScript (um
verificador esttico de tipos que compila para Javascript) com o mesmo nome da
pgina, que contm os comportamentos ligados UI.
O NativeScript possui duas maneiras de iniciar um projeto de aplicativo
mobile, uma utilizando sua plataforma integrada de desenvolvimento chamada de
AppBuilder, porm esta plataforma no gratuita. A outra forma utilizando sua
ferramenta de interface de linhas de comando (CLI), que gratuita e open-source, e
suporta Windows, Linux e OS X. Utilizando o AppBuilder se torna possvel compilar
aplicativos para qualquer plataforma suportada sem nenhuma dependncia, por

48

meio do servio de compilao em nuvem da Telerik. Utilizar o NativeScript CLI a


opo de menor custo, porem possui as mesmas dependncias que desenvolver
aplicativos nativos, j que sero compiladas no computador do desenvolvedor, por
exemplo: para desenvolver aplicativos para Android so necessrios todas as
dependncias que o ambiente de build do Android possui, incluindo o JDK (Java
Development Kit), Apache Ant (Ferramenta de build utilizada pelo Android) e o
Android SDK. Alm disso necessrio a instalao do NodeJS, pois o CLI escrito
em Javascript.
Aps todas as dependncias serem supridas e o NativeScript CLI estiver
instalado,

iniciar

um

projeto

bem

simples:

comando

tns

create

$NOME_DO_APP cria um projeto base no diretrio $NOME_DO_APP. O comando


tns platform add $ID_PLATAFORMA, sendo $ID_PLATAFORMA uma das trs
plataformas disponveis (ios, android ou windows). Finalmente o comando tns
run $ID_PLATAFORMA instala e executa o aplicativo em algum dispositivo
conectado em modo de desenvolvimento conectado ao computador ou adicionando
o parmetro --emulator o aplicativo executado no simulador disponvel da
plataforma escolhida.

Projeto base do NativeScript

A arquitetura de arquivos de um projeto NativeScript bem simples e direto


ao ponto:

49

app/: Diretrio que o espao de desenvolvimento do aplicativo;


o app.css: Arquivo principal de estilos do aplicativo;
o app.js: Arquivo Javascript que serve como ponto de entrada principal
do aplicativo;
o bootstrap.js: Arquivo de inicializao de configuraes de ambiente do
aplicativo;
o main-page.js: Controladora da pgina inicial do aplicativo;
o main-page.xml: Pgina principal do aplicativo;
o App_Resources/: Diretrio que contm arquivos de recursos para
cada plataforma, como cones, imagens, splash-screens e etc..
o tns_modules/: Diretrio que contm todos os mdulos Javascript de
abstrao das APIs nativas que o framework oferece;
platforms/: Diretorio que contm os projetos nativos de cada plataforma
adicionada ao projeto;

Mesmo aplicativo de exemplo do NativeScript rodando nos simuladores de iOS e android.

Como o NativeScript uma ferramenta muito nova, at o desenvolvimento


deste trabalho no h nenhum grande case de aplicativo mobile desenvolvido com

50

ele, porm s uma questo de tempo, j que a abordagem criada pela Telerik
atraiu os olhos de muitos desenvolvedores e empresas, que j adotaram o
NativeScript como ferramenta de desenvolvimento para aplicativos mobile multiplataforma, tornando o futuro do NativeScript bem promissor.
Como todas as opes abordadas aqui, o NativeScript tambm possui suas
fraquezas, por exemplo, por utilizar componentes visuais nativos (e no interfaces
de usurio web como seus concorrentes) ele necessita de compilao sempre que
uma alterao feita no cdigo e o desenvolvedor queira ver o impacto dela no
aplicativo rodando do dispositivo ou simulador. Por ser muito nova, falta recursos de
informao na web sobre possveis problemas que os desenvolvedores possam
encontrar durante o ciclo de desenvolvimento. Sua abordagem de criar uma
estrutura XML para criao de UIs adiciona uma camada de complexidade que exige
que o desenvolvedor aprenda como ela funciona, e esse conhecimento no pode ser
reaproveitado fora do escopo do NativeScript.
O fato dos componentes da interface de usurio de aplicativos desenvolvidos
com NativeScript serem totalmente nativos tambm o torna a opo mais
performtica quando comparada com as outras ferramentas abordadas aqui, logo se
a performance uma preocupao na hora de fazer a escolha entre elas, a resposta
se torna meio bvia. Alm disso o NativeScript open-source, tem uma
documentao simples e slida, prov grande compartilhamento de cdigo entre as
plataformas alvo, o que o torna uma tima opo para desenvolver aplicativos
nativos em mltiplas plataformas em pouco tempo e com baixo custo.

3.6 REACT NATIVE


Embora sua verso publica tenha sido lanada dois meses antes do
NativeScript, os engenheiros do Facebook afirmam estarem usando o React Native
em seus aplicativos mobile h mais de dois anos. Em maro de 2015 o Facebook
tornou o React Native open-source e a partir da as coisas foram acontecendo
extremamente rpido. Vrios artigos dos integrantes mais populares da comunidade

51

de desenvolvedores web foram publicados, e rapidamente uma grande massa de


curiosos interessados a trabalhar com a prxima grande ferramenta para
desenvolvimento de aplicativos mobile nativos se aglomeraram, uma nova
comunidade se formou, e ainda est em rpido e continuo crescimento.
Parte da popularidade repentina do React Native se deve ao fato de ter sido
desenvolvido pelo Facebook, que contribui consistentemente com a comunidade de
desenvolvedores web e mobile. Outra parte desse rpido ganho de adeptos
oriundo do fato dessa ferramenta utilizar um dos mais populares frameworks de
interfaces de usurio web hoje, o React, tambm criado pelo Facebook. O React
um framework Javascript para criao de aplicaes web com interfaces de usurio
dinmicas. O React antes de ter sido tornado open-source, tambm j era utilizado
nos produtos do facebook h bastante tempo, e hoje utilizado em larga escala em
projetos de pequeno, mdio e grande porte fora do Facebook, por vrias empresas,
startups e desenvolvedores autnomos.
O que diferencia React de outros frameworks de UI para aplicaes web
que ele introduz um conjunto de abordagens muito diferentes dos frameworks
Javascript concorrentes, como AngularJS ou EmberJS. Por exemplo, a sua API de
construo de interfaces declarativa ao invs de imperativa, significa que ao invs
de chamar mtodos para renderizar dados de algum modelo em um componente,
voc simplesmente declara por meio de tags JSX (baseado em XML, mas
transformado em Javascript puro).

52

Exemplo de cdigo declarativo do React Native, repare como o XML se mistura com o Javascript.
(Fonte: https://facebook.github.io/react-native/)

O React Native foge do padro das outras ferramentas abordadas aqui, no


sentido de que o objetivo dele no compartilhar o cdigo-fonte entre todas as
plataformas alvo, e sim compartilhar o conhecimento assimilado nele em todas as
plataformas alvo. No artigo de anuncio do lanamento do React Native, o engenheiro
do facebook Tom Occhino explica o porqu da escolha desta abordagem:
... importante salientar que ns no estamos perseguindo o
objetivo de tornar o React Native mais um framework escreva uma
vez, rode em qualquer lugar. Plataformas diferentes possuem
visuais, experincias e capacidades diferentes, logo, devemos
desenvolver aplicativos diferentes para cada plataforma, mas os
mesmos engenheiros devem ser capazes de desenvolver aplicativos
em qualquer plataforma que escolherem sem a necessidade de
aprender um novo conjunto de tecnologias fundamentalmente
diferentes para cada uma delas. Ns chamamos esta abordagem de
aprenda uma vez, escreva em qualquer lugar...
(OCCHINO, TOM, 2015)

53

React Native possui um conjunto de caractersticas que realmente empolgam


qualquer desenvolvedor, seja ele oriundo do desenvolvimento web ou j experiente
no mundo mobile. Todos os componentes so totalmente nativos. Toda
comunicao do cdigo Javascript do aplicativo com a plataforma nativa feita de
forma assncrona, ou seja, qualquer interpretao pesada como decodificao de
imagens ou escrita/leitura de arquivos so feitas em uma thread diferente, o que no
bloqueia a interface de usurio. Possui um sistema avanado de reconhecimento de
toques que possibilitam o reconhecimento de toques e gestos de maneira simples e
precisa. A estilizao dos componente totalmente baseada em CSS, escrita por
meio de simples objetos Javascript, facilita a criao de layouts com o modelo de
Flexbox do CSS. Oferece abstraes de APIs nativas como conexo HTTP ou
gelocalizao por meio de interfaces Javascript descritas pelos padres W3C. As
mensagens de erros so as mais descritivas j vista em qualquer framework web ou
mobile, o que ajuda bastante ao encontrar e eliminar um erro. Permite fcil criao
de componentes nativos que o React Native no trs por padro por meio da
ferramenta de exportao oferecida pelo framework. Por ultimo e no menos
importante, no necessrio compilar o aplicativo sempre que uma mudana feita
no cdigo, necessrio somente que uma atualizao seja feita por uma tecla de
atalho no simulador e pronto, a mudana j ser exibida.
At o desenvolvimento deste trabalho o React Native s suporta o iOS, mas
embora no tenha sido divulgada nenhuma data, os engenheiros por trs do React
Native garantem que em breve ser adicionado o suporte ao Android e em seguida
Windows Phone. Para iniciar um projeto com o framework necessrio atender
alguns requisitos:
Sistema Operacional OS X;
XCode (IDE do iOS nativo);
NodeJS (para instalar e utilizar a ferramenta de CLI);
Watchman (para reload continuo do aplicativo sem necessidade de
recompilao);
react-native-cli (Ferramenta de interface de linha de comando para dar
suporte na criao e durante o desenvolvimento do projeto);

54

Depois de todas as dependncias supridas para iniciar um novo projeto com o


projeto base do React Native necessrio executar o comando react-native init
$NOME_DO_PROJETO

ser

criado

um

diretrio

com

nome

$NOME_DO_PROJETO que contem o ambiente de desenvolvimento base do React


Native. Para rodar o projeto, necessrio abri-lo no XCode e compilar o aplicativo
por l, do mesmo jeito que com um projeto iOS comum.

Projeto base do React Native

A estrutura de arquivos de um projeto do React Nativo extremamente


flexvel para o desenvolvedor separar os arquivos da forma que ele desejar, porem
h uma estrutura bsica:
iOS/: Diretrio que contem as bibliotecas e recursos nativos do projeto de
iOS;
$NOME_DO_PROJETO.xcodeproj/: Diretrio que contm o projeto nativo de
iOS;
$NOME_DO_PROJETOTests/: Diretrio que contm os teste da aplicao;

55

node_modules/: Diretrio que contm as dependncias Javascript, incluindo,


mas no se limitando ao React Native;
index.ios.js: Arquivo de ponto de entrada principal do aplicativo;
package.json: Arquivo que contm configuraes de dependncias do
projeto;

Projeto base rodando no simulador iOS

O React Native ainda tem um longo caminho pela frente, e discutvel se est
pronto para ser utilizado em produo. Existe uma longa lista de problemas que
podem desencorajar quem procura algo mais maduro e robusto para desenvolver
seus aplicativos, alm do fato dele s suportar o iOS por enquanto, no
necessariamente diminui os custos de um projeto o bastante para escolhe-lo ao
invs de usar a tecnologia nativa diretamente. Porm o Facebook utiliza-o em vrios
de seus produtos h muito tempo e garantem ter tido muito sucesso desenvolvendo
com React Native at agora. A lista de aplicativos do Facebook que utilizam o React
Native inclui o prprio aplicativo do Facebook para iOS, o aplicativo de Facebook
Groups para iOS e o aplicativo Facebook Ads para iOS.

56

Documentao incompleta, alguns bugs em tempo de execuo, baixo


numero de recursos de informao online, sem suporte para outras plataformas e
alguns outros problemas o tornam um risco para quem presa por algo mais
consolidado, mas uma tima opo para quem gosta de estar sempre frente com
as tecnologias mobile, j que apesar o longo caminho que precisa percorrer, o React
Native tem potencial para ser a prxima grande ferramenta para desenvolvimento de
aplicativos mobile nativos multi-plataforma. E no estado atual, j possvel criar um
aplicativo nativo iOS em pouco tempo. Se isso for o bastante para a deciso de
escolha da startup ou desenvolvedor autnomo procura de opes de frameworks
para desenvolver seu prximo aplicativo, ento React Native pode ser uma boa
opo.

57

4 CONCLUSO
Cada vez mais rpido os dispositivos mobile vem ganhando espao no dia a
dia das pessoas. O que durante algum tempo foi pensado como a segunda tela,
hoje a primeira, ultrapassando o computador pessoal e a televiso. Hoje, 50% da
populao mundial possuem smartphones, e h estimativas quem at 2020 esse
numero subir para 80%, o que torna muito claro que a, j altssima demanda,
continuar crescendo rapidamente.
E junto com a demanda de dispositivos mobile, a demanda de aplicativos para
esses dispositivos tambm continuar em constante crescimento, e para
acompanhar este rpido crescimento necessrio uma abordagem otimizada que
tenha ambos baixo custo e rapidez no desenvolvimento do produto.
sabido que muitas vezes grandes ideias, ideias que vo suprir a alta
demanda de usurio, ideias que vo solucionar problemas do cotidiano das pessoas,
ideias que podem mudar o modo como vivemos, essas ideias podem surgir de
pessoas que no possuem muitos recursos para coloc-las em prtica. E hoje
comum essas pessoas receberem esses valiosos recursos de investidores que
acreditam em sua ideia. E assim nascem as chamadas startups, o tempo todo, em
qualquer lugar do mundo. Porm os recursos disponibilizados para validar aquela
ideia sempre vo ser muito limitados no incio, e necessitam que sejam gastos com
bastante eficincia ou ento esta grande ideia pode nunca se concretizar.
Foi sugerido aqui que o modo mais eficiente de validar uma ideia de um
aplicativo mobile utilizando a abordagem multi-plataforma que reaproveita
conhecimentos, cdigo-fonte e ferramentas da web para ser aplicada. Deste modo,
possvel economizar valiosos recursos durante o desenvolvimento do aplicativo e
ainda chegar uma verso totalmente funcional que valide esta ideia em
pouqussimo tempo, utilizando os conceitos de Lean Startup.
Foram apresentadas vrias ferramentas que implementam esta abordagem,
todas elas com suas diferentes formas de abordar o problema. Foram apontadas
suas vantagens, desvantagens e seus inmeros casos de sucesso. As informaes

58

compiladas neste trabalho deixam claro que as ferramentas web j invadiram o


mundo de desenvolvimento de aplicativos mobile h muito tempo e isso est
fazendo muito bem, tanto para os desenvolvedores que podem reaproveitar suas
habilidades desenvolvendo experincias verdadeiramente mobile, quanto para os
usurios, que so bombardeados com vrias opes de aplicativos novos todos os
dias e muitas das vezes nem percebem a diferena de um aplicativo criado com a
abordagem multi-plataforma/hibrida de aplicativos criados com seus SDKs nativos.
Esta abordagem est ganhando cada vez mais adeptos devido as suas
vantagens e todo esse interesse faz com que novas ferramentas sejam criadas o
tempo todo. Logo haver tantas opes para desenvolver aplicativos mobile com
tecnologias web que ser necessrio um minucioso estudo de cada uma delas para
saber qual ferramenta se adequa melhor ao aplicativo que ser criado.
Este trabalho listou e apresentou informaes tcnicas sobre as mais
consolidadas ferramentas de desenvolvimento mobile multi-plataforma atualmente,
que utilizam ferramentas web. Ferramentas que so mantidas por empresas grandes
e maduras, o que s tornam as melhores opes a longo prazo.
O presente e o futuro mobile, e dentro do mundo de desenvolvimento
mobile, o futuro a eficincia e sustentabilidade. O futuro a abordagem multiplataforma utilizando tecnologias web.

59

REFERNCIAS

PAKA, A. The Rise of Micro Startup Acquisitions. TechCrunch, 2015:


http://techcrunch.com/2015/04/15/rise-of-micro-startup-acquisitions/

GITAHY, Y. O que significa fazer pivot de uma startup. Exame, 2011:


http://exame.abril.com.br/pme/noticias/o-que-significa-fazer-o-pivot-de-umastartup

GRIFFITH, E. Why startups fail, according to their founders. Fortune, 2014:


http://fortune.com/2014/09/25/why-startups-fail-according-to-their-founders/

THE LEAN STARTUP. The Lean Startup Methodology. The lean startup,
2011: http://theleanstartup.com/principles

ABROZIMOVA, K. Native VS Cross-Platform. Yalantis, 2013:


https://yalantis.com/blog/native-vs-cross-platform-app-development-shouldntwork-cross-platform/

GOLDENBERG, A. Pros and Cons of Developing Native vs. Cross-Platform


Web-Based Mobile Aplication. DBBest, 2013:
http://www.dbbest.com/blog/pros-and-cons-of-developing-native-vs-crossplatform-web-based-mobile-application/

HOCKING, J. Native vs. Hibrid: developing cross-platform mobile apps. The


App Business, 2014: http://www.theappbusiness.com/native-vs-hybriddeveloping-cross-platform-mobile-apps/

SITANSHU, J. Native vs Cross Platform for Application Development.


Sitanshu J, 2015: http://blog.zymr.com/native-vs-cross-platform-forapplication-development

HEIKOTTER, H. HANSCHKE, S. MAJCHRZAK, T. Comparing Cross-Platform


Development Approaches for Mobile Applications. Muenster University,
2012: https://www.wi.unimuenster.de/sites/default/files/public/department/pi/publications/heitkoetter/Co
mparing-Cross-Platform-Development-Approaches-for-Mobile-Applications.pdf

MADAUDO, R. Native versus Cross-Platform frameworks for mobile


application evelopment. Universit degli Studi de Bergamo, 2013:
http://2013.eclipse-it.org/proceedings/6_Madaudo-Scandurra.pdf

60

MICHAELS. ROSS. COLE. Native mobile apps: The wrong choice for
business?. MRC Productivity, 2013: http://www.mrcproductivity.com/research/whitepapers/NativeAppsWrongChoice.pdf

KOERBEL, A. Qual a equipe necessria e quanto custa um app?. Esauce,


2014: http://www.esauce.com.br/qual-equipe-necessaria-e-quanto-custa-criarum-app/

APACHE CORDOVA. Apache Cordova docs. Apache Cordova:


http://cordova.apache.org/docs/en/5.0.0/guide_cli_index.md.html

ANDREW. Who uses Phonegap/Cordova? Trice Designs, 2012:


http://www.tricedesigns.com/2012/03/27/who-uses-phonegapapache-cordova/

PHONEGAP. Apps built with Phonegap. Adobe:


http://phonegap.com/app/feature/

ADAM, J. Why Titanium App Development is a smart move for startups who
need apps. Tech.co, 2014: http://tech.co/titanum-app-development-get-topnotch-cross-platform-applications-2014-03

TITANIUM DOCS. Appcelerator CLI docs. Appcelerator:


https://web.appcelerator.com/product/cli

APPCELERATOR. Apps Showcase. Appcelerator:


http://www.appcelerator.com/customers/app-showcase/

INTEL XDK. Intel XDK details. Intel, 2014: https://software.intel.com/ptbr/intel-xdk/details

INTEL. Developer success stories. Intel: https://software.intel.com/ptbr/success-stories

DAWNSON, R. Getting Started with Intel XDK. Tutsplus, 2014:


http://code.tutsplus.com/articles/getting-started-with-intel-xdk--cms-22205

KOKO, A. A new cross-platform option, introducing Intel XDK. Sitepoint,


2014: http://www.sitepoint.com/introduction-intel-xdk/

SENCHA TOUCH. Sencha Touch Overview. Sencha:


http://www.sencha.com/products/touch/#overview

GRISOGONO, G. 5 Best Mobile Web App Frameworks: Sencha Touch.


Modus Create, 2014: http://moduscreate.com/5-best-mobile-web-appframeworks-sencha-touch/

61

RUDOLPHI, T. Using Sencha Touch as a Strategic Platform An Evaluation.


Zhlke Blog, 2013: http://blog.zuehlke.com/en/using-sencha-touch-as-astrategic-platform-an-evaluation/

STOYCHEV, V. NativeScript 1.0.0 is now available. NativeScript Blog, 2015:


https://www.nativescript.org/blog/nativescript-1.0.0-is-now-available

VANTOLL, TJ. How NativeScript Works. Telerik Developer Blog, 2015:


http://developer.telerik.com/featured/nativescript-works/

WITALEC, S. Getting Started with NativeScript. Telerik Developer Blog,


2015: http://developer.telerik.com/featured/getting-started-nativescript/

TODD. The difference beetween Xamarin e Telerik`s NativeScript.


StackOverflow, 2015:
http://stackoverflow.com/questions/28829316/difference-between-xamarinand-teleriks-native-script

NATIVESCRIPT. NativeScript Docs. Telerik, 2015:


https://docs.nativescript.org/

OCCHINO, T. React Native: Bringing modern web techniques to mobile.


Facebook Code, 2015:
https://code.facebook.com/posts/1014532261909640/react-native-bringingmodern-web-techniques-to-mobile/

LONG, J. First impressions using React Native. James Long, 2015:


http://jlongster.com/First-Impressions-using-React-Native

EBERHARDT, C. React Native Tutorial: Building Apps With Javascript. Ray


Wenderlich Blog, 2015: http://www.raywenderlich.com/99473/introducingreact-native-building-apps-javascript

MCCORKELL, R. React Native The Killer Feature that Nobody Talks About.
Red Badger, 2015: http://red-badger.com/blog/2015/03/04/react-native-thekiller-feature-that-nobody-talks-about/

Potrebbero piacerti anche