46
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

UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

Embed Size (px)

DESCRIPTION

UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS Monografia apresentada em 11/06/2014 por Édipo da Silva Souza para conclusão do curso de Sistemas e Mídias Digitais na Universidade Federal do Ceará.

Citation preview

Page 1: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 2: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

É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

Page 3: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

É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)

Page 4: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.

Page 5: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.

Page 6: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 7: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 8: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 9: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 10: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.

Page 11: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 12: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.

Page 13: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.

Page 14: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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)

Page 15: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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)

Page 16: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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)

Page 17: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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)

Page 18: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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)

Page 19: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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)

Page 20: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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)

Page 21: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.

Page 22: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.

Page 23: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.

Page 24: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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)

Page 25: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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)

Page 26: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.

Page 27: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 28: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.

Page 29: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 30: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.

Page 31: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 32: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 33: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 34: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 35: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 36: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.

Page 37: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 38: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

29

Figura 26 - PhoneGap código fonte, arquivo index.js parte 2

Page 39: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 40: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

31

Figura 28 - Sencha Touch código fonte, arquivo Main.js da pasta Controller parte 1

Page 41: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

32

Figura 29 - Sencha Touch código fonte, arquivo Main.js da pasta Controller parte 2

Page 42: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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

Page 43: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

34

Figura 33 - Titanium código fonte, arquivo index.js parte 2

Page 44: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.

Page 45: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.

Page 46: UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS

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.