SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
UNIVERSIDADE FEDERAL DO CEARÁ
INSTITUTO UFC VIRTUAL
CURSO DE SISTEMAS E MÍDIAS DIGITAIS
ÉDIPO DA SILVA SOUZA
UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO
MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS
FORTALEZA
2014
ÉDIPO DA SILVA SOUZA
UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO
MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS
Monografia apresentada ao Curso de Sistemas e
Mídias Digitais do Instituto UFC Virtual da
Universidade Federal do Ceará, como requisito
parcial para obtenção do Título de Bacharel em
Sistemas e Mídias Digitais.
Orientador: Prof. Dr. Windson Viana de Carvalho
FORTALEZA
2014
ÉDIPO DA SILVA SOUZA
UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO
MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS
Monografia apresentada ao Curso de Sistemas e
Mídias Digitais do Instituto UFC Virtual da
Universidade Federal do Ceará, como requisito
parcial para obtenção do Título de Bacharel em
Sistemas e Mídias Digitais.
Aprovado em:
__ / __ / ____
BANCA EXAMINADORA
_________________________________
Prof. Dr. Windson Viana de Carvalho (Orientador)
Universidade Federal do Ceará (UFC)
_________________________________
Prof. Msc. Marcio Espíndola Freire Maia
Universidade Federal do Ceará (UFC)
_________________________________
Prof. Msc. Edgar Marçal de Barros Filho
Universidade Federal do Ceará (UFC)
RESUMO
Frameworks de desenvolvimento multiplataforma (do inglês, multi-platform ou cross-
platform) para dispositivos móveis são ferramentas que permitem aos desenvolvedores
criarem um mesmo aplicativo para diferentes sistemas operacionais móveis de uma forma
simplificada e com alto reuso. Através da utilização de apenas uma única linguagem de
programação ou de um mesmo código fonte no desenvolvimento de um aplicativo móvel é
possível conceber uma aplicação pronta para ser utilizada em diversas plataformas móveis
(e.g., Android, iOS, Windows Phone) sem a reescrita excessiva de código. Uma diversidade
de frameworks comerciais e acadêmicos tem sido proposta com esse objetivo, dos quais,
Titanium, Sencha Touch e PhoneGap são exemplos notórios. Cada um deles possui
características que os tornam únicos, seja no seu modo de desenvolvimento, na sua
abordagem de execução, na disponibilidade de recursos, bem como, na qualidade do resultado
do aplicativo final. O objetivo principal dessa pesquisa foi realizar uma comparação desses
frameworks através do desenvolvimento de uma aplicação multimídia nos três frameworks
citados. Para analisar a utilização e o desempenho de cada um deles, foi estabelecido um
conjunto de medidas de software e após coletar e comparar os dados resultantes, concluiu-se
que para o tipo de aplicação alvo do estudo (que usa recursos multimídia, sensores e acesso a
Internet) a ferramenta Titanium é, hoje, a mais eficiente no tocante à curva de aprendizado, à
riqueza da documentação e ao desempenho das aplicações geradas para as plataformas
Android e iOS.
Palavras-chave: Aplicação móvel. Framework multiplataforma. Titanium. PhoneGap.
Sencha Touch, Android, iOS, Windows Phone.
ABSTRACT
Crossplatform development frameworks for mobile applications are tools that allow
developers to create the same application for different mobile operating systems in a
simplified way and improving the reuse. By using only a single programming language, or a
same source code in the development of a mobile application, it’s possible to generate an
application ready to be used on diverse mobile application platforms (e.g., Android, iOS,
Windows Phone) without excessive code duplication. A variety of commercial and academic
frameworks have been proposed with that goal. Titanium, Sencha Touch and PhoneGap are
notorious examples. Each one has features that make it unique, such its development process,
its codification methods, availability of resources, and the quality of the final result. The main
objective of this research is to compare these frameworks by developing a multimedia
application in each of the three frameworks. In order to analyze the utilization and
performance of each framework, it was established a set of software measures and after
collecting and comparing the resulting data, it was concluded that for that application type
(which uses multimedia resources, sensors and access to Internet) Titanium tool, today, is the
most efficient with regard to the learning curve, the wealth of documentation and performance
of applications generated for Android and iOS platforms.
Keywords : Mobile application. Multiplatform framework. Titanium. PhoneGap. Sencha
Touch, Android, iOS, Windows Phone.
LISTA DE FIGURAS
Figura 1 - IDC Worldwide Quarterly Mobile Phone Tracker, May 2013. Fonte: (IDC, 2013).................. 2
Figura 2 - Evolução dos Smartphones. (adaptada) Fonte: (VIANA, 2010)............................................. 5
Figura 3 - Camadas de um ambiente com um MOS. Fonte: (KUCHE, 2012) ........................................ 6
Figura 4 - LG Nexus 4 com Android 4.4 KitKat. Fonte: (GOOGLE, 2013) .............................................. 7
Figura 5 - Arquitetura do Sistema Android. Fonte: (GOOGLE, 2013).................................................... 7
Figura 6 - BlackBerry Z10 com BlackBerry 10 OS. Fonte: (BLACKBERRY, 2013)..................................... 8
Figura 7 - BlackBerry OS Architecture. Fonte: (OGLIARI, 2011)............................................................ 8
Figura 8 - iPhone 5s com iOS 7.1. Fonte: (APPLE, 2013) ...................................................................... 9
Figura 9 - iOS Arquitetura. Fonte: (APPLE, 2013)................................................................................. 9
Figura 10 - HTC 8XT com Windows Phone 8. Fonte: (HTC, 2014)........................................................10
Figura 11 - Arquitetura do Sistema Windows Phone 8. Fonte: (MICROSOFT, 2013)............................10
Figura 12 - Pros e Contras das 3 estratégias de desenvolvimento. Fonte: (NOKIA, 2013) ...................11
Figura 13 - Frameworks de Desenvolvimento Multiplataforma .........................................................15
Figura 14 - PhoneGap helloworld exemplo (index.html)....................................................................15
Figura 15 - Titanium helloworld exemplo (app.js)..............................................................................16
Figura 16 - Sencha Touch 2 helloworld exemplo (Main.js) .................................................................17
Figura 17 - Temas oferecidos pelo Sencha Touch 2............................................................................18
Figura 18 - Aplicações Android, respectivamente PhoneGap, Sencha Touch e Titanium ....................23
Figura 19 - Aplicações iOS, respectivamente PhoneGap, Sencha Touch e Titanium............................24
Figura 20 - Consumo de memória no Android ...................................................................................24
Figura 21 - Consumo de memória no iOS...........................................................................................25
Figura 22 - Tempo de carregamento no Android ...............................................................................25
Figura 23 - Tempo de carregamento no iOS.......................................................................................25
Figura 24 - PhoneGap código fonte, arquivo index.html ....................................................................28
Figura 25 - PhoneGap código fonte, arquivo index.js parte 1.............................................................28
Figura 26 - PhoneGap código fonte, arquivo index.js parte 2.............................................................29
Figura 27 - Sencha Touch código fonte, arquivo Main.js da pasta View..............................................30
Figura 28 - Sencha Touch código fonte, arquivo Main.js da pasta Controller parte 1..........................31
Figura 29 - Sencha Touch código fonte, arquivo Main.js da pasta Controller parte 2..........................32
Figura 30 - Titanium código fonte, arquivo index.xml ........................................................................33
Figura 31 - Titanium código fonte, arquivo index.tss .........................................................................33
Figura 32 - Titanium código fonte, arquivo index.js parte 1 ...............................................................33
Figura 33 - Titanium código fonte, arquivo index.js parte 2 ...............................................................34
LISTA DE TABELAS
Tabela 1 - Medidas de software ........................................................................................................20
Tabela 2 - Comparativo de características dos frameworks ...............................................................22
Tabela 3 - Comparativo a partir do desenvolvimento da aplicação POC.............................................23
Tabela 4 - Comparativo segundo métricas de software pré-estabelecidas.........................................24
LISTA DE ABERVIATURAS E SIGLAS
ADT ANDROID DEVELOPMENT TOOLS
API APPLICATION PROGRAMMING INTERFACE
CLDC CONNECTED LIMITED DEVICE CONFIGURATION
CSS CASCADING STYLE SHEETS
HTML HYPERTEXT MATKUP LANGUAGE
IDC INTERNATIONAL DATA CORPORATION
JNI JAVA NATIVE INTERFACE
JSON JAVASCRIPT ORIENTED NOTATION
JVM JAVA VIRTUAL MACHINE
GPS GLOBAL POSITIONING SYSTEM
GUI GRAPHIC USER INTERFACE
LOC LINES OF CODE
MIDP MOBILE INFORMATION DEVICE PROFILE
MOS MOBILE OPERATING SYSTEM
NDK NATIVE DEVELOPMENT KIT
NFC NEAR FIELD COMUNICATION
NOF NUMBER OF FILES
OO OBJECT ORIENTATION
POC PROOF OF CONCEPT
SO OPERATION SYSTEM
RAM RANDOM ACCESS MEMORY
RIM RESEARCH IN MOTION
SDK SOFTWARE DEVELOPMENT KIT
UX USER EXPERIENCE
UI USER INTERFACE
VB VISUAL BASIC
WOAE WRITE ONCE, ADAPT EVERYWHERE
WORE WRITE ONCE, RUN EVERYWHERE
WP WINDOWS PHONE
XMT CROSS-PLATAFORM MOBILE DEVELOPMENT TOOLS
SUMÁRIO
1 INTRODUÇÃO....................................................................................................................................... 1
1.1. Motivação............................................................................................................................................ 1
1.2. Objetivo............................................................................................................................................... 3
1.3. Organização do documento .................................................................................................................. 4
2 DESENVOLVIMENTO DE APLICAÇÕES MÓVEIS............................................................................. 5
2.1. Histórico dos Dispositivos Móveis ....................................................................................................... 5
2.2. Aplicativo Móvel ................................................................................................................................. 6
2.3. Sistemas Operacionais Móveis ............................................................................................................. 6
2.3.1. Android........................................................................................................................................... 7
2.3.2. Blackberry OS ................................................................................................................................. 8
2.3.3. iOS.................................................................................................................................................. 9
2.3.4. Windows Phone..............................................................................................................................10
2.4. Estratégias de Desenvolvimento..........................................................................................................11
2.4.1. Aplicação Nativa ............................................................................................................................12
2.4.2. Aplicação Web ...............................................................................................................................12
2.4.3. Aplicação Hibrida...........................................................................................................................12
3 DESENVOLVIMENTO MULTIPLATAFORMA...................................................................................14
3.1. Frameworks de Desenvolvimento........................................................................................................14
3.1.1. PhoneGap.......................................................................................................................................15
3.1.2. Titanium.........................................................................................................................................16
3.1.3. Sencha Touch .................................................................................................................................17
4 PROPOSTA............................................................................................................................................19
4.1. Metodologia .......................................................................................................................................19
4.2. Escopo da Aplicação Prova de Conceito..............................................................................................20
4.3. Medidas de Software...........................................................................................................................20
4.4. Materiais.............................................................................................................................................21
5 RESULTADO E DISCUSSÃO ...............................................................................................................22
5.1. Comparativo das características dos frameworks abordados.................................................................22
5.2. Desenvolvimento da aplicação POC....................................................................................................23
5.3. Comparativo de desempenho...............................................................................................................24
5.4. Discussão ...........................................................................................................................................26
6 CONCLUSÃO........................................................................................................................................27
7 ANEXO A – CÓDIGO FONTE DA APLICAÇÃO POC NO PHONEGAP .............................................28
8 ANEXO B - CÓDIGO FONTE DA APLICAÇÃO POC NO SENCHA TOUCH .....................................30
9 ANEXO C - CÓDIGO FONTE DA APLICAÇÃO POC NO TITANIUM................................................33
10 REFERÊNCIAS .................................................................................................................................35
1
1 INTRODUÇÃO
1.1. Motivação
Avanços na última década nas tecnologias de comunicação sem fio e a popularização de
dispositivos móveis (celulares, smartphones, tablets) têm proporcionado novos cenários e
serviços de auxílio a várias atividades cotidianas e profissionais em diversos setores da
sociedade. Os usuários passaram a acessar aplicações móveis e serviços (e.g., redes sociais,
jogos, e-mail) mesmo enquanto se deslocam, em praticamente qualquer hora e local. Desde o
enorme sucesso do primeiro modelo do iPhone (em 2007), se tornou quase um padrão a
fabricação de aparelhos com tela sensível ao toque, multifuncionais, equipados com múltiplos
sensores (e.g., GPS, acelerômetro), recursos multimídia e interfaces mais naturais que
aperfeiçoaram a experiência do usuário no uso destas aplicações (CÂMARA, 2012).
O desenvolvimento de aplicações para esses dispositivos (ditas aplicações móveis),
entretanto, não é uma atividade trivial em grande parte devido ao ecossistema heterogêneo
destes dispositivos. As variações de configurações (tamanhos de telas, fabricantes, capacidade
de processamento, sistemas operacionais) tornam a programação, o teste e portabilidade de
aplicações custosas e onerosas, principalmente, quando o aplicativo deve rodar em mais de
um modelo de fabricante (WEINBERG, 2011).
A fragmentação das diversas plataformas móveis e seus respectivos sistemas
operacionais gerou grandes problemas para empresas desenvolvedoras de aplicativos e até
mesmo desenvolvedores independentes. Para qual plataforma desenvolver as aplicações?
Quais modelos de aparelhos serão o alvo preferencial? Ou, não seria melhor desenvolver para
mais de uma plataforma e modelo de aparelho de forma atingir um público alvo maior? Como
fazer isso com um custo de desenvolvimento reduzido?
A Figura 1 mostra uma pesquisa publicada pela International Data Corporation (IDC).
Pode-se observar que no primeiro trimestre de 2013, os principais sistemas operacionais
vendidos foram Android, iOS, Windows Phone e BlackBerry OS. No entanto, como este
último é mais voltado ao mercado corporativo, em geral as empresas focalizam o
desenvolvimento de aplicações de propósito geral apenas nas três principais plataformas.
2
Figura 1 - IDC Worldwide Quarterly Mobile Phone Tracker, May 2013. Fonte: (IDC, 2013)
Cada uma dessas plataformas possui seu próprio kit de desenvolvimento de software
(SDK), o qual permite a criação de aplicações exclusivamente destinadas a seu sistema
operacional utilizando uma linguagem de programação correspondente, isto é, Java para o
Android (GOOGLE, 2013), Objective-C para o iOS (APPLE, 2013) e C# para Windows
Phone (MICROSOFT, 2013). Cada qual com APIsi
distintas e particularidades de
desenvolvimento, as quais não permitem que seja escrito somente um único código para
diferentes plataformas, fazendo com que as empresas necessitem ter desenvolvedores
especializados para cada sistema operacional ao desenvolverem suas aplicações.
Com o intuito de facilitar e maximizar o processo de desenvolvimento de um mesmo
aplicativo para diversas plataformas surgiram diversos frameworksii
de desenvolvimento de
aplicações móveis multiplataforma. Cada framework tem suas próprias particularidades no
processo de desenvolvimento e limitações nas aplicações resultantes. Entre as ferramentas
mais utilizadas podemos destacar os seguintes frameworks: PhoneGap, Sencha Touch e
i
Conjunto de funções previamente fornecidas para comunicação com o sistema operacional
ii
SDK distinto com linguagem e metodologia de desenvolvimento que permite o desenvolvimento de aplicações para diferentes
plataformas através de um único projeto
3
Titanium (VISION MOBILE, 2012), os quais assemelham-se pelo uso da linguagem
JavaScript.
Entretanto, qual destas ferramentas seria a mais adequada para utilizarmos em nosso
projeto multimídia? E se formos desenvolver uma aplicação web? Para responder a estas
questões é necessário conhecermos a metodologia de desenvolvimento de cada um destes
frameworks, para então estarmos aptos a decidir qual ferramenta fornece as melhores
características requeridas pelo nosso projeto.
1.2. Objetivo
Este trabalho se destina a estudar esses frameworks de desenvolvimento de aplicações
móveis multiplataforma citados anteriormente fazendo um paralelo sobre a dificuldade de
desenvolvimento, tempo e esforço necessário, limitações e desempenho das aplicações
resultantes e o próprio processo de desenvolvimento. Dessa forma o objetivo principal deste
trabalho é analisar as diferenças e limitações de três frameworks de desenvolvimento
multiplataforma: Phonegap, Sencha Touch, e Titanium que estão entre os mais utilizados
pelas empresas de desenvolvimento de software em 2012 (VISION MOBILE, 2012). Durante
o desenvolvimento, o estudo foi dividido nos seis objetivos específicos abaixo:
 Fazer um comparativo das funcionalidades oferecidas por cada framework.
 Comparar os diferentes modelos de desenvolvimento utilizado pelos frameworks.
 Criar uma aplicação prova de conceito utilizando cada framework estudado.
 Estudar e selecionar medidas de desenvolvimento de software.
 Analisar, a partir das medidas escolhidas, o desempenho nas aplicações resultantes do
desenvolvimento utilizando os frameworks estudados.iii
Para atingir estes objetivos, a primeira etapa deste trabalho se inicia com uma pesquisa
bibliográfica visando explorar pesquisas existentes na área em estudo. Tendo como sequência
um estudo a respeito das metodologias de desenvolvimento adotadas nos três frameworks que
serão utilizados na etapa posterior que consiste na elaboração de uma aplicação como prova
de conceito, do inglês Proof Of Concept (POC), para analisar características tais como: UXiv
Design da plataforma, desempenho, facilidade de manutenção.
iii
Titanium, PhoneGap e Sencha Touch.
iv
User eXperience (UX): Remete a forma como o usuário interage com o sistema proporcionando uma experiência única com o mesmo.
4
Na etapa final, uma discussão é apresentada a partir das medidas de software
comparativas e dos resultados obtidos com o objetivo de mostrar qual abordagem de
desenvolvimento é mais vantajosa, em que momento, e para qual tipo de aplicação.
1.3. Organização do documento
No Capítulo 2 deste documento, é apresentada a uma breve introdução ao mundo dos
dispositivos móveis, contextualizando o leitor sobre fatos importantes que contribuíram para o
surgimento da computação móvel. Em seguida, o Capítulo 2 explana sobre o processo de
desenvolvimento de aplicações para dispositivos móveis, explicando os conceitos de
Aplicativo Móvel, Sistemas Operacionais Móveis, bem como estratégias de desenvolvimento.
O Capítulo 3 apresenta um resumo dos três frameworks estudados nesse trabalho. O
Capítulo 4 apresenta a proposta deste trabalho, a metodologia seguida, descrição da aplicação
prova de conceito desenvolvida e as medidas utilizadas para estabelecer um comparativo entre
as ferramentas utilizadas durante seu desenvolvimento. O Capítulo 5 é apresenta um quadro
comparativo com os resultados obtidos a partir das medidas estabelecidas e a conclusão deste
trabalho, onde o autor expõe sua visão a respeito da utilização das ferramentas durante o
desenvolvimento da aplicação prova de conceito.
5
2 DESENVOLVIMENTO DE APLICAÇÕES MÓVEIS
2.1. Histórico dos Dispositivos Móveis
Lançado em 1997, o Symbian OS foi um dos primeiro sistema operacional móvel de
grande utilização mundial, amplamente utilizado pela finlandesa Nokia em seus celulares. Em
1999, a canadense RIM (Research In Motion), hoje BlackBerry, lançou a primeira versão de
seu sistema operacional móvel de mesmo nome, o Blackberry OS, o qual juntamente com seu
hardware proprietário característico por utilizar-se de um teclado físico qwert, destina-se mais
ao mercado corporativo (BLACKBERRY, 2013).
A Microsoft, por sua vez, em 2000 lança o Windows Mobile, sua plataforma móvel, a
qual 10 anos mais tarde viria a ser sucedido por seu novo sistema operacional Windows
Phone. Em 2003, a Android Inc. inicia o desenvolvimento do Android, sistema operacional
adquirido pela Google em 2005 e que mais tarde viria a se tornar o mais popular entre os
sistemas operacionais móveis. Em 2007, a Apple lança a primeira versão do iOS, sistema
operacional do até então mais cobiçado smartphone do mercado, o iPhone.
Nos dias atuais, devido a ser uma plataforma aberta, de fácil utilização e customização,
o Android tem sido adotado por uma grande quantidade de fabricantes de smartphones, o que
culminou para hoje ser a plataforma com maior participação no mercado. (IDC, 2013)
Figura 2 - Evolução dos Smartphones. (adaptada) Fonte: (VIANA, 2010)
6
2.2. Aplicativo Móvel
Um aplicativo móvel é um software destinado a ser executado em um dispositivo
móvel, como em um smartphone, e é obtido normalmente através das lojas de aplicativos
existentes em cada plataforma. Este padrão de desenvolvimento e distribuição se deu com o
lançamento do iPhone SDK em março de 2008 e início da App Store junto ao lançamento do
iPhone 3G em julho de 2008 como resposta a quantidade de jailbreak existente, até então
única forma de instalar aplicações de terceiros. (9TO5MAC STAFF, 2011)
2.3. Sistemas Operacionais Móveis
Ao se utilizar smartphones, temos um sistema operacional móvel muito similar aos
sistemas operacionais padrões como, por exemplo, Windows e Linux, No entanto este é bem
mais simples, leve e responsável por identificar e definir as características e funções do
dispositivo, tais como: teclado, e-mail, mensagem de texto, acesso a câmera, dentre outros
priorizando o gerenciamento das redes sem fio e os métodos de entrada. (JANSSEN, 2010)
A Figura 3 ilustra as camadas existentes em um ambiente de interação com um Mobile
Operation System (MOS), isto é, um sistema operacional móvel. No nível mais alto temos o
usuário, o qual não detém de nenhum conhecimento sobre o hardware ao qual está
manipulando, sendo então auxiliado pela aplicação na utilização do aparelho. A aplicação por
sua vez, não detém de total compreensão do funcionamento do hardware, uma vez que isto
forçaria a termos o mesmo código de acesso a ele em todas as aplicações, bem como os
desenvolvedores das aplicações necessitariam conhece-lo. Logo, para evitar este cenário, cabe
ao Sistema Operacional a responsabilidade de fornecer uma abstração que facilite o acesso ao
hardware pelas aplicações, que somente necessitarão conhecer a API fornecida para este fim.
Figura 3 - Camadas de um ambiente com um MOS. Fonte: (KUCHE, 2012)
7
Como exemplos de MOS, temos:
2.3.1. Android
Inicialmente desenvolvido pela Android Inc., a qual foi comprada pela Google em
2005, é um sistema baseado no kernel do Linux idealizado e destinado principalmente a
dispositivos móveis com tela sensível ao toque. O primeiro dispositivo a utilizar o sistema da
Google foi o HTC Dream, também conhecido como G1, lançamento 22 de outubro em 2008.
(WILSON, 2008)
A Figura 5 apresenta a estrutura do Android e suas camadas. Tendo seu núcleo
desenvolvido em C e C++, o Android utiliza-se de uma máquina virtual chamada Dalvik para
carregar as diversas bibliotecas de seu framework e as aplicações, tanto de sistema como de
usuário, normalmente escritas em Java. Contudo também é possível utilizar C ou C++ no
desenvolvimento de aplicações com auxilio da tecnologia Java Native Interface (JNI) e da
ferramenta Android NDK. (SHANKLAND, 2007)
Figura 4 - LG Nexus 4 com Android 4.4 KitKat. Fonte: (GOOGLE, 2013)
Figura 5 - Arquitetura do Sistema Android. Fonte: (GOOGLE, 2013)
8
Em 23 de setembro de 2008, três anos após a assumir o desenvolvimento do sistema, a
Google então lança a versão 1.0 do Android, e no mês seguinte, juntamente com a Open
Handset Alliance, um grupo com atualmente formado por 84 empresas de tecnologia e
comunicação, torna-o um projeto Open Source mantido sobre licença Apache. (CHEN, 2008)
2.3.2. Blackberry OS
Com foco em smartphones corporativos, a canadense Research In Motion (RIM),
renomeada Blackberry em janeiro de 2013, desenvolveu o Blackberry OS utilizando-se da
tecnologia Java Virtual Machine (JVM). (HALLIWELL, 2013)
O primeiro smartphone lançado com o SO da RIM foi o Blackberry 5810 lançado em
março de 2002. Em sua última versão, o BlackBerry OS 7.1, lançado em Janeiro de 2012
conta com uma série de novos recursos dentre os quais se destacam: Hotspot wifi, serviços via
NFC, chamada por wifi e radio FM. Com o lançamento do BlackBerry 10 OS, lançado em
Janeiro de 2013 BlackBerry OS foi descontinuado. (INFOTECHNOLOGY, 2014)
Figura 6 - BlackBerry Z10 com BlackBerry 10 OS. Fonte: (BLACKBERRY, 2013)
Figura 7 - BlackBerry OS Architecture. Fonte: (OGLIARI, 2011)
9
O BlackBerry OS foi projetado de forma que suas aplicações rodem em uma JVM
juntamente com as especificações Connected Limited Device Configuration (CLDC) e
Mobile Information Device Profile (MIDP), alavancando assim o desenvolvimento e
portabilidade de aplicações para a nova plataforma, uma vez que já havia um número
considerável de desenvolvedores de aplicações JavaME na época. (BLACKBERRY, 2008)
2.3.3. iOS
Desenvolvido pela Apple Inc, é um sistema derivado do OS X que equipa seus
computadores e notebooks. Anunciado em 18 de Junho de 2007, ele foi desenvolvido
originalmente para o iPhone, mas a Apple mais tarde estendeu o sistema para outros
dispositivos como o iPod Touch, iPad, iPad Mini e Apple TV. (APPLE, 2007)
Para que as aplicações desenvolvidas por terceiros funcionem adequadamente em
hardwares de diferentes capacidades, o iOS foi arquitetado em diferentes camadas conforme
ilustra a Figura 9, facilitando assim o desenvolvimento de aplicações, pois as camadas de alto
nível fornecem uma abstração orientada a objeto das camadas de baixo nível. (APPLE, 2013)
Figura 8 - iPhone 5s com iOS 7.1. Fonte: (APPLE, 2013)
Figura 9 - iOS Arquitetura. Fonte: (APPLE, 2013)
10
Com seu núcleo desenvolvido em C e C++, o iOS possui também muitas aplicações e
frameworks de alto nível escritos em Objective-C, a linguagem padrão utilizada pelos
desenvolvedores para criação de aplicações para iOS. (APPLE, 2013)
2.3.4. Windows Phone
A primeira versão do Windows Phone, o WP 7, foi lançado em 21 de outubro de 2010
em mais de 30 países juntamente com 10 aparelhos de diversos fabricantes como LG,
SANSUMG, HTC e outros. (RICKER, 2010)
Desenvolvedores podem utilizar VB, C#, C++ ou HTML5/CSS/JavaScript para
desenvolver suas aplicações para Windows Phone. Sua interface é baseada no sistema de
design da Microsoft conhecido como Metro. A série Windows Phone é sucessora do
Windows Mobile, entretanto não possui compatibilidade com aplicações do antigo OS.
(ZIEGLER, 2010)
Figura 10 - HTC 8XT com Windows Phone 8.Fonte: (HTC, 2014)
Figura 11 - Arquitetura do Sistema Windows Phone 8. Fonte: (MICROSOFT, 2013)
11
O Windows Phone 8, atual versão, foi lançado em 29 de outubro de 2012 e substituiu a
antiga arquitetura baseada no Windows-CE por uma baseada no kernel do Windows NT, a
qual também é encontrada no Windows 8, facilitando assim a portabilidade de aplicações
entre ambas as plataformas e ainda permitindo executar aplicações do WP7. (RUBINO, 2012)
2.4. Estratégias de Desenvolvimento
Ao iniciar no desenvolvimento de aplicações móveis, muitas empresas e profissionais
autônomos enfrentam uma difícil decisão: qual a abordagem de desenvolvimento a utilizar.
De acordo com Charl e Leroux (2011), um aplicativo móvel pode ser desenvolvido
utilizando uma das três seguintes estratégias: Desenvolvimento Nativo, o qual utiliza
ferramentas e linguagem fornecidas pela empresa responsável pela plataforma;
Desenvolvimento Web, que utiliza de linguagem HTML5, CSS e JavaScript; e
Desenvolvimento Híbrido, o qual utiliza-se uma linguagem de script que será interpretada por
uma camada intermediária pré-instalada no sistema ou embutida na própria aplicação, sendo
esta responsável por interagir com o Sistema.
A Figura 12 apresenta uma visão geral das vantagens e desvantagens de cada estratégia
de desenvolvimento.
Figura 12 - Pros e Contras das 3 estratégias de desenvolvimento. Fonte: (NOKIA, 2013)
12
2.4.1. Aplicação Nativa
São aplicações instaladas a partir das lojas de aplicativos oficiais e desenvolvidas
utilizando a linguagem e ferramentas fornecidas pela empresa responsável por cada
plataforma. Para Android, desenvolve-se em Java utilizando o Eclipse com plugin ADT ou o
Android Studio, para iOS em Objective-C utilizando o Xcode e para Windows Phone em C#
utilizando o Visual Studio. (BAYTECH SERVICES, 2012)
2.4.2. Aplicação Web
Desenvolvidas utilizando tecnologias web como HTML5, CSS e JavaScript, são
aplicações web comum, mas especialmente desenhadas para se adaptarem a telas menores.
Sua principal vantagem é a portabilidade entre as plataformas, uma vez que todas as
plataformas disponibilizam um browser, as aplicações web oferecem a premissa “Write Once,
run Anywhere”. (BAYTECH SERVICES, 2012)
2.4.3. Aplicação Hibrida
Assim como aplicações nativas, estas são baixadas e instaladas através das lojas
oficiais, pois uma das exigências dessa loja é que todo código executado esteja na aplicação.
Tendo como diferencial não serem desenvolvidas utilizando a linguagem e SDK oficial, mas
sim ferramentas de terceiros tais como PhoneGap com HTML5/JavaScript, Xamarin Mono
com C#, Titanium com JavaScript, dentre outros. (BAYTECH SERVICES, 2012)
Charl e Leroux (2011) discutem sobre pontos fortes e fracos de abordagens nativas e
web e inicia abordando a importância do JavaScript como ferramenta de comunicação com o
sistema, bem como a tecnologia em sua máquina virtual, a qual ocasionou o que referenciam
como a nova linha de frente da guerra dos navegadores. Em seguida são abordadas algumas
características da utilização de CSS em plataformas móveis e a utilização de um recurso
chamado Aceleração por Hardware para melhorar sua utilização.
Os autores ainda ressaltam que a distância entre a camada nativa e o navegador
embutido na aplicação é de apenas um nível de compilação, ou seja, para adicionar
capacidades nativas a ele, basta recompilá-lo para empacotar novas funcionalidades nativas.
Enfatizando que, se um navegador não suporta uma capacidade nativa, não é porque ele não
pode ou que não irá, mas significa apenas que ela não esta feita ainda.
13
Trabalhos como (IBM CORPORATION, 2012) e (BAYTECH SERVICES, 2012) se
propõem não a indicar qual a melhor abordagem, mas a retratar os pontos fortes e fracos de
cada uma através de comparativo de suas características e funcionalidades oferecidas e assim
mostrar que a melhor abordagem vai depender na natureza do produto a ser desenvolvido.
Com maior foco numa visão geral sobre os XMTs atuais comparando suas vantagens e
desvantagens, os autores OHRT e TURAU (2012) apresentam uma definição detalhada a
respeito dos três aspectos sobre aplicações em smartphones que são importantes para o
entendimento das ferramentas de desenvolvimento multiplataforma, os quais são: O modo
como aplicações são instaladas, sua estrutura interna e seus elementos de interface com
usuário. Além disso, é apresentado um breve resumo sobre nove ferramentas de
desenvolvimento multiplataforma, bem como dois gráficos demostrando a estrutura de cada
uma, características e funcionalidades de desenvolvimento e as plataformas suportadas por
cada uma delas.
Por fim, este trabalho apresenta uma avaliação de desempenho utilizando-se de uma
aplicação bem básica, apenas uma tela com um texto e ícone, compilada utilizando as nove
ferramentas abordadas e avaliada com as medidas de software: tamanho da aplicação, o uso
de memória RAM, tempo de inicialização do emulador e no hardware.
14
3 DESENVOLVIMENTO MULTIPLATAFORMA
Desenvolver uma mesma aplicação para diversas plataformas utilizando as
ferramentas oficiais é uma tarefa muito trabalhosa, que depende de muito tempo, esforço, e
conhecimentos distintos sobre cada plataforma por parte dos desenvolvedores.
Anthony Wasserman (2010) propõe duas formas de reduzir estes esforços de
desenvolvimento de uma mesma aplicação para plataformas distintas:
 Utilizar tecnologias web e criar uma aplicação web;
 Utilizar ferramentas de desenvolvimento multiplataforma (XMT) para desenvolver
somente um código que gerará uma aplicação para cada plataforma.
Uma visão geral sobre a utilização de tecnologias web no desenvolvimento de
aplicações móveis multiplataforma é apresentada por (CHARL e LEROUX, 2011), com foco
principal em analisar se elas podem se equiparar à experiência de usuário oferecida pela
interface nativa da plataforma. Enquanto que (OHRT e TURAU, 2012) direcionam o foco de
seu trabalho nas ferramentas de desenvolvimento móveis multiplataforma (XMTs) atuais
comparando suas vantagens e desvantagens.
Com base nesses estudos, os tópicos seguintes apresentam uma pesquisa sobre os
frameworks de desenvolvimento multiplataforma mais utilizados nos dias atuais.
3.1. Frameworks de Desenvolvimento
Segundo Fayad e Schmidt (1997), um Framework é um aplicação semi-completa,
reusável que pode ser especializada para produzir aplicações customizadas. Em um contexto
Orientado a Objetos (OO) é utilizando técnicas de reuso baseado em classes e bibliotecas.
No contexto do desenvolvimento de aplicações multiplataforma, os frameworks
podem ser entendidos como blocos de códigos pré-implementados que serão reutilizados no
momento da compilação do código escrito pelo desenvolvedor para gerar a aplicação final.
(FAYAD E e SCHMIDT D., 1997)
Durante o desenvolvimento deste trabalho são utilizados os seguintes frameworks de
desenvolvimento multiplataforma para dispositivos móveis: PhoneGap (PHONEGAP, 2013),
Sencha Touch (SENCHA, 2013) e Titanium (APPCELERATOR, 2014) com suas respectivas
logos ilustrados na Figura 13.
15
Figura 13 - Frameworks de Desenvolvimento Multiplataforma
3.1.1. PhoneGap
O PhoneGap foi desenvolvido pela Nitobe Software, comprada pela Adobe em
outubro de 2011. Foi doado para a Apache no mesmo ano com objetivo de fomentar o
desenvolvimento do projeto de código aberto facilitando a contribuição de grandes empresas.
Visando evitar problemas com propriedade intelectual, o projeto foi renomeado para Apache
Cordova como referência a Cordova Street em Vancouver, rua onde localizava-se o escritório
da Nitobi Software. Assim o PhoneGap e Apache Cordova tornaram-se produtos distintos, e
embora este último seja o motor do atual PhoneGap da Adobe, na prática, por algum tempo o
que haverá de diferente entre eles será apenas o nome do pacote de download. (BRIAN, 2012)
Figura 14 - PhoneGap helloworld exemplo (index.html)
Em sua atual versão, o PhoneGap 3.4 possui suporte a uma grande variedade de
plataformas, dentre as quais podemos destacar, Android, iOS, Windows Phone 7 e 8,
BlackBerry OS e 10, Symbian, Firefox OS, Tizen, Bada, entre outros. (PHONEGAP, 2013)
16
Utilizando HTML5, CSS e JavaScript para desenvolver suas aplicações, o PhoneGap é
ideal para quem já possui conhecimento em tecnologias web. Através do JavaScript e de uma
camada de software nativo uma aplicação desenvolvida em Phonegap com tecnologias web
pode adquirir acesso a recursos nativos tornando-se uma aplicação híbrida. (INTEL, 2012)
3.1.2. Titanium
Atualmente em sua versão 3.2.2, o Titanium é um framework desenvolvido pela
Appcelerator que permite desenvolver aplicações verdadeiramente nativas, aplicações
híbridas e aplicações móveis web com uma única base de código. (APPCELERATOR, 2014)
Utilizando-se de JavaScript para desenvolvimento de suas aplicações, o Titanium
segue uma filosofia de desenvolvimento diferenciada pois ele não se propõe a ser Write Once,
Run Everywhere (WORE), sua proposta é Write Once, Adapt Everywere (WOAE). Isto
acontece uma vez que o Titanium compila objetos nativos, tais como botões e campos de
texto, em código nativo da plataforma alvo: Java para Android ou Objective-C para iOS.
Enquanto que a lógica de negócio da aplicação permanece em JavaScript para ser interpretada
em tempo de execução. Desta forma interface da aplicação resultante é igual a de uma
aplicação nativa tanto em design quanto em responsibilidade. (ALCOCER, 2013)
Figura 15 - Titanium helloworld exemplo (app.js)
Atualmente, o Titanium suporta apenas Android, iOS e Tizen, pois a forma como o ele
funciona torna complexo adicionar suporte a novas plataformas. (APPCELERATOR, 2013)
17
3.1.3. Sencha Touch
Este framework de desenvolvimento foi anunciado pela antiga empresa Ext JS, a partir
da combinação de três de seus produtos, o Ext JS, JQTouch e o Raphaël em 14 de janeiro de
2010, mesmo dia em que mudou seu nome para Sencha. (ELIAS, 2010)
A Figura 16 ilustra um exemplo de código JavaScript responsável pela definição da
interface principal da aplicação. Este framework possui um conjunto de componentes de
interface gráfica otimizados para interações com toque, e embora esta interface seja criada
com HTML5 e CSS, ela é definida durante o desenvolvimento utilizando JavaScript.
Atualmente, o Sencha Touch 2 oferece oito temas para que sua aplicação torne-se mais imersa
com o ambiente gráfico da plataforma para a qual a aplicação será gerada, na Figura 17 são
apresentados interfaces que nos permitem ver uma mesma aplicação com o look and feelv
de
diferentes plataformas móveis. (SENCHA, 2013) .
Figura 16 - Sencha Touch 2 helloworld exemplo (Main.js)
v
Look and fell: Define a aparência e comportamentos de uma entidade baseado em diversos aspectos, dentre
os quais destaca-se os gráficos, do ambiente onde a mesmo encontra-se imerso.
18
Figura 17 - Temas oferecidos pelo Sencha Touch 2
Já possuindo suporte a Android, iOS, BlackBerry, WindowsPhone, em sua versão 2.3,
lançada em 1 de outubro de 2013, o Sencha Touch incluiu também o suporte ao Tizenvi
e o
suporte ao Apache Cordova como pacote de acesso a características nativas. (AGRAWAL,
2013)
vi
Sistema operacional móvel desenvolvido open source pela Samsung. Site oficial: www.tizen.org
19
4 PROPOSTA
Este trabalho destina-se a analisar as vantagens, diferenças e limitações de três
frameworks de desenvolvimento multiplataforma: Phonegap, Sencha Touch, e Titanium que
estão entre os mais populares para os desenvolvedores (VISION MOBILE, 2012). O objetivo
de estudar os frameworks de desenvolvimento de aplicações móveis multiplataforma citados
anteriormente é elaborar um paralelo sobre a dificuldade de desenvolvimento, tempo e esforço
necessário, limitações e desempenho das aplicações resultantes.
4.1. Metodologia
O presente trabalho possui caráter de Pesquisa Comparativa a qual segundo
(HEIDENHEIMER e HUGH HECLO, 1983) é o ato de comparar duas ou mais coisas, com
vista a descobrir algo sobre uma ou todas as coisas que estão sendo comparadas.
Na primeira etapa deste trabalho, foi feita uma pesquisa bibliográfica a fim de obter o
máximo de informações sobre pesquisas já existentes no campo de desenvolvimento de
aplicações móveis multiplataforma e encontrar critérios que foram pouco abordados e possam
ser incluídos no presente estudo.
Na segunda etapa, é realizado um estudo sobre as metodologias de desenvolvimento de
três das ferramentas mais utilizadas no ano de 2012vii
, características relevantes, limitações de
desenvolvimento impostas e a categoria em que cada aplicação resultante se enquadra:
aplicação Nativa, Web ou Híbrida (IBM CORPORATION, 2012).
Dando continuidade ao estudo, na terceira etapa temos uma análise sobre as três
categorias de aplicações abordadas no título deste trabalho, características tais como UX
Designviii
da plataforma, desempenho, facilidade de manutenção, esforço de desenvolvimento,
dentre outras medidas analisadas e para isso uma prova de conceito é desenvolvida durante
esta etapa, a qual consiste de uma mesma aplicação desenvolvida nas três ferramentas.
Por fim, na quarta etapa, uma discussão a partir das medidas comparativas e dos
resultados obtidos é concebida com o objetivo de mostrar qual das abordagens de
desenvolvimento foi mais vantajosa, em que momento, e para qual tipo de aplicação.
vii
De acordo com pesquisa publicada pela empresa VISION MOBILE.
viii
User eXperience Design: Remete a forma como o usuário interage com o sistema proporcionando uma experiência única com o mesmo.
20
4.2. Escopo da Aplicação Prova de Conceito
Este estudo visa analisar a utilização de recursos multimídia, sensores e comunicação
externa em aplicações implementadas com os frameworks abordados, pois são características
comuns a aplicativos móveis atuais e nem sempre são suportados por aplicações Web.
Para alcançar este objetivo, a aplicação proposta possui apenas uma interface com um
botão de acesso à câmera e uma área destinada a exibir a foto capturada. Para utilização do
acelerômetro, um movimento rápido para esquerda ou direita girando o aparelho deverá
alterar a exibição das diversas imagens capturadas.
Por fim, a abordagem de comunicação externa é feita por um segundo botão que
permitirá o compartilhamento de sua atual localização, obtida a partir do GPS, em uma rede
social. O Google+ foi a rede social escolhida.
Dessa forma, a aplicação proposta aborda a utilização de um recuso multimídia
(câmera), sensores (acelerômetro e GPS) e comunicação externa (compartilhamento da
localização do usuário na rede social da Google), bem como, exigiu a elaboração de sua
interface gráfica através das ferramentas e APIs disponibilizadas por cada framework.
4.3. Medidas de Software
Para a comparação dos frameworks foram adotadas as medidas de software ilustradas na
Tabela 1.
Medida Unidade Processo de Obtenção Ferramentas Importância
Tamanho da
aplicação
KBs
Analisando-se as
propriedades do
arquivo final gerado.
Gerenciador de
arquivos do
Mac (Finder)
Tempo de download
e espaço necessário
para instalação.
Consumo de
memória
MBs
Após aplicação ser
inicializada, verifica-se
o valor em uma das
ferramentas.
Gerenciador de
Aplicativos
Android,xCode
Instruments
Significante para
usuários que utilizam
muitos aplicativos
simultaneamente.
Tempo de
carregamento
ms
Tempo decorrido para
que a aplicação
apresente a tela inicial.
ADT LogCat,
xCode Timer
Profile
Influi diretamente na
experiência do
usuário.
Lines of Code
(LOC)
Valor
numérico
Observando o número
da ultima linha no
editor de texto.
Editor de
Texto
Esforço de
desenvolvimento e
legibilidade.
Number of
Files (NOF)
Valor
numérico
Observando o número
da ultima linha no
editor de texto.
Editor de
Texto
Legibilidade e
manutenção.
Tabela 1 - Medidas de software
21
4.4. Materiais
Todo o desenvolvimento das aplicações Android e iOS utilizando cada um dos
frameworks abordados foi feita utilizando um notebook HP Probook com processador i3
Dual-Core 2.4 GHz e 8GB de memória RAM com sistema operacional Mac OSX Mavericks
10.9.2 instalado nativamente.
Para testar as aplicações Android, foi utilizado um smartphone Google Nexus 4, o qual
possui processador Qualcomm Snapdragon S4 Pro Quad-Core 1.5GHz e 2GB de memória
RAM com sistema operacional Android Kitkat 4.4.2. Para as aplicações iOS, devido as
dificuldades de obtenção de um certificado de desenvolvedor, os testes restringiram-se ao iOS
Simulator no mesmo notebook.
22
5 RESULTADO E DISCUSSÃO
Para cada um dos três frameworks abordados neste trabalho, foram geradas duas
versões do aplicativo prova de conceito, um para cada plataforma móvel alvo, totalizando seis
aplicações: três para Android e três para iOS.
5.1. Comparativo das características dos frameworks abordados
A Tabela 2 ilustra os dados obtidos a partir do site oficial de cada Framework.
PhoneGap Sencha Touch Titanium
Licença Open Source
Closed Source
com versão grátis
Open Source
Look and fell Web
Web customizado
com Temas
Nativo
Renderização de
Interface
WebView WebView
Sistema
Operacional
API para Interface HTML5 e CSS JavaScript JavaScript
API para Acesso a
recursos Nativos
Apache Cordova
Sencha SDK
Apache Cordova
Titanium SDK
Linguagem de
Programação
HTML5/CSS/JavaScript JavaScript JavaScript
Suporte a Bibliotecas
JavaScript
Sim Sim Não
IDE Não Sim Sim
Disponibilidade da
IDE
- Paga Gratuita
Sensores
Acelerômetro, Câmera,
Compasso,
Conexão HTTP,
Contatos,
Geolocalização,
Notificação,
Armazenamento
Acelerômetro,
Câmera,
Compasso,
Conexão HTTP,
Contatos,
Geolocalização,
Notificação,
Armazenamento
Acelerômetro,
Câmera,
Compasso,
Conexão HTTP,
Contatos,
Geolocalização,
Notificação,
Armazenamento
Plataformas Alvo
iOS, Android,
Windows Phone,
BlackBerry,
Bada, WebOS,
Symbian, Firefox OS e
Tizen
iOS,
Android,
Windows Phone,
BlackBerry e
Tizen
iOS,
Android e
Tizen
Tabela 2 - Comparativo de características dos frameworks
23
5.2. Desenvolvimento da aplicação POC
A Tabela 3 resume informações sobre o processo de desenvolvimento.
Ambiente de
desenvolviment
o (IDE)
Curva de
aprendizage
m
Vantagens Desvantagens Código
fonte
PhoneGap
Editor de texto
Sublime
Baixa
Definição da
interface com
HTML e CSS.
Diversidade de
plugins.
Falta de uma
IDE dedicada e
oficial.
Anexo
A
Sencha
Touch
Editor de texto
Sublime
Média/Alta
Temas que
simulam a
interface
nativa. Suporte
ao Cordova.
API para
definição de
interfaces
confusa e
pouco
exemplificada.
Anexo
B
Titanium Titanium Studio Baixa
Auxílio da IDE
e exemplos na
documentação
Não poder
remover a
SplashScreen
pois nela
ocorre o
carregamento
da biblioteca
do Titanium.
Anexo
C
Tabela 3 - Comparativo a partir do desenvolvimento da aplicação POC
Na Figura 18 temos as interfaces finais das aplicações no Android e a Figura 19
apresenta as interfaces finais da aplicação no iOS.
Figura 18 - Aplicações Android, respectivamente PhoneGap, Sencha Touch e Titanium
24
Figura 19 - Aplicações iOS, respectivamente PhoneGap, Sencha Touch e Titanium
5.3. Comparativo de desempenho
A seguir é apresentada uma análise das seis aplicações finais com base nas medidas de
software apresentadas na sessão 4.3.
Android
Tamanho da aplicação
Android .apk (MB)
Tamanho da aplicação
iOS .ipa (MB)
LOC NOF
Titanium 9,5 2,6 ~120 3
PhoneGap 1,7 2,4 ~170 3
SenchaTouch 2,1 2,7 ~190 2
Tabela 4 - Comparativo segundo métricas de software pré-estabelecidas
Figura 20 - Consumo de memória no Android
0
10
20
30
40
50
60
PhoneGap
Sencha Touch
Titanium
25
Figura 21 - Consumo de memória no iOS
Figura 22 - Tempo de carregamento no Android
Figura 23 - Tempo de carregamento no iOS
0
5
10
15
20
25
30
35
40
45
PhoneGap
Sencha Touch
Titanium
0
0,5
1
1,5
2
2,5
PhoneGap
Sencha Touch
Titanium
0
0,1
0,2
0,3
0,4
0,5
0,6
PhoneGap
Sencha Touch
Titanium
26
5.4. Discussão
Com base em todo o processo de desenvolvimento, a característica mais impactante foi
a elaboração da interface da aplicação POC com o framework Sencha Touch. Apesar de ele
trabalhar com JavaScript assim como os demais, a construção de sua interface assemelhasse a
um arquivo JSONix
, possuindo elementos encadeados em diversos níveis, cada um com seus
respectivos atributos. Isto, aliado a falta de exemplificações em sua documentação, fez com
que sua elaboração fosse complexa, pouco intuitiva e com alta curva de aprendizado.
Nesse quesito de interface, o PhoneGap se destacou por ter possibilitado o uso de
tecnologias web, ou seja, utilizou-se exclusivamente de HTML e CSS na sua construção, o
que tornou o processo bastante sólido e rápido. Por sua vez, o Titanium se mostrou a melhor
ferramenta para construção de interface, uma vez que ela foi toda trabalhada de modo
semelhante a de uma aplicação web, com o corpo da interface criado através de uma estrutura
bastante simplificada e intuitiva do HTML em um arquivo XML e uma variação do CSS,
chamado de TSS que definiu os estilos dos componentes.
A lógica da aplicação foi feita utilizando JavaScript nas três aplicações, entretanto no
Sencha Touch a sintaxe da definição de funções foge ao padrão e a definição de variáveis com
escopo global necessitou de algumas horas de pesquisa. O ponto positivo para este
framework, foi possibilitar de utilização do Apache Cordova como módulo de acesso as APIs
do sistema. Com isto, os plugins de acesso a cada sensor e mais da metade do código escrito
para a aplicação do PhoneGap puderam ser reutilizados com poucas modificações.
O PhoneGap possui uma grande comunidade, o que facilita muito o trabalho do
desenvolvedor ao deparar-se com um problema durante o desenvolvimento de sua aplicação.
Além disso, a possibilidade de extensão através de plugins oficiais e criados pela comunidade,
simplifica de forma considerável a criação de aplicações que necessitem de acesso a recursos
multimídia e sensores. Apesar do Titanium não fornecer essa extensibilidade de plugins, sua
API já é bastante rica, intuitiva e exemplificada quanto a utilização dos mesmos recurso.
Por fim, o fornecimento de uma IDE gratuita também contribuiu para que o Titanium
tenha sido considerado o framework mais eficiente no desenvolvimento da aplicação proposta
neste estudo, com menor esforço, baixa curva de aprendizado e maior desempenho.
ix
JSON: Formato leve para troca de dados textuais. Site oficial: http://www.json.org
27
6 CONCLUSÃO
Este trabalho visou estudar, analisar e comparar três frameworks de desenvolvimento de
aplicações multiplaforma para dispositivos móveis. Foram estudadas as ferramentas Sencha,
Titanium e Phonegap através da leitura de artigos, da documentação das ferramentas e da
construção de uma aplicação prova de conceito que utiliza interface gráfica, sensores, acesso a
recursos multimídia e comunicação com um serviço Web.
A aplicação foi codificada em cada framework e duas versões forma geradas para as
plataformas Android e iOS totalizando seis versões do mesmo aplicativo. As medidas de
software pré-estabelecidas foram então computadas. Com base nos resultados obtidos, bem
como no estudo realizado no início deste trabalho sobre as características de cada framework
utilizado, para a aplicação proposta, o framework Titanium foi considerado como o mais
eficiente no tocante à curva de aprendizado, à riqueza da documentação, ao esforço de
desenvolvimento, e ao desempenho das aplicações geradas.
Um trabalho futuro decorrente desta pesquisa é analisar qual dos frameworks se destaca
em relação à curva de aprendizagem com mais programadores de perfis distintos quanto ao
conhecimento técnico. Além disso, as medidas foram capturadas em único dispositivo
Android e no emulador do iOS. Assim uma extensão possível do trabalho é analisar a
performance em mais dispositivos reais.
28
7 ANEXO A – CÓDIGO FONTE DA APLICAÇÃO POC NO PHONEGAP
Figura 24 - PhoneGap código fonte, arquivo index.html
Figura 25 - PhoneGap código fonte, arquivo index.js parte 1
29
Figura 26 - PhoneGap código fonte, arquivo index.js parte 2
30
8 ANEXO B - CÓDIGO FONTE DA APLICAÇÃO POC NO SENCHA TOUCH
Figura 27 - Sencha Touch código fonte, arquivo Main.js da pasta View
31
Figura 28 - Sencha Touch código fonte, arquivo Main.js da pasta Controller parte 1
32
Figura 29 - Sencha Touch código fonte, arquivo Main.js da pasta Controller parte 2
33
9 ANEXO C - CÓDIGO FONTE DA APLICAÇÃO POC NO TITANIUM
Figura 30 - Titanium código fonte, arquivo index.xml
Figura 31 - Titanium código fonte, arquivo index.tss
Figura 32 - Titanium código fonte, arquivo index.js parte 1
34
Figura 33 - Titanium código fonte, arquivo index.js parte 2
35
10 REFERÊNCIAS
9TO5MAC STAFF. Jobs’ original vision for the iPhone: No third-party native apps. 9To5Mac, 2011.
Disponivel em: <http://9to5mac.com/2011/10/21/jobs-original-vision-for-the-iphone-no-third-party-
native-apps>. Acesso em: 24 Junho 2013.
AGRAWAL, G. Announcing Sencha Touch 2.3 - Touch Grid, Cordova Support, and New Themes.
Sencha, 2013. Disponivel em: <http://www.sencha.com/blog/announcing-sencha-touch-2-3-html5-
for-ios7-touch-grid-cordova-support-more/>. Acesso em: 30 Março 2014.
ALCOCER, R. But I Thought Titanium Was Cross Platform!. Appcelerator, 2013. Disponivel em:
<http://www.appcelerator.com/blog/2013/07/but-i-thought-titanium-was-cross-platform/>. Acesso
em: 31 Março 2014.
APPCELERATOR. Titanium SDK 3.2.0 General Availability - 12/20/2013. Appcelerator, 2013.
Disponivel em: <http://docs.appcelerator.com/titanium/release-notes/?version=3.2.0.GA>. Acesso
em: 31 Março 2014.
APPCELERATOR. Titanium SDK & Titanium Studio. Appcelerator Docs, 2014. Disponivel em:
<http://docs.appcelerator.com/titanium/latest/>. Acesso em: 31 Março 2014.
APPLE. iPhone Delivers Up to Eight Hours of Talk Time. Apple, 2007. Disponivel em:
<http://www.apple.com/pr/library/2007/06/18iPhone-Delivers-Up-to-Eight-Hours-of-Talk-
Time.html>. Acesso em: 29 Março 2013.
APPLE. iOS Dev Center, 2013. Disponivel em:
<https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/chapters/I
ntroduction.html>. Acesso em: 01 Junho 2013.
APPLE. About the iOS Technologies. iOS Developer library, 2013. Disponivel em:
<https://developer.apple.com/library/ios/documentation/miscellaneous/conceptual/iphoneostecho
verview/Introduction/Introduction.html>. Acesso em: 29 Março 2014.
APPLE. Develop Apps for iOS. Apple Developers, 2013. Disponivel em:
<https://developer.apple.com/technologies/ios/>. Acesso em: 29 Março 2014.
BAYTECH SERVICES. Native, Hybrid or Mobile Web – What’s Best for your Mobile Apps. North
Andover, MA - USA, p. 6. 2012.
BLACKBERRY. Java ME and Java APIs for BlackBerry. BlackBerry, 2008. Disponivel em:
<http://docs.blackberry.com/en/developers/deliverables/5827/Java_ME_and_Java_APIs_for_BB_44
6980_11.jsp>. Acesso em: 25 Março 2014.
BLACKBERRY. BlackBerry, 2013. Disponivel em: <http://ca.blackberry.com/company.html>. Acesso
em: 02 jun. 2013.
BRIAN. PhoneGap, Cordova, and what’s in a name? Phonegap Blog, 2012. Disponivel em:
<http://phonegap.com/2012/03/19/phonegap-cordova-and-what%E2%80%99s-in-a-name/>. Acesso
em: 30 Março 2014.
36
CÂMARA, M. Como o iPhone mudou o rumo dos smartphones. Techtudo, 2012. Disponivel em:
<http://www.techtudo.com.br/artigos/noticia/2012/06/como-o-iphone-mudou-o-rumo-dos-
smartphones.html>. Acesso em: 18 jun. 2013.
CHARL, A.; LEROUX, B. Mobile Application Development: Web vs. Native. Communic Ations of the
Acm, Maio 2011. 49-53.
CHEN, J. Android is now Open Source. Androd Developers Blog, 2008. Disponivel em:
<http://android-developers.blogspot.com.br/2008/10/android-is-now-open-source.html>. Acesso
em: 24 Março 2014.
ELIAS, A. Ext JS + jQTouch + Raphaël = Sencha. Sencha, 2010. Disponivel em:
<http://www.sencha.com/blog/ext-js-jqtouch-raphael-sencha>. Acesso em: 30 Março 2014.
FAYAD E, M.; SCHMIDT D., C. Object-oriented Application frameworks. Communications of the ACM,
1997. 10.
GOOGLE. Android Developers, 2013. Disponivel em:
<http://developer.android.com/tools/index.html>. Acesso em: 01 Junho 2013.
HALLIWELL, D. Research In Motion is Now BlackBerry. BlackBerry Blog, 2013. Disponivel em:
<http://blogs.blackberry.com/2013/01/rim-renamed-blackberry/>. Acesso em: 25 Março 2013.
HEIDENHEIMER, A. J.; HUGH HECLO, C. T. A. Comparative Public Policy. [S.l.]: St. Martin's Press,
1983.
HTC. HTC-8XT. HTC, 2014. Disponivel em: <http://www.htc.com/us/smartphones/htc-8xt/>. Acesso
em: 20 maio 2014.
IBM CORPORATION. Native, web or hybrid mobile-app development. Somers, NY - USA, p. 10. 2012.
IDC. Android and iOS Combine for 92.3% of All Smartphone Operating System Shipments in the
First Quarter While Windows Phone Leapfrogs BlackBerry, According to IDC, 16 Maio 2013.
Disponivel em: <http://www.idc.com/getdoc.jsp?containerId=prUS24108913>. Acesso em: 25 Maio
2013.
INFOTECHNOLOGY. The BlackBerry Smartphone Series. HubPages, 2014. Disponivel em:
<http://infotechnology.hubpages.com/hub/The-BlackBerry-Smartphone-Series>. Acesso em: 25
Março 2014.
INTEL. The Development of Mobile Applications using HTML5 and PhoneGap* on Intel® Architecture-
Based Platforms. Intel Developer Zone, 2012. Disponivel em: <http://software.intel.com/en-
us/articles/the-development-of-mobile-applications-using-html5-and-phonegap-on-intel-
architecture-based>. Acesso em: 30 Março 2014.
JANSSEN, C. Mobile Operating System (Mobile OS). Techopedia, 2010. Disponivel em:
<http://www.techopedia.com/definition/3391/mobile-operating-system-mobile-os>. Acesso em: 24
Junho 2013.
MICROSOFT. Windows Phone Dev Center, 2013. Disponivel em:
<http://msdn.microsoft.com/library/windowsphone/develop/ff402529(v=vs.105).aspx>. Acesso em:
01 Junho 2013.
37
NOKIA. Cross Platform Mobile Architecture. Nokia Developers, 2013. Disponivel em:
<http://developer.nokia.com/community/wiki/Cross_Platform_Mobile_Architecture>. Acesso em: 23
maio 2014.
OGLIARI, R. BlackBerry e Android usam Java, mas JavaME? itWeb, 2011. Disponivel em:
<http://itweb.com.br/blogs/blackberry-e-android-usam-java-mas-javame/>. Acesso em: 26 maio
2014.
OHRT, J.; TURAU, V. Cross-Platform Development Tools for Smartphone Applications. Computing
Practices, Setembro 2012. 72-79.
PHONEGAP. Platform Support. PhoneGap Documentation, 2013. Disponivel em:
<http://docs.phonegap.com/en/edge/guide_support_index.md.html#Platform%20Support>. Acesso
em: 30 Março 2014.
RICKER, T. Microsoft announces ten Windows Phone 7 handsets for 30 countries: October 21 in
Europe and Asia, 8 November in US (Update: Video!). Engadget, 2010. Disponivel em:
<http://www.engadget.com/2010/10/11/microsoft-announces-ten-windows-phone-7-handsets-for-
30-countrie/>. Acesso em: 29 Março 2014.
RUBINO, D. Microsoft officially announces Windows Phone 8. WP Central, 2012. Disponivel em:
<http://www.wpcentral.com/microsoft-officially-announces-windows-phone-8>. Acesso em: 29
Março 2014.
SENCHA. Sencha Touch - Features. Sencha, 2013. Disponivel em:
<http://www.sencha.com/products/touch/features/>. Acesso em: 30 Março 2014.
SHANKLAND, S. Google's Android parts ways with Java industry group. CNET, 2007. Disponivel em:
<http://www.cnet.com/news/googles-android-parts-ways-with-java-industry-group/>. Acesso em:
24 Março 2014.
VIANA, W. C. Mobilité et sensibilité au contexte pour la gestion de documments multimédias
personnels: CoMMediA., Universit´e Joseph-Fourier - Genoble, 02 Fevereiro 2010.
VISION MOBILE. Cross-Platform Developer Tools 2012. Vision Mobile Reserach. Londres, p. 97. 2012.
WASSERMAN, A. Software Engineering Issues for Mobile Application Development. Proc. FSE/SDP
Workshop Future of Software Eng. Research (FoSER 10), Moffett Field, 2010.
WEINBERG, D. Considerations for Developing Applications for Smartphones. Opposing Views, 2011.
Disponivel em: <http://science.opposingviews.com/considerations-developing-applications-
smartphones-12052.html>. Acesso em: 19 jun. 2013.
WILSON, M. T-Mobile G1: Full Details of the HTC Dream Android Phone. gizmodo, 2008. Disponivel
em: <http://gizmodo.com/5053264/t+mobile-g1-full-details-of-the-htc-dream-android-phone>.
Acesso em: 24 Março 2014.
ZIEGLER, C. Microsoft talks Windows Phone 7 Series development ahead of GDC: Silverlight, XNA, and
no backward compatibility. Endgadget, 2010. Disponivel em:
<http://www.engadget.com/2010/03/04/microsoft-talks-windows-phone-7-series-development-
ahead-of-gdc/>. Acesso em: 29 Março 2014.

Mais conteúdo relacionado

Mais procurados

Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Erisvaldo Junior
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4Jose Berardo
 
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...Tchelinux
 
Iniciando o Desenvolvimento para o Google Android
Iniciando o Desenvolvimento para o Google AndroidIniciando o Desenvolvimento para o Google Android
Iniciando o Desenvolvimento para o Google AndroidSalvador Torres
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidJosé Alexandre Macedo
 
Introdução à programação para Android
Introdução à programação para AndroidIntrodução à programação para Android
Introdução à programação para AndroidJorge Cardoso
 
Programando Android - Aula 1
Programando Android - Aula 1Programando Android - Aula 1
Programando Android - Aula 1Kalil Maciel
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidRafael Sakurai
 
Desenvolvendo para Android
Desenvolvendo para AndroidDesenvolvendo para Android
Desenvolvendo para AndroidClaudio Pereira
 
Tutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para AndroidTutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para AndroidSidney Roberto
 
Palestra Desenvolvimento de Apps Móveis: Iniciando no iOS e Android
Palestra Desenvolvimento de Apps Móveis: Iniciando no iOS e AndroidPalestra Desenvolvimento de Apps Móveis: Iniciando no iOS e Android
Palestra Desenvolvimento de Apps Móveis: Iniciando no iOS e AndroidCarlos Eugenio Torres
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3Jose Berardo
 
Apostila passo a passo como programar em android edição03
Apostila passo a passo como programar em android edição03Apostila passo a passo como programar em android edição03
Apostila passo a passo como programar em android edição03Horacio Diamante Mondlane
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma AndroidNatanael Fonseca
 
E tertulia paol-rq
E tertulia paol-rqE tertulia paol-rq
E tertulia paol-rqKMILT
 

Mais procurados (20)

Android Aula 2
Android Aula 2Android Aula 2
Android Aula 2
 
Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4
 
Android - Conceito e Arquitetura
Android - Conceito e ArquiteturaAndroid - Conceito e Arquitetura
Android - Conceito e Arquitetura
 
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
 
Iniciando o Desenvolvimento para o Google Android
Iniciando o Desenvolvimento para o Google AndroidIniciando o Desenvolvimento para o Google Android
Iniciando o Desenvolvimento para o Google Android
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento Android
 
Android Aprendiz
Android AprendizAndroid Aprendiz
Android Aprendiz
 
Introdução à programação para Android
Introdução à programação para AndroidIntrodução à programação para Android
Introdução à programação para Android
 
Programando Android - Aula 1
Programando Android - Aula 1Programando Android - Aula 1
Programando Android - Aula 1
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao Android
 
Desenvolvendo para Android
Desenvolvendo para AndroidDesenvolvendo para Android
Desenvolvendo para Android
 
Tutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para AndroidTutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para Android
 
Palestra Desenvolvimento de Apps Móveis: Iniciando no iOS e Android
Palestra Desenvolvimento de Apps Móveis: Iniciando no iOS e AndroidPalestra Desenvolvimento de Apps Móveis: Iniciando no iOS e Android
Palestra Desenvolvimento de Apps Móveis: Iniciando no iOS e Android
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3
 
Sistema Operacional Android
Sistema Operacional AndroidSistema Operacional Android
Sistema Operacional Android
 
Apostila passo a passo como programar em android edição03
Apostila passo a passo como programar em android edição03Apostila passo a passo como programar em android edição03
Apostila passo a passo como programar em android edição03
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma Android
 
Android Aula 1
Android Aula 1Android Aula 1
Android Aula 1
 
E tertulia paol-rq
E tertulia paol-rqE tertulia paol-rq
E tertulia paol-rq
 

Semelhante a Análise comparativa de frameworks multiplataforma

Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...Caio Teixeira de Farias
 
Reuniao de estagio_internet_das_coisas
Reuniao de estagio_internet_das_coisasReuniao de estagio_internet_das_coisas
Reuniao de estagio_internet_das_coisasPedro Lopes
 
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdfmbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdfWilliam Almeida
 
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...Jefferson Simão Gonçalves
 
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...Jucemar Dimon
 
Graduação puc - aplicações de padrões de projeto no desenvolvimento de inte...
Graduação   puc - aplicações de padrões de projeto no desenvolvimento de inte...Graduação   puc - aplicações de padrões de projeto no desenvolvimento de inte...
Graduação puc - aplicações de padrões de projeto no desenvolvimento de inte...Wagner Tironi Pinto
 
Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...
Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...
Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...Ráfagan Abreu
 
Framework Entities - Dissertação
Framework Entities - DissertaçãoFramework Entities - Dissertação
Framework Entities - DissertaçãoMarcius Brandão
 
Relatorio de estagio tecnico em informatica
Relatorio de estagio tecnico em informaticaRelatorio de estagio tecnico em informatica
Relatorio de estagio tecnico em informaticaLucianaFerreira163
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...Paulo Steinhauser
 

Semelhante a Análise comparativa de frameworks multiplataforma (20)

AuraMiddleware
AuraMiddlewareAuraMiddleware
AuraMiddleware
 
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
 
Reuniao de estagio_internet_das_coisas
Reuniao de estagio_internet_das_coisasReuniao de estagio_internet_das_coisas
Reuniao de estagio_internet_das_coisas
 
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdfmbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
mbatarce,+Guilherme+Henrique+Vieira+Pereira+-+Reformulado.pdf
 
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
 
 
Restaurante
RestauranteRestaurante
Restaurante
 
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
 
Android - Notas de aula
Android - Notas de aulaAndroid - Notas de aula
Android - Notas de aula
 
Android juliana-mono
Android juliana-monoAndroid juliana-mono
Android juliana-mono
 
Graduação puc - aplicações de padrões de projeto no desenvolvimento de inte...
Graduação   puc - aplicações de padrões de projeto no desenvolvimento de inte...Graduação   puc - aplicações de padrões de projeto no desenvolvimento de inte...
Graduação puc - aplicações de padrões de projeto no desenvolvimento de inte...
 
Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...
Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...
Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...
 
Relatório de estágio
Relatório de estágioRelatório de estágio
Relatório de estágio
 
Android
AndroidAndroid
Android
 
Relatorio de analise mural tic
Relatorio de analise mural ticRelatorio de analise mural tic
Relatorio de analise mural tic
 
Ct java vi_2010_16
Ct java vi_2010_16Ct java vi_2010_16
Ct java vi_2010_16
 
Android
AndroidAndroid
Android
 
Framework Entities - Dissertação
Framework Entities - DissertaçãoFramework Entities - Dissertação
Framework Entities - Dissertação
 
Relatorio de estagio tecnico em informatica
Relatorio de estagio tecnico em informaticaRelatorio de estagio tecnico em informatica
Relatorio de estagio tecnico em informatica
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
 

Mais de Édipo Souza

Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...Édipo Souza
 
Android, Gradle & Dependecies
Android, Gradle & DependeciesAndroid, Gradle & Dependecies
Android, Gradle & DependeciesÉdipo Souza
 
Android studio build variants
Android studio build variantsAndroid studio build variants
Android studio build variantsÉdipo Souza
 
Testing android apps with espresso
Testing android apps with espressoTesting android apps with espresso
Testing android apps with espressoÉdipo Souza
 
Next Step, Android Studio!
Next Step, Android Studio!Next Step, Android Studio!
Next Step, Android Studio!Édipo Souza
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma AndroidÉdipo Souza
 
Android - Frameworks de Testes
Android - Frameworks de TestesAndroid - Frameworks de Testes
Android - Frameworks de TestesÉdipo Souza
 
Android - Frameworks para Gráficos
Android - Frameworks para GráficosAndroid - Frameworks para Gráficos
Android - Frameworks para GráficosÉdipo Souza
 
Logging Patterns & Anti-Patterns
Logging Patterns & Anti-PatternsLogging Patterns & Anti-Patterns
Logging Patterns & Anti-PatternsÉdipo Souza
 
Android - Frameworks de Persistência
Android - Frameworks de PersistênciaAndroid - Frameworks de Persistência
Android - Frameworks de PersistênciaÉdipo Souza
 
Framework MVC - vRaptor
Framework MVC - vRaptorFramework MVC - vRaptor
Framework MVC - vRaptorÉdipo Souza
 
XP - eXtreme Programming
XP - eXtreme ProgrammingXP - eXtreme Programming
XP - eXtreme ProgrammingÉdipo Souza
 

Mais de Édipo Souza (12)

Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
Estudo comparativo das linguagens kotlin e java no desenvolvimento de aplicac...
 
Android, Gradle & Dependecies
Android, Gradle & DependeciesAndroid, Gradle & Dependecies
Android, Gradle & Dependecies
 
Android studio build variants
Android studio build variantsAndroid studio build variants
Android studio build variants
 
Testing android apps with espresso
Testing android apps with espressoTesting android apps with espresso
Testing android apps with espresso
 
Next Step, Android Studio!
Next Step, Android Studio!Next Step, Android Studio!
Next Step, Android Studio!
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma Android
 
Android - Frameworks de Testes
Android - Frameworks de TestesAndroid - Frameworks de Testes
Android - Frameworks de Testes
 
Android - Frameworks para Gráficos
Android - Frameworks para GráficosAndroid - Frameworks para Gráficos
Android - Frameworks para Gráficos
 
Logging Patterns & Anti-Patterns
Logging Patterns & Anti-PatternsLogging Patterns & Anti-Patterns
Logging Patterns & Anti-Patterns
 
Android - Frameworks de Persistência
Android - Frameworks de PersistênciaAndroid - Frameworks de Persistência
Android - Frameworks de Persistência
 
Framework MVC - vRaptor
Framework MVC - vRaptorFramework MVC - vRaptor
Framework MVC - vRaptor
 
XP - eXtreme Programming
XP - eXtreme ProgrammingXP - eXtreme Programming
XP - eXtreme Programming
 

Análise comparativa de frameworks multiplataforma

  • 1. UNIVERSIDADE FEDERAL DO CEARÁ INSTITUTO UFC VIRTUAL CURSO DE SISTEMAS E MÍDIAS DIGITAIS ÉDIPO DA SILVA SOUZA UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS FORTALEZA 2014
  • 2. ÉDIPO DA SILVA SOUZA UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS Monografia apresentada ao Curso de Sistemas e Mídias Digitais do Instituto UFC Virtual da Universidade Federal do Ceará, como requisito parcial para obtenção do Título de Bacharel em Sistemas e Mídias Digitais. Orientador: Prof. Dr. Windson Viana de Carvalho FORTALEZA 2014
  • 3. ÉDIPO DA SILVA SOUZA UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS Monografia apresentada ao Curso de Sistemas e Mídias Digitais do Instituto UFC Virtual da Universidade Federal do Ceará, como requisito parcial para obtenção do Título de Bacharel em Sistemas e Mídias Digitais. Aprovado em: __ / __ / ____ BANCA EXAMINADORA _________________________________ Prof. Dr. Windson Viana de Carvalho (Orientador) Universidade Federal do Ceará (UFC) _________________________________ Prof. Msc. Marcio Espíndola Freire Maia Universidade Federal do Ceará (UFC) _________________________________ Prof. Msc. Edgar Marçal de Barros Filho Universidade Federal do Ceará (UFC)
  • 4. RESUMO Frameworks de desenvolvimento multiplataforma (do inglês, multi-platform ou cross- platform) para dispositivos móveis são ferramentas que permitem aos desenvolvedores criarem um mesmo aplicativo para diferentes sistemas operacionais móveis de uma forma simplificada e com alto reuso. Através da utilização de apenas uma única linguagem de programação ou de um mesmo código fonte no desenvolvimento de um aplicativo móvel é possível conceber uma aplicação pronta para ser utilizada em diversas plataformas móveis (e.g., Android, iOS, Windows Phone) sem a reescrita excessiva de código. Uma diversidade de frameworks comerciais e acadêmicos tem sido proposta com esse objetivo, dos quais, Titanium, Sencha Touch e PhoneGap são exemplos notórios. Cada um deles possui características que os tornam únicos, seja no seu modo de desenvolvimento, na sua abordagem de execução, na disponibilidade de recursos, bem como, na qualidade do resultado do aplicativo final. O objetivo principal dessa pesquisa foi realizar uma comparação desses frameworks através do desenvolvimento de uma aplicação multimídia nos três frameworks citados. Para analisar a utilização e o desempenho de cada um deles, foi estabelecido um conjunto de medidas de software e após coletar e comparar os dados resultantes, concluiu-se que para o tipo de aplicação alvo do estudo (que usa recursos multimídia, sensores e acesso a Internet) a ferramenta Titanium é, hoje, a mais eficiente no tocante à curva de aprendizado, à riqueza da documentação e ao desempenho das aplicações geradas para as plataformas Android e iOS. Palavras-chave: Aplicação móvel. Framework multiplataforma. Titanium. PhoneGap. Sencha Touch, Android, iOS, Windows Phone.
  • 5. ABSTRACT Crossplatform development frameworks for mobile applications are tools that allow developers to create the same application for different mobile operating systems in a simplified way and improving the reuse. By using only a single programming language, or a same source code in the development of a mobile application, it’s possible to generate an application ready to be used on diverse mobile application platforms (e.g., Android, iOS, Windows Phone) without excessive code duplication. A variety of commercial and academic frameworks have been proposed with that goal. Titanium, Sencha Touch and PhoneGap are notorious examples. Each one has features that make it unique, such its development process, its codification methods, availability of resources, and the quality of the final result. The main objective of this research is to compare these frameworks by developing a multimedia application in each of the three frameworks. In order to analyze the utilization and performance of each framework, it was established a set of software measures and after collecting and comparing the resulting data, it was concluded that for that application type (which uses multimedia resources, sensors and access to Internet) Titanium tool, today, is the most efficient with regard to the learning curve, the wealth of documentation and performance of applications generated for Android and iOS platforms. Keywords : Mobile application. Multiplatform framework. Titanium. PhoneGap. Sencha Touch, Android, iOS, Windows Phone.
  • 6. LISTA DE FIGURAS Figura 1 - IDC Worldwide Quarterly Mobile Phone Tracker, May 2013. Fonte: (IDC, 2013).................. 2 Figura 2 - Evolução dos Smartphones. (adaptada) Fonte: (VIANA, 2010)............................................. 5 Figura 3 - Camadas de um ambiente com um MOS. Fonte: (KUCHE, 2012) ........................................ 6 Figura 4 - LG Nexus 4 com Android 4.4 KitKat. Fonte: (GOOGLE, 2013) .............................................. 7 Figura 5 - Arquitetura do Sistema Android. Fonte: (GOOGLE, 2013).................................................... 7 Figura 6 - BlackBerry Z10 com BlackBerry 10 OS. Fonte: (BLACKBERRY, 2013)..................................... 8 Figura 7 - BlackBerry OS Architecture. Fonte: (OGLIARI, 2011)............................................................ 8 Figura 8 - iPhone 5s com iOS 7.1. Fonte: (APPLE, 2013) ...................................................................... 9 Figura 9 - iOS Arquitetura. Fonte: (APPLE, 2013)................................................................................. 9 Figura 10 - HTC 8XT com Windows Phone 8. Fonte: (HTC, 2014)........................................................10 Figura 11 - Arquitetura do Sistema Windows Phone 8. Fonte: (MICROSOFT, 2013)............................10 Figura 12 - Pros e Contras das 3 estratégias de desenvolvimento. Fonte: (NOKIA, 2013) ...................11 Figura 13 - Frameworks de Desenvolvimento Multiplataforma .........................................................15 Figura 14 - PhoneGap helloworld exemplo (index.html)....................................................................15 Figura 15 - Titanium helloworld exemplo (app.js)..............................................................................16 Figura 16 - Sencha Touch 2 helloworld exemplo (Main.js) .................................................................17 Figura 17 - Temas oferecidos pelo Sencha Touch 2............................................................................18 Figura 18 - Aplicações Android, respectivamente PhoneGap, Sencha Touch e Titanium ....................23 Figura 19 - Aplicações iOS, respectivamente PhoneGap, Sencha Touch e Titanium............................24 Figura 20 - Consumo de memória no Android ...................................................................................24 Figura 21 - Consumo de memória no iOS...........................................................................................25 Figura 22 - Tempo de carregamento no Android ...............................................................................25 Figura 23 - Tempo de carregamento no iOS.......................................................................................25 Figura 24 - PhoneGap código fonte, arquivo index.html ....................................................................28 Figura 25 - PhoneGap código fonte, arquivo index.js parte 1.............................................................28 Figura 26 - PhoneGap código fonte, arquivo index.js parte 2.............................................................29 Figura 27 - Sencha Touch código fonte, arquivo Main.js da pasta View..............................................30 Figura 28 - Sencha Touch código fonte, arquivo Main.js da pasta Controller parte 1..........................31 Figura 29 - Sencha Touch código fonte, arquivo Main.js da pasta Controller parte 2..........................32 Figura 30 - Titanium código fonte, arquivo index.xml ........................................................................33 Figura 31 - Titanium código fonte, arquivo index.tss .........................................................................33 Figura 32 - Titanium código fonte, arquivo index.js parte 1 ...............................................................33 Figura 33 - Titanium código fonte, arquivo index.js parte 2 ...............................................................34
  • 7. LISTA DE TABELAS Tabela 1 - Medidas de software ........................................................................................................20 Tabela 2 - Comparativo de características dos frameworks ...............................................................22 Tabela 3 - Comparativo a partir do desenvolvimento da aplicação POC.............................................23 Tabela 4 - Comparativo segundo métricas de software pré-estabelecidas.........................................24
  • 8. LISTA DE ABERVIATURAS E SIGLAS ADT ANDROID DEVELOPMENT TOOLS API APPLICATION PROGRAMMING INTERFACE CLDC CONNECTED LIMITED DEVICE CONFIGURATION CSS CASCADING STYLE SHEETS HTML HYPERTEXT MATKUP LANGUAGE IDC INTERNATIONAL DATA CORPORATION JNI JAVA NATIVE INTERFACE JSON JAVASCRIPT ORIENTED NOTATION JVM JAVA VIRTUAL MACHINE GPS GLOBAL POSITIONING SYSTEM GUI GRAPHIC USER INTERFACE LOC LINES OF CODE MIDP MOBILE INFORMATION DEVICE PROFILE MOS MOBILE OPERATING SYSTEM NDK NATIVE DEVELOPMENT KIT NFC NEAR FIELD COMUNICATION NOF NUMBER OF FILES OO OBJECT ORIENTATION POC PROOF OF CONCEPT SO OPERATION SYSTEM RAM RANDOM ACCESS MEMORY RIM RESEARCH IN MOTION SDK SOFTWARE DEVELOPMENT KIT UX USER EXPERIENCE UI USER INTERFACE VB VISUAL BASIC WOAE WRITE ONCE, ADAPT EVERYWHERE WORE WRITE ONCE, RUN EVERYWHERE WP WINDOWS PHONE XMT CROSS-PLATAFORM MOBILE DEVELOPMENT TOOLS
  • 9. SUMÁRIO 1 INTRODUÇÃO....................................................................................................................................... 1 1.1. Motivação............................................................................................................................................ 1 1.2. Objetivo............................................................................................................................................... 3 1.3. Organização do documento .................................................................................................................. 4 2 DESENVOLVIMENTO DE APLICAÇÕES MÓVEIS............................................................................. 5 2.1. Histórico dos Dispositivos Móveis ....................................................................................................... 5 2.2. Aplicativo Móvel ................................................................................................................................. 6 2.3. Sistemas Operacionais Móveis ............................................................................................................. 6 2.3.1. Android........................................................................................................................................... 7 2.3.2. Blackberry OS ................................................................................................................................. 8 2.3.3. iOS.................................................................................................................................................. 9 2.3.4. Windows Phone..............................................................................................................................10 2.4. Estratégias de Desenvolvimento..........................................................................................................11 2.4.1. Aplicação Nativa ............................................................................................................................12 2.4.2. Aplicação Web ...............................................................................................................................12 2.4.3. Aplicação Hibrida...........................................................................................................................12 3 DESENVOLVIMENTO MULTIPLATAFORMA...................................................................................14 3.1. Frameworks de Desenvolvimento........................................................................................................14 3.1.1. PhoneGap.......................................................................................................................................15 3.1.2. Titanium.........................................................................................................................................16 3.1.3. Sencha Touch .................................................................................................................................17 4 PROPOSTA............................................................................................................................................19 4.1. Metodologia .......................................................................................................................................19 4.2. Escopo da Aplicação Prova de Conceito..............................................................................................20 4.3. Medidas de Software...........................................................................................................................20 4.4. Materiais.............................................................................................................................................21 5 RESULTADO E DISCUSSÃO ...............................................................................................................22 5.1. Comparativo das características dos frameworks abordados.................................................................22 5.2. Desenvolvimento da aplicação POC....................................................................................................23 5.3. Comparativo de desempenho...............................................................................................................24 5.4. Discussão ...........................................................................................................................................26 6 CONCLUSÃO........................................................................................................................................27 7 ANEXO A – CÓDIGO FONTE DA APLICAÇÃO POC NO PHONEGAP .............................................28 8 ANEXO B - CÓDIGO FONTE DA APLICAÇÃO POC NO SENCHA TOUCH .....................................30 9 ANEXO C - CÓDIGO FONTE DA APLICAÇÃO POC NO TITANIUM................................................33 10 REFERÊNCIAS .................................................................................................................................35
  • 10. 1 1 INTRODUÇÃO 1.1. Motivação Avanços na última década nas tecnologias de comunicação sem fio e a popularização de dispositivos móveis (celulares, smartphones, tablets) têm proporcionado novos cenários e serviços de auxílio a várias atividades cotidianas e profissionais em diversos setores da sociedade. Os usuários passaram a acessar aplicações móveis e serviços (e.g., redes sociais, jogos, e-mail) mesmo enquanto se deslocam, em praticamente qualquer hora e local. Desde o enorme sucesso do primeiro modelo do iPhone (em 2007), se tornou quase um padrão a fabricação de aparelhos com tela sensível ao toque, multifuncionais, equipados com múltiplos sensores (e.g., GPS, acelerômetro), recursos multimídia e interfaces mais naturais que aperfeiçoaram a experiência do usuário no uso destas aplicações (CÂMARA, 2012). O desenvolvimento de aplicações para esses dispositivos (ditas aplicações móveis), entretanto, não é uma atividade trivial em grande parte devido ao ecossistema heterogêneo destes dispositivos. As variações de configurações (tamanhos de telas, fabricantes, capacidade de processamento, sistemas operacionais) tornam a programação, o teste e portabilidade de aplicações custosas e onerosas, principalmente, quando o aplicativo deve rodar em mais de um modelo de fabricante (WEINBERG, 2011). A fragmentação das diversas plataformas móveis e seus respectivos sistemas operacionais gerou grandes problemas para empresas desenvolvedoras de aplicativos e até mesmo desenvolvedores independentes. Para qual plataforma desenvolver as aplicações? Quais modelos de aparelhos serão o alvo preferencial? Ou, não seria melhor desenvolver para mais de uma plataforma e modelo de aparelho de forma atingir um público alvo maior? Como fazer isso com um custo de desenvolvimento reduzido? A Figura 1 mostra uma pesquisa publicada pela International Data Corporation (IDC). Pode-se observar que no primeiro trimestre de 2013, os principais sistemas operacionais vendidos foram Android, iOS, Windows Phone e BlackBerry OS. No entanto, como este último é mais voltado ao mercado corporativo, em geral as empresas focalizam o desenvolvimento de aplicações de propósito geral apenas nas três principais plataformas.
  • 11. 2 Figura 1 - IDC Worldwide Quarterly Mobile Phone Tracker, May 2013. Fonte: (IDC, 2013) Cada uma dessas plataformas possui seu próprio kit de desenvolvimento de software (SDK), o qual permite a criação de aplicações exclusivamente destinadas a seu sistema operacional utilizando uma linguagem de programação correspondente, isto é, Java para o Android (GOOGLE, 2013), Objective-C para o iOS (APPLE, 2013) e C# para Windows Phone (MICROSOFT, 2013). Cada qual com APIsi distintas e particularidades de desenvolvimento, as quais não permitem que seja escrito somente um único código para diferentes plataformas, fazendo com que as empresas necessitem ter desenvolvedores especializados para cada sistema operacional ao desenvolverem suas aplicações. Com o intuito de facilitar e maximizar o processo de desenvolvimento de um mesmo aplicativo para diversas plataformas surgiram diversos frameworksii de desenvolvimento de aplicações móveis multiplataforma. Cada framework tem suas próprias particularidades no processo de desenvolvimento e limitações nas aplicações resultantes. Entre as ferramentas mais utilizadas podemos destacar os seguintes frameworks: PhoneGap, Sencha Touch e i Conjunto de funções previamente fornecidas para comunicação com o sistema operacional ii SDK distinto com linguagem e metodologia de desenvolvimento que permite o desenvolvimento de aplicações para diferentes plataformas através de um único projeto
  • 12. 3 Titanium (VISION MOBILE, 2012), os quais assemelham-se pelo uso da linguagem JavaScript. Entretanto, qual destas ferramentas seria a mais adequada para utilizarmos em nosso projeto multimídia? E se formos desenvolver uma aplicação web? Para responder a estas questões é necessário conhecermos a metodologia de desenvolvimento de cada um destes frameworks, para então estarmos aptos a decidir qual ferramenta fornece as melhores características requeridas pelo nosso projeto. 1.2. Objetivo Este trabalho se destina a estudar esses frameworks de desenvolvimento de aplicações móveis multiplataforma citados anteriormente fazendo um paralelo sobre a dificuldade de desenvolvimento, tempo e esforço necessário, limitações e desempenho das aplicações resultantes e o próprio processo de desenvolvimento. Dessa forma o objetivo principal deste trabalho é analisar as diferenças e limitações de três frameworks de desenvolvimento multiplataforma: Phonegap, Sencha Touch, e Titanium que estão entre os mais utilizados pelas empresas de desenvolvimento de software em 2012 (VISION MOBILE, 2012). Durante o desenvolvimento, o estudo foi dividido nos seis objetivos específicos abaixo:  Fazer um comparativo das funcionalidades oferecidas por cada framework.  Comparar os diferentes modelos de desenvolvimento utilizado pelos frameworks.  Criar uma aplicação prova de conceito utilizando cada framework estudado.  Estudar e selecionar medidas de desenvolvimento de software.  Analisar, a partir das medidas escolhidas, o desempenho nas aplicações resultantes do desenvolvimento utilizando os frameworks estudados.iii Para atingir estes objetivos, a primeira etapa deste trabalho se inicia com uma pesquisa bibliográfica visando explorar pesquisas existentes na área em estudo. Tendo como sequência um estudo a respeito das metodologias de desenvolvimento adotadas nos três frameworks que serão utilizados na etapa posterior que consiste na elaboração de uma aplicação como prova de conceito, do inglês Proof Of Concept (POC), para analisar características tais como: UXiv Design da plataforma, desempenho, facilidade de manutenção. iii Titanium, PhoneGap e Sencha Touch. iv User eXperience (UX): Remete a forma como o usuário interage com o sistema proporcionando uma experiência única com o mesmo.
  • 13. 4 Na etapa final, uma discussão é apresentada a partir das medidas de software comparativas e dos resultados obtidos com o objetivo de mostrar qual abordagem de desenvolvimento é mais vantajosa, em que momento, e para qual tipo de aplicação. 1.3. Organização do documento No Capítulo 2 deste documento, é apresentada a uma breve introdução ao mundo dos dispositivos móveis, contextualizando o leitor sobre fatos importantes que contribuíram para o surgimento da computação móvel. Em seguida, o Capítulo 2 explana sobre o processo de desenvolvimento de aplicações para dispositivos móveis, explicando os conceitos de Aplicativo Móvel, Sistemas Operacionais Móveis, bem como estratégias de desenvolvimento. O Capítulo 3 apresenta um resumo dos três frameworks estudados nesse trabalho. O Capítulo 4 apresenta a proposta deste trabalho, a metodologia seguida, descrição da aplicação prova de conceito desenvolvida e as medidas utilizadas para estabelecer um comparativo entre as ferramentas utilizadas durante seu desenvolvimento. O Capítulo 5 é apresenta um quadro comparativo com os resultados obtidos a partir das medidas estabelecidas e a conclusão deste trabalho, onde o autor expõe sua visão a respeito da utilização das ferramentas durante o desenvolvimento da aplicação prova de conceito.
  • 14. 5 2 DESENVOLVIMENTO DE APLICAÇÕES MÓVEIS 2.1. Histórico dos Dispositivos Móveis Lançado em 1997, o Symbian OS foi um dos primeiro sistema operacional móvel de grande utilização mundial, amplamente utilizado pela finlandesa Nokia em seus celulares. Em 1999, a canadense RIM (Research In Motion), hoje BlackBerry, lançou a primeira versão de seu sistema operacional móvel de mesmo nome, o Blackberry OS, o qual juntamente com seu hardware proprietário característico por utilizar-se de um teclado físico qwert, destina-se mais ao mercado corporativo (BLACKBERRY, 2013). A Microsoft, por sua vez, em 2000 lança o Windows Mobile, sua plataforma móvel, a qual 10 anos mais tarde viria a ser sucedido por seu novo sistema operacional Windows Phone. Em 2003, a Android Inc. inicia o desenvolvimento do Android, sistema operacional adquirido pela Google em 2005 e que mais tarde viria a se tornar o mais popular entre os sistemas operacionais móveis. Em 2007, a Apple lança a primeira versão do iOS, sistema operacional do até então mais cobiçado smartphone do mercado, o iPhone. Nos dias atuais, devido a ser uma plataforma aberta, de fácil utilização e customização, o Android tem sido adotado por uma grande quantidade de fabricantes de smartphones, o que culminou para hoje ser a plataforma com maior participação no mercado. (IDC, 2013) Figura 2 - Evolução dos Smartphones. (adaptada) Fonte: (VIANA, 2010)
  • 15. 6 2.2. Aplicativo Móvel Um aplicativo móvel é um software destinado a ser executado em um dispositivo móvel, como em um smartphone, e é obtido normalmente através das lojas de aplicativos existentes em cada plataforma. Este padrão de desenvolvimento e distribuição se deu com o lançamento do iPhone SDK em março de 2008 e início da App Store junto ao lançamento do iPhone 3G em julho de 2008 como resposta a quantidade de jailbreak existente, até então única forma de instalar aplicações de terceiros. (9TO5MAC STAFF, 2011) 2.3. Sistemas Operacionais Móveis Ao se utilizar smartphones, temos um sistema operacional móvel muito similar aos sistemas operacionais padrões como, por exemplo, Windows e Linux, No entanto este é bem mais simples, leve e responsável por identificar e definir as características e funções do dispositivo, tais como: teclado, e-mail, mensagem de texto, acesso a câmera, dentre outros priorizando o gerenciamento das redes sem fio e os métodos de entrada. (JANSSEN, 2010) A Figura 3 ilustra as camadas existentes em um ambiente de interação com um Mobile Operation System (MOS), isto é, um sistema operacional móvel. No nível mais alto temos o usuário, o qual não detém de nenhum conhecimento sobre o hardware ao qual está manipulando, sendo então auxiliado pela aplicação na utilização do aparelho. A aplicação por sua vez, não detém de total compreensão do funcionamento do hardware, uma vez que isto forçaria a termos o mesmo código de acesso a ele em todas as aplicações, bem como os desenvolvedores das aplicações necessitariam conhece-lo. Logo, para evitar este cenário, cabe ao Sistema Operacional a responsabilidade de fornecer uma abstração que facilite o acesso ao hardware pelas aplicações, que somente necessitarão conhecer a API fornecida para este fim. Figura 3 - Camadas de um ambiente com um MOS. Fonte: (KUCHE, 2012)
  • 16. 7 Como exemplos de MOS, temos: 2.3.1. Android Inicialmente desenvolvido pela Android Inc., a qual foi comprada pela Google em 2005, é um sistema baseado no kernel do Linux idealizado e destinado principalmente a dispositivos móveis com tela sensível ao toque. O primeiro dispositivo a utilizar o sistema da Google foi o HTC Dream, também conhecido como G1, lançamento 22 de outubro em 2008. (WILSON, 2008) A Figura 5 apresenta a estrutura do Android e suas camadas. Tendo seu núcleo desenvolvido em C e C++, o Android utiliza-se de uma máquina virtual chamada Dalvik para carregar as diversas bibliotecas de seu framework e as aplicações, tanto de sistema como de usuário, normalmente escritas em Java. Contudo também é possível utilizar C ou C++ no desenvolvimento de aplicações com auxilio da tecnologia Java Native Interface (JNI) e da ferramenta Android NDK. (SHANKLAND, 2007) Figura 4 - LG Nexus 4 com Android 4.4 KitKat. Fonte: (GOOGLE, 2013) Figura 5 - Arquitetura do Sistema Android. Fonte: (GOOGLE, 2013)
  • 17. 8 Em 23 de setembro de 2008, três anos após a assumir o desenvolvimento do sistema, a Google então lança a versão 1.0 do Android, e no mês seguinte, juntamente com a Open Handset Alliance, um grupo com atualmente formado por 84 empresas de tecnologia e comunicação, torna-o um projeto Open Source mantido sobre licença Apache. (CHEN, 2008) 2.3.2. Blackberry OS Com foco em smartphones corporativos, a canadense Research In Motion (RIM), renomeada Blackberry em janeiro de 2013, desenvolveu o Blackberry OS utilizando-se da tecnologia Java Virtual Machine (JVM). (HALLIWELL, 2013) O primeiro smartphone lançado com o SO da RIM foi o Blackberry 5810 lançado em março de 2002. Em sua última versão, o BlackBerry OS 7.1, lançado em Janeiro de 2012 conta com uma série de novos recursos dentre os quais se destacam: Hotspot wifi, serviços via NFC, chamada por wifi e radio FM. Com o lançamento do BlackBerry 10 OS, lançado em Janeiro de 2013 BlackBerry OS foi descontinuado. (INFOTECHNOLOGY, 2014) Figura 6 - BlackBerry Z10 com BlackBerry 10 OS. Fonte: (BLACKBERRY, 2013) Figura 7 - BlackBerry OS Architecture. Fonte: (OGLIARI, 2011)
  • 18. 9 O BlackBerry OS foi projetado de forma que suas aplicações rodem em uma JVM juntamente com as especificações Connected Limited Device Configuration (CLDC) e Mobile Information Device Profile (MIDP), alavancando assim o desenvolvimento e portabilidade de aplicações para a nova plataforma, uma vez que já havia um número considerável de desenvolvedores de aplicações JavaME na época. (BLACKBERRY, 2008) 2.3.3. iOS Desenvolvido pela Apple Inc, é um sistema derivado do OS X que equipa seus computadores e notebooks. Anunciado em 18 de Junho de 2007, ele foi desenvolvido originalmente para o iPhone, mas a Apple mais tarde estendeu o sistema para outros dispositivos como o iPod Touch, iPad, iPad Mini e Apple TV. (APPLE, 2007) Para que as aplicações desenvolvidas por terceiros funcionem adequadamente em hardwares de diferentes capacidades, o iOS foi arquitetado em diferentes camadas conforme ilustra a Figura 9, facilitando assim o desenvolvimento de aplicações, pois as camadas de alto nível fornecem uma abstração orientada a objeto das camadas de baixo nível. (APPLE, 2013) Figura 8 - iPhone 5s com iOS 7.1. Fonte: (APPLE, 2013) Figura 9 - iOS Arquitetura. Fonte: (APPLE, 2013)
  • 19. 10 Com seu núcleo desenvolvido em C e C++, o iOS possui também muitas aplicações e frameworks de alto nível escritos em Objective-C, a linguagem padrão utilizada pelos desenvolvedores para criação de aplicações para iOS. (APPLE, 2013) 2.3.4. Windows Phone A primeira versão do Windows Phone, o WP 7, foi lançado em 21 de outubro de 2010 em mais de 30 países juntamente com 10 aparelhos de diversos fabricantes como LG, SANSUMG, HTC e outros. (RICKER, 2010) Desenvolvedores podem utilizar VB, C#, C++ ou HTML5/CSS/JavaScript para desenvolver suas aplicações para Windows Phone. Sua interface é baseada no sistema de design da Microsoft conhecido como Metro. A série Windows Phone é sucessora do Windows Mobile, entretanto não possui compatibilidade com aplicações do antigo OS. (ZIEGLER, 2010) Figura 10 - HTC 8XT com Windows Phone 8.Fonte: (HTC, 2014) Figura 11 - Arquitetura do Sistema Windows Phone 8. Fonte: (MICROSOFT, 2013)
  • 20. 11 O Windows Phone 8, atual versão, foi lançado em 29 de outubro de 2012 e substituiu a antiga arquitetura baseada no Windows-CE por uma baseada no kernel do Windows NT, a qual também é encontrada no Windows 8, facilitando assim a portabilidade de aplicações entre ambas as plataformas e ainda permitindo executar aplicações do WP7. (RUBINO, 2012) 2.4. Estratégias de Desenvolvimento Ao iniciar no desenvolvimento de aplicações móveis, muitas empresas e profissionais autônomos enfrentam uma difícil decisão: qual a abordagem de desenvolvimento a utilizar. De acordo com Charl e Leroux (2011), um aplicativo móvel pode ser desenvolvido utilizando uma das três seguintes estratégias: Desenvolvimento Nativo, o qual utiliza ferramentas e linguagem fornecidas pela empresa responsável pela plataforma; Desenvolvimento Web, que utiliza de linguagem HTML5, CSS e JavaScript; e Desenvolvimento Híbrido, o qual utiliza-se uma linguagem de script que será interpretada por uma camada intermediária pré-instalada no sistema ou embutida na própria aplicação, sendo esta responsável por interagir com o Sistema. A Figura 12 apresenta uma visão geral das vantagens e desvantagens de cada estratégia de desenvolvimento. Figura 12 - Pros e Contras das 3 estratégias de desenvolvimento. Fonte: (NOKIA, 2013)
  • 21. 12 2.4.1. Aplicação Nativa São aplicações instaladas a partir das lojas de aplicativos oficiais e desenvolvidas utilizando a linguagem e ferramentas fornecidas pela empresa responsável por cada plataforma. Para Android, desenvolve-se em Java utilizando o Eclipse com plugin ADT ou o Android Studio, para iOS em Objective-C utilizando o Xcode e para Windows Phone em C# utilizando o Visual Studio. (BAYTECH SERVICES, 2012) 2.4.2. Aplicação Web Desenvolvidas utilizando tecnologias web como HTML5, CSS e JavaScript, são aplicações web comum, mas especialmente desenhadas para se adaptarem a telas menores. Sua principal vantagem é a portabilidade entre as plataformas, uma vez que todas as plataformas disponibilizam um browser, as aplicações web oferecem a premissa “Write Once, run Anywhere”. (BAYTECH SERVICES, 2012) 2.4.3. Aplicação Hibrida Assim como aplicações nativas, estas são baixadas e instaladas através das lojas oficiais, pois uma das exigências dessa loja é que todo código executado esteja na aplicação. Tendo como diferencial não serem desenvolvidas utilizando a linguagem e SDK oficial, mas sim ferramentas de terceiros tais como PhoneGap com HTML5/JavaScript, Xamarin Mono com C#, Titanium com JavaScript, dentre outros. (BAYTECH SERVICES, 2012) Charl e Leroux (2011) discutem sobre pontos fortes e fracos de abordagens nativas e web e inicia abordando a importância do JavaScript como ferramenta de comunicação com o sistema, bem como a tecnologia em sua máquina virtual, a qual ocasionou o que referenciam como a nova linha de frente da guerra dos navegadores. Em seguida são abordadas algumas características da utilização de CSS em plataformas móveis e a utilização de um recurso chamado Aceleração por Hardware para melhorar sua utilização. Os autores ainda ressaltam que a distância entre a camada nativa e o navegador embutido na aplicação é de apenas um nível de compilação, ou seja, para adicionar capacidades nativas a ele, basta recompilá-lo para empacotar novas funcionalidades nativas. Enfatizando que, se um navegador não suporta uma capacidade nativa, não é porque ele não pode ou que não irá, mas significa apenas que ela não esta feita ainda.
  • 22. 13 Trabalhos como (IBM CORPORATION, 2012) e (BAYTECH SERVICES, 2012) se propõem não a indicar qual a melhor abordagem, mas a retratar os pontos fortes e fracos de cada uma através de comparativo de suas características e funcionalidades oferecidas e assim mostrar que a melhor abordagem vai depender na natureza do produto a ser desenvolvido. Com maior foco numa visão geral sobre os XMTs atuais comparando suas vantagens e desvantagens, os autores OHRT e TURAU (2012) apresentam uma definição detalhada a respeito dos três aspectos sobre aplicações em smartphones que são importantes para o entendimento das ferramentas de desenvolvimento multiplataforma, os quais são: O modo como aplicações são instaladas, sua estrutura interna e seus elementos de interface com usuário. Além disso, é apresentado um breve resumo sobre nove ferramentas de desenvolvimento multiplataforma, bem como dois gráficos demostrando a estrutura de cada uma, características e funcionalidades de desenvolvimento e as plataformas suportadas por cada uma delas. Por fim, este trabalho apresenta uma avaliação de desempenho utilizando-se de uma aplicação bem básica, apenas uma tela com um texto e ícone, compilada utilizando as nove ferramentas abordadas e avaliada com as medidas de software: tamanho da aplicação, o uso de memória RAM, tempo de inicialização do emulador e no hardware.
  • 23. 14 3 DESENVOLVIMENTO MULTIPLATAFORMA Desenvolver uma mesma aplicação para diversas plataformas utilizando as ferramentas oficiais é uma tarefa muito trabalhosa, que depende de muito tempo, esforço, e conhecimentos distintos sobre cada plataforma por parte dos desenvolvedores. Anthony Wasserman (2010) propõe duas formas de reduzir estes esforços de desenvolvimento de uma mesma aplicação para plataformas distintas:  Utilizar tecnologias web e criar uma aplicação web;  Utilizar ferramentas de desenvolvimento multiplataforma (XMT) para desenvolver somente um código que gerará uma aplicação para cada plataforma. Uma visão geral sobre a utilização de tecnologias web no desenvolvimento de aplicações móveis multiplataforma é apresentada por (CHARL e LEROUX, 2011), com foco principal em analisar se elas podem se equiparar à experiência de usuário oferecida pela interface nativa da plataforma. Enquanto que (OHRT e TURAU, 2012) direcionam o foco de seu trabalho nas ferramentas de desenvolvimento móveis multiplataforma (XMTs) atuais comparando suas vantagens e desvantagens. Com base nesses estudos, os tópicos seguintes apresentam uma pesquisa sobre os frameworks de desenvolvimento multiplataforma mais utilizados nos dias atuais. 3.1. Frameworks de Desenvolvimento Segundo Fayad e Schmidt (1997), um Framework é um aplicação semi-completa, reusável que pode ser especializada para produzir aplicações customizadas. Em um contexto Orientado a Objetos (OO) é utilizando técnicas de reuso baseado em classes e bibliotecas. No contexto do desenvolvimento de aplicações multiplataforma, os frameworks podem ser entendidos como blocos de códigos pré-implementados que serão reutilizados no momento da compilação do código escrito pelo desenvolvedor para gerar a aplicação final. (FAYAD E e SCHMIDT D., 1997) Durante o desenvolvimento deste trabalho são utilizados os seguintes frameworks de desenvolvimento multiplataforma para dispositivos móveis: PhoneGap (PHONEGAP, 2013), Sencha Touch (SENCHA, 2013) e Titanium (APPCELERATOR, 2014) com suas respectivas logos ilustrados na Figura 13.
  • 24. 15 Figura 13 - Frameworks de Desenvolvimento Multiplataforma 3.1.1. PhoneGap O PhoneGap foi desenvolvido pela Nitobe Software, comprada pela Adobe em outubro de 2011. Foi doado para a Apache no mesmo ano com objetivo de fomentar o desenvolvimento do projeto de código aberto facilitando a contribuição de grandes empresas. Visando evitar problemas com propriedade intelectual, o projeto foi renomeado para Apache Cordova como referência a Cordova Street em Vancouver, rua onde localizava-se o escritório da Nitobi Software. Assim o PhoneGap e Apache Cordova tornaram-se produtos distintos, e embora este último seja o motor do atual PhoneGap da Adobe, na prática, por algum tempo o que haverá de diferente entre eles será apenas o nome do pacote de download. (BRIAN, 2012) Figura 14 - PhoneGap helloworld exemplo (index.html) Em sua atual versão, o PhoneGap 3.4 possui suporte a uma grande variedade de plataformas, dentre as quais podemos destacar, Android, iOS, Windows Phone 7 e 8, BlackBerry OS e 10, Symbian, Firefox OS, Tizen, Bada, entre outros. (PHONEGAP, 2013)
  • 25. 16 Utilizando HTML5, CSS e JavaScript para desenvolver suas aplicações, o PhoneGap é ideal para quem já possui conhecimento em tecnologias web. Através do JavaScript e de uma camada de software nativo uma aplicação desenvolvida em Phonegap com tecnologias web pode adquirir acesso a recursos nativos tornando-se uma aplicação híbrida. (INTEL, 2012) 3.1.2. Titanium Atualmente em sua versão 3.2.2, o Titanium é um framework desenvolvido pela Appcelerator que permite desenvolver aplicações verdadeiramente nativas, aplicações híbridas e aplicações móveis web com uma única base de código. (APPCELERATOR, 2014) Utilizando-se de JavaScript para desenvolvimento de suas aplicações, o Titanium segue uma filosofia de desenvolvimento diferenciada pois ele não se propõe a ser Write Once, Run Everywhere (WORE), sua proposta é Write Once, Adapt Everywere (WOAE). Isto acontece uma vez que o Titanium compila objetos nativos, tais como botões e campos de texto, em código nativo da plataforma alvo: Java para Android ou Objective-C para iOS. Enquanto que a lógica de negócio da aplicação permanece em JavaScript para ser interpretada em tempo de execução. Desta forma interface da aplicação resultante é igual a de uma aplicação nativa tanto em design quanto em responsibilidade. (ALCOCER, 2013) Figura 15 - Titanium helloworld exemplo (app.js) Atualmente, o Titanium suporta apenas Android, iOS e Tizen, pois a forma como o ele funciona torna complexo adicionar suporte a novas plataformas. (APPCELERATOR, 2013)
  • 26. 17 3.1.3. Sencha Touch Este framework de desenvolvimento foi anunciado pela antiga empresa Ext JS, a partir da combinação de três de seus produtos, o Ext JS, JQTouch e o Raphaël em 14 de janeiro de 2010, mesmo dia em que mudou seu nome para Sencha. (ELIAS, 2010) A Figura 16 ilustra um exemplo de código JavaScript responsável pela definição da interface principal da aplicação. Este framework possui um conjunto de componentes de interface gráfica otimizados para interações com toque, e embora esta interface seja criada com HTML5 e CSS, ela é definida durante o desenvolvimento utilizando JavaScript. Atualmente, o Sencha Touch 2 oferece oito temas para que sua aplicação torne-se mais imersa com o ambiente gráfico da plataforma para a qual a aplicação será gerada, na Figura 17 são apresentados interfaces que nos permitem ver uma mesma aplicação com o look and feelv de diferentes plataformas móveis. (SENCHA, 2013) . Figura 16 - Sencha Touch 2 helloworld exemplo (Main.js) v Look and fell: Define a aparência e comportamentos de uma entidade baseado em diversos aspectos, dentre os quais destaca-se os gráficos, do ambiente onde a mesmo encontra-se imerso.
  • 27. 18 Figura 17 - Temas oferecidos pelo Sencha Touch 2 Já possuindo suporte a Android, iOS, BlackBerry, WindowsPhone, em sua versão 2.3, lançada em 1 de outubro de 2013, o Sencha Touch incluiu também o suporte ao Tizenvi e o suporte ao Apache Cordova como pacote de acesso a características nativas. (AGRAWAL, 2013) vi Sistema operacional móvel desenvolvido open source pela Samsung. Site oficial: www.tizen.org
  • 28. 19 4 PROPOSTA Este trabalho destina-se a analisar as vantagens, diferenças e limitações de três frameworks de desenvolvimento multiplataforma: Phonegap, Sencha Touch, e Titanium que estão entre os mais populares para os desenvolvedores (VISION MOBILE, 2012). O objetivo de estudar os frameworks de desenvolvimento de aplicações móveis multiplataforma citados anteriormente é elaborar um paralelo sobre a dificuldade de desenvolvimento, tempo e esforço necessário, limitações e desempenho das aplicações resultantes. 4.1. Metodologia O presente trabalho possui caráter de Pesquisa Comparativa a qual segundo (HEIDENHEIMER e HUGH HECLO, 1983) é o ato de comparar duas ou mais coisas, com vista a descobrir algo sobre uma ou todas as coisas que estão sendo comparadas. Na primeira etapa deste trabalho, foi feita uma pesquisa bibliográfica a fim de obter o máximo de informações sobre pesquisas já existentes no campo de desenvolvimento de aplicações móveis multiplataforma e encontrar critérios que foram pouco abordados e possam ser incluídos no presente estudo. Na segunda etapa, é realizado um estudo sobre as metodologias de desenvolvimento de três das ferramentas mais utilizadas no ano de 2012vii , características relevantes, limitações de desenvolvimento impostas e a categoria em que cada aplicação resultante se enquadra: aplicação Nativa, Web ou Híbrida (IBM CORPORATION, 2012). Dando continuidade ao estudo, na terceira etapa temos uma análise sobre as três categorias de aplicações abordadas no título deste trabalho, características tais como UX Designviii da plataforma, desempenho, facilidade de manutenção, esforço de desenvolvimento, dentre outras medidas analisadas e para isso uma prova de conceito é desenvolvida durante esta etapa, a qual consiste de uma mesma aplicação desenvolvida nas três ferramentas. Por fim, na quarta etapa, uma discussão a partir das medidas comparativas e dos resultados obtidos é concebida com o objetivo de mostrar qual das abordagens de desenvolvimento foi mais vantajosa, em que momento, e para qual tipo de aplicação. vii De acordo com pesquisa publicada pela empresa VISION MOBILE. viii User eXperience Design: Remete a forma como o usuário interage com o sistema proporcionando uma experiência única com o mesmo.
  • 29. 20 4.2. Escopo da Aplicação Prova de Conceito Este estudo visa analisar a utilização de recursos multimídia, sensores e comunicação externa em aplicações implementadas com os frameworks abordados, pois são características comuns a aplicativos móveis atuais e nem sempre são suportados por aplicações Web. Para alcançar este objetivo, a aplicação proposta possui apenas uma interface com um botão de acesso à câmera e uma área destinada a exibir a foto capturada. Para utilização do acelerômetro, um movimento rápido para esquerda ou direita girando o aparelho deverá alterar a exibição das diversas imagens capturadas. Por fim, a abordagem de comunicação externa é feita por um segundo botão que permitirá o compartilhamento de sua atual localização, obtida a partir do GPS, em uma rede social. O Google+ foi a rede social escolhida. Dessa forma, a aplicação proposta aborda a utilização de um recuso multimídia (câmera), sensores (acelerômetro e GPS) e comunicação externa (compartilhamento da localização do usuário na rede social da Google), bem como, exigiu a elaboração de sua interface gráfica através das ferramentas e APIs disponibilizadas por cada framework. 4.3. Medidas de Software Para a comparação dos frameworks foram adotadas as medidas de software ilustradas na Tabela 1. Medida Unidade Processo de Obtenção Ferramentas Importância Tamanho da aplicação KBs Analisando-se as propriedades do arquivo final gerado. Gerenciador de arquivos do Mac (Finder) Tempo de download e espaço necessário para instalação. Consumo de memória MBs Após aplicação ser inicializada, verifica-se o valor em uma das ferramentas. Gerenciador de Aplicativos Android,xCode Instruments Significante para usuários que utilizam muitos aplicativos simultaneamente. Tempo de carregamento ms Tempo decorrido para que a aplicação apresente a tela inicial. ADT LogCat, xCode Timer Profile Influi diretamente na experiência do usuário. Lines of Code (LOC) Valor numérico Observando o número da ultima linha no editor de texto. Editor de Texto Esforço de desenvolvimento e legibilidade. Number of Files (NOF) Valor numérico Observando o número da ultima linha no editor de texto. Editor de Texto Legibilidade e manutenção. Tabela 1 - Medidas de software
  • 30. 21 4.4. Materiais Todo o desenvolvimento das aplicações Android e iOS utilizando cada um dos frameworks abordados foi feita utilizando um notebook HP Probook com processador i3 Dual-Core 2.4 GHz e 8GB de memória RAM com sistema operacional Mac OSX Mavericks 10.9.2 instalado nativamente. Para testar as aplicações Android, foi utilizado um smartphone Google Nexus 4, o qual possui processador Qualcomm Snapdragon S4 Pro Quad-Core 1.5GHz e 2GB de memória RAM com sistema operacional Android Kitkat 4.4.2. Para as aplicações iOS, devido as dificuldades de obtenção de um certificado de desenvolvedor, os testes restringiram-se ao iOS Simulator no mesmo notebook.
  • 31. 22 5 RESULTADO E DISCUSSÃO Para cada um dos três frameworks abordados neste trabalho, foram geradas duas versões do aplicativo prova de conceito, um para cada plataforma móvel alvo, totalizando seis aplicações: três para Android e três para iOS. 5.1. Comparativo das características dos frameworks abordados A Tabela 2 ilustra os dados obtidos a partir do site oficial de cada Framework. PhoneGap Sencha Touch Titanium Licença Open Source Closed Source com versão grátis Open Source Look and fell Web Web customizado com Temas Nativo Renderização de Interface WebView WebView Sistema Operacional API para Interface HTML5 e CSS JavaScript JavaScript API para Acesso a recursos Nativos Apache Cordova Sencha SDK Apache Cordova Titanium SDK Linguagem de Programação HTML5/CSS/JavaScript JavaScript JavaScript Suporte a Bibliotecas JavaScript Sim Sim Não IDE Não Sim Sim Disponibilidade da IDE - Paga Gratuita Sensores Acelerômetro, Câmera, Compasso, Conexão HTTP, Contatos, Geolocalização, Notificação, Armazenamento Acelerômetro, Câmera, Compasso, Conexão HTTP, Contatos, Geolocalização, Notificação, Armazenamento Acelerômetro, Câmera, Compasso, Conexão HTTP, Contatos, Geolocalização, Notificação, Armazenamento Plataformas Alvo iOS, Android, Windows Phone, BlackBerry, Bada, WebOS, Symbian, Firefox OS e Tizen iOS, Android, Windows Phone, BlackBerry e Tizen iOS, Android e Tizen Tabela 2 - Comparativo de características dos frameworks
  • 32. 23 5.2. Desenvolvimento da aplicação POC A Tabela 3 resume informações sobre o processo de desenvolvimento. Ambiente de desenvolviment o (IDE) Curva de aprendizage m Vantagens Desvantagens Código fonte PhoneGap Editor de texto Sublime Baixa Definição da interface com HTML e CSS. Diversidade de plugins. Falta de uma IDE dedicada e oficial. Anexo A Sencha Touch Editor de texto Sublime Média/Alta Temas que simulam a interface nativa. Suporte ao Cordova. API para definição de interfaces confusa e pouco exemplificada. Anexo B Titanium Titanium Studio Baixa Auxílio da IDE e exemplos na documentação Não poder remover a SplashScreen pois nela ocorre o carregamento da biblioteca do Titanium. Anexo C Tabela 3 - Comparativo a partir do desenvolvimento da aplicação POC Na Figura 18 temos as interfaces finais das aplicações no Android e a Figura 19 apresenta as interfaces finais da aplicação no iOS. Figura 18 - Aplicações Android, respectivamente PhoneGap, Sencha Touch e Titanium
  • 33. 24 Figura 19 - Aplicações iOS, respectivamente PhoneGap, Sencha Touch e Titanium 5.3. Comparativo de desempenho A seguir é apresentada uma análise das seis aplicações finais com base nas medidas de software apresentadas na sessão 4.3. Android Tamanho da aplicação Android .apk (MB) Tamanho da aplicação iOS .ipa (MB) LOC NOF Titanium 9,5 2,6 ~120 3 PhoneGap 1,7 2,4 ~170 3 SenchaTouch 2,1 2,7 ~190 2 Tabela 4 - Comparativo segundo métricas de software pré-estabelecidas Figura 20 - Consumo de memória no Android 0 10 20 30 40 50 60 PhoneGap Sencha Touch Titanium
  • 34. 25 Figura 21 - Consumo de memória no iOS Figura 22 - Tempo de carregamento no Android Figura 23 - Tempo de carregamento no iOS 0 5 10 15 20 25 30 35 40 45 PhoneGap Sencha Touch Titanium 0 0,5 1 1,5 2 2,5 PhoneGap Sencha Touch Titanium 0 0,1 0,2 0,3 0,4 0,5 0,6 PhoneGap Sencha Touch Titanium
  • 35. 26 5.4. Discussão Com base em todo o processo de desenvolvimento, a característica mais impactante foi a elaboração da interface da aplicação POC com o framework Sencha Touch. Apesar de ele trabalhar com JavaScript assim como os demais, a construção de sua interface assemelhasse a um arquivo JSONix , possuindo elementos encadeados em diversos níveis, cada um com seus respectivos atributos. Isto, aliado a falta de exemplificações em sua documentação, fez com que sua elaboração fosse complexa, pouco intuitiva e com alta curva de aprendizado. Nesse quesito de interface, o PhoneGap se destacou por ter possibilitado o uso de tecnologias web, ou seja, utilizou-se exclusivamente de HTML e CSS na sua construção, o que tornou o processo bastante sólido e rápido. Por sua vez, o Titanium se mostrou a melhor ferramenta para construção de interface, uma vez que ela foi toda trabalhada de modo semelhante a de uma aplicação web, com o corpo da interface criado através de uma estrutura bastante simplificada e intuitiva do HTML em um arquivo XML e uma variação do CSS, chamado de TSS que definiu os estilos dos componentes. A lógica da aplicação foi feita utilizando JavaScript nas três aplicações, entretanto no Sencha Touch a sintaxe da definição de funções foge ao padrão e a definição de variáveis com escopo global necessitou de algumas horas de pesquisa. O ponto positivo para este framework, foi possibilitar de utilização do Apache Cordova como módulo de acesso as APIs do sistema. Com isto, os plugins de acesso a cada sensor e mais da metade do código escrito para a aplicação do PhoneGap puderam ser reutilizados com poucas modificações. O PhoneGap possui uma grande comunidade, o que facilita muito o trabalho do desenvolvedor ao deparar-se com um problema durante o desenvolvimento de sua aplicação. Além disso, a possibilidade de extensão através de plugins oficiais e criados pela comunidade, simplifica de forma considerável a criação de aplicações que necessitem de acesso a recursos multimídia e sensores. Apesar do Titanium não fornecer essa extensibilidade de plugins, sua API já é bastante rica, intuitiva e exemplificada quanto a utilização dos mesmos recurso. Por fim, o fornecimento de uma IDE gratuita também contribuiu para que o Titanium tenha sido considerado o framework mais eficiente no desenvolvimento da aplicação proposta neste estudo, com menor esforço, baixa curva de aprendizado e maior desempenho. ix JSON: Formato leve para troca de dados textuais. Site oficial: http://www.json.org
  • 36. 27 6 CONCLUSÃO Este trabalho visou estudar, analisar e comparar três frameworks de desenvolvimento de aplicações multiplaforma para dispositivos móveis. Foram estudadas as ferramentas Sencha, Titanium e Phonegap através da leitura de artigos, da documentação das ferramentas e da construção de uma aplicação prova de conceito que utiliza interface gráfica, sensores, acesso a recursos multimídia e comunicação com um serviço Web. A aplicação foi codificada em cada framework e duas versões forma geradas para as plataformas Android e iOS totalizando seis versões do mesmo aplicativo. As medidas de software pré-estabelecidas foram então computadas. Com base nos resultados obtidos, bem como no estudo realizado no início deste trabalho sobre as características de cada framework utilizado, para a aplicação proposta, o framework Titanium foi considerado como o mais eficiente no tocante à curva de aprendizado, à riqueza da documentação, ao esforço de desenvolvimento, e ao desempenho das aplicações geradas. Um trabalho futuro decorrente desta pesquisa é analisar qual dos frameworks se destaca em relação à curva de aprendizagem com mais programadores de perfis distintos quanto ao conhecimento técnico. Além disso, as medidas foram capturadas em único dispositivo Android e no emulador do iOS. Assim uma extensão possível do trabalho é analisar a performance em mais dispositivos reais.
  • 37. 28 7 ANEXO A – CÓDIGO FONTE DA APLICAÇÃO POC NO PHONEGAP Figura 24 - PhoneGap código fonte, arquivo index.html Figura 25 - PhoneGap código fonte, arquivo index.js parte 1
  • 38. 29 Figura 26 - PhoneGap código fonte, arquivo index.js parte 2
  • 39. 30 8 ANEXO B - CÓDIGO FONTE DA APLICAÇÃO POC NO SENCHA TOUCH Figura 27 - Sencha Touch código fonte, arquivo Main.js da pasta View
  • 40. 31 Figura 28 - Sencha Touch código fonte, arquivo Main.js da pasta Controller parte 1
  • 41. 32 Figura 29 - Sencha Touch código fonte, arquivo Main.js da pasta Controller parte 2
  • 42. 33 9 ANEXO C - CÓDIGO FONTE DA APLICAÇÃO POC NO TITANIUM Figura 30 - Titanium código fonte, arquivo index.xml Figura 31 - Titanium código fonte, arquivo index.tss Figura 32 - Titanium código fonte, arquivo index.js parte 1
  • 43. 34 Figura 33 - Titanium código fonte, arquivo index.js parte 2
  • 44. 35 10 REFERÊNCIAS 9TO5MAC STAFF. Jobs’ original vision for the iPhone: No third-party native apps. 9To5Mac, 2011. Disponivel em: <http://9to5mac.com/2011/10/21/jobs-original-vision-for-the-iphone-no-third-party- native-apps>. Acesso em: 24 Junho 2013. AGRAWAL, G. Announcing Sencha Touch 2.3 - Touch Grid, Cordova Support, and New Themes. Sencha, 2013. Disponivel em: <http://www.sencha.com/blog/announcing-sencha-touch-2-3-html5- for-ios7-touch-grid-cordova-support-more/>. Acesso em: 30 Março 2014. ALCOCER, R. But I Thought Titanium Was Cross Platform!. Appcelerator, 2013. Disponivel em: <http://www.appcelerator.com/blog/2013/07/but-i-thought-titanium-was-cross-platform/>. Acesso em: 31 Março 2014. APPCELERATOR. Titanium SDK 3.2.0 General Availability - 12/20/2013. Appcelerator, 2013. Disponivel em: <http://docs.appcelerator.com/titanium/release-notes/?version=3.2.0.GA>. Acesso em: 31 Março 2014. APPCELERATOR. Titanium SDK & Titanium Studio. Appcelerator Docs, 2014. Disponivel em: <http://docs.appcelerator.com/titanium/latest/>. Acesso em: 31 Março 2014. APPLE. iPhone Delivers Up to Eight Hours of Talk Time. Apple, 2007. Disponivel em: <http://www.apple.com/pr/library/2007/06/18iPhone-Delivers-Up-to-Eight-Hours-of-Talk- Time.html>. Acesso em: 29 Março 2013. APPLE. iOS Dev Center, 2013. Disponivel em: <https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/chapters/I ntroduction.html>. Acesso em: 01 Junho 2013. APPLE. About the iOS Technologies. iOS Developer library, 2013. Disponivel em: <https://developer.apple.com/library/ios/documentation/miscellaneous/conceptual/iphoneostecho verview/Introduction/Introduction.html>. Acesso em: 29 Março 2014. APPLE. Develop Apps for iOS. Apple Developers, 2013. Disponivel em: <https://developer.apple.com/technologies/ios/>. Acesso em: 29 Março 2014. BAYTECH SERVICES. Native, Hybrid or Mobile Web – What’s Best for your Mobile Apps. North Andover, MA - USA, p. 6. 2012. BLACKBERRY. Java ME and Java APIs for BlackBerry. BlackBerry, 2008. Disponivel em: <http://docs.blackberry.com/en/developers/deliverables/5827/Java_ME_and_Java_APIs_for_BB_44 6980_11.jsp>. Acesso em: 25 Março 2014. BLACKBERRY. BlackBerry, 2013. Disponivel em: <http://ca.blackberry.com/company.html>. Acesso em: 02 jun. 2013. BRIAN. PhoneGap, Cordova, and what’s in a name? Phonegap Blog, 2012. Disponivel em: <http://phonegap.com/2012/03/19/phonegap-cordova-and-what%E2%80%99s-in-a-name/>. Acesso em: 30 Março 2014.
  • 45. 36 CÂMARA, M. Como o iPhone mudou o rumo dos smartphones. Techtudo, 2012. Disponivel em: <http://www.techtudo.com.br/artigos/noticia/2012/06/como-o-iphone-mudou-o-rumo-dos- smartphones.html>. Acesso em: 18 jun. 2013. CHARL, A.; LEROUX, B. Mobile Application Development: Web vs. Native. Communic Ations of the Acm, Maio 2011. 49-53. CHEN, J. Android is now Open Source. Androd Developers Blog, 2008. Disponivel em: <http://android-developers.blogspot.com.br/2008/10/android-is-now-open-source.html>. Acesso em: 24 Março 2014. ELIAS, A. Ext JS + jQTouch + Raphaël = Sencha. Sencha, 2010. Disponivel em: <http://www.sencha.com/blog/ext-js-jqtouch-raphael-sencha>. Acesso em: 30 Março 2014. FAYAD E, M.; SCHMIDT D., C. Object-oriented Application frameworks. Communications of the ACM, 1997. 10. GOOGLE. Android Developers, 2013. Disponivel em: <http://developer.android.com/tools/index.html>. Acesso em: 01 Junho 2013. HALLIWELL, D. Research In Motion is Now BlackBerry. BlackBerry Blog, 2013. Disponivel em: <http://blogs.blackberry.com/2013/01/rim-renamed-blackberry/>. Acesso em: 25 Março 2013. HEIDENHEIMER, A. J.; HUGH HECLO, C. T. A. Comparative Public Policy. [S.l.]: St. Martin's Press, 1983. HTC. HTC-8XT. HTC, 2014. Disponivel em: <http://www.htc.com/us/smartphones/htc-8xt/>. Acesso em: 20 maio 2014. IBM CORPORATION. Native, web or hybrid mobile-app development. Somers, NY - USA, p. 10. 2012. IDC. Android and iOS Combine for 92.3% of All Smartphone Operating System Shipments in the First Quarter While Windows Phone Leapfrogs BlackBerry, According to IDC, 16 Maio 2013. Disponivel em: <http://www.idc.com/getdoc.jsp?containerId=prUS24108913>. Acesso em: 25 Maio 2013. INFOTECHNOLOGY. The BlackBerry Smartphone Series. HubPages, 2014. Disponivel em: <http://infotechnology.hubpages.com/hub/The-BlackBerry-Smartphone-Series>. Acesso em: 25 Março 2014. INTEL. The Development of Mobile Applications using HTML5 and PhoneGap* on Intel® Architecture- Based Platforms. Intel Developer Zone, 2012. Disponivel em: <http://software.intel.com/en- us/articles/the-development-of-mobile-applications-using-html5-and-phonegap-on-intel- architecture-based>. Acesso em: 30 Março 2014. JANSSEN, C. Mobile Operating System (Mobile OS). Techopedia, 2010. Disponivel em: <http://www.techopedia.com/definition/3391/mobile-operating-system-mobile-os>. Acesso em: 24 Junho 2013. MICROSOFT. Windows Phone Dev Center, 2013. Disponivel em: <http://msdn.microsoft.com/library/windowsphone/develop/ff402529(v=vs.105).aspx>. Acesso em: 01 Junho 2013.
  • 46. 37 NOKIA. Cross Platform Mobile Architecture. Nokia Developers, 2013. Disponivel em: <http://developer.nokia.com/community/wiki/Cross_Platform_Mobile_Architecture>. Acesso em: 23 maio 2014. OGLIARI, R. BlackBerry e Android usam Java, mas JavaME? itWeb, 2011. Disponivel em: <http://itweb.com.br/blogs/blackberry-e-android-usam-java-mas-javame/>. Acesso em: 26 maio 2014. OHRT, J.; TURAU, V. Cross-Platform Development Tools for Smartphone Applications. Computing Practices, Setembro 2012. 72-79. PHONEGAP. Platform Support. PhoneGap Documentation, 2013. Disponivel em: <http://docs.phonegap.com/en/edge/guide_support_index.md.html#Platform%20Support>. Acesso em: 30 Março 2014. RICKER, T. Microsoft announces ten Windows Phone 7 handsets for 30 countries: October 21 in Europe and Asia, 8 November in US (Update: Video!). Engadget, 2010. Disponivel em: <http://www.engadget.com/2010/10/11/microsoft-announces-ten-windows-phone-7-handsets-for- 30-countrie/>. Acesso em: 29 Março 2014. RUBINO, D. Microsoft officially announces Windows Phone 8. WP Central, 2012. Disponivel em: <http://www.wpcentral.com/microsoft-officially-announces-windows-phone-8>. Acesso em: 29 Março 2014. SENCHA. Sencha Touch - Features. Sencha, 2013. Disponivel em: <http://www.sencha.com/products/touch/features/>. Acesso em: 30 Março 2014. SHANKLAND, S. Google's Android parts ways with Java industry group. CNET, 2007. Disponivel em: <http://www.cnet.com/news/googles-android-parts-ways-with-java-industry-group/>. Acesso em: 24 Março 2014. VIANA, W. C. Mobilité et sensibilité au contexte pour la gestion de documments multimédias personnels: CoMMediA., Universit´e Joseph-Fourier - Genoble, 02 Fevereiro 2010. VISION MOBILE. Cross-Platform Developer Tools 2012. Vision Mobile Reserach. Londres, p. 97. 2012. WASSERMAN, A. Software Engineering Issues for Mobile Application Development. Proc. FSE/SDP Workshop Future of Software Eng. Research (FoSER 10), Moffett Field, 2010. WEINBERG, D. Considerations for Developing Applications for Smartphones. Opposing Views, 2011. Disponivel em: <http://science.opposingviews.com/considerations-developing-applications- smartphones-12052.html>. Acesso em: 19 jun. 2013. WILSON, M. T-Mobile G1: Full Details of the HTC Dream Android Phone. gizmodo, 2008. Disponivel em: <http://gizmodo.com/5053264/t+mobile-g1-full-details-of-the-htc-dream-android-phone>. Acesso em: 24 Março 2014. ZIEGLER, C. Microsoft talks Windows Phone 7 Series development ahead of GDC: Silverlight, XNA, and no backward compatibility. Endgadget, 2010. Disponivel em: <http://www.engadget.com/2010/03/04/microsoft-talks-windows-phone-7-series-development- ahead-of-gdc/>. Acesso em: 29 Março 2014.