Successfully reported this slideshow.
UNIVERSIDADE FEDERAL DO CEARÁ
INSTITUTO UFC VIRTUAL
CURSO DE SISTEMAS E MÍDIAS DIGITAIS
ÉDIPO DA SILVA SOUZA
UMA ANÁLISE C...
ÉDIPO DA SILVA SOUZA
UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO
MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS
Mo...
ÉDIPO DA SILVA SOUZA
UMA ANÁLISE COMPARATIVA DE FERRAMENTAS DE DESENVOLVIMENTO
MULTIPLATAFORMA PARA DISPOSITIVOS MÓVEIS
Mo...
RESUMO
Frameworks de desenvolvimento multiplataforma (do inglês, multi-platform ou cross-
platform) para dispositivos móve...
ABSTRACT
Crossplatform development frameworks for mobile applications are tools that allow
developers to create the same a...
LISTA DE FIGURAS
Figura 1 - IDC Worldwide Quarterly Mobile Phone Tracker, May 2013. Fonte: (IDC, 2013).................. 2...
LISTA DE TABELAS
Tabela 1 - Medidas de software .............................................................................
LISTA DE ABERVIATURAS E SIGLAS
ADT ANDROID DEVELOPMENT TOOLS
API APPLICATION PROGRAMMING INTERFACE
CLDC CONNECTED LIMITED ...
SUMÁRIO
1 INTRODUÇÃO.........................................................................................................
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
disposi...
2
Figura 1 - IDC Worldwide Quarterly Mobile Phone Tracker, May 2013. Fonte: (IDC, 2013)
Cada uma dessas plataformas possui...
3
Titanium (VISION MOBILE, 2012), os quais assemelham-se pelo uso da linguagem
JavaScript.
Entretanto, qual destas ferrame...
4
Na etapa final, uma discussão é apresentada a partir das medidas de software
comparativas e dos resultados obtidos com o...
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 p...
6
2.2. Aplicativo Móvel
Um aplicativo móvel é um software destinado a ser executado em um dispositivo
móvel, como em um sm...
7
Como exemplos de MOS, temos:
2.3.1. Android
Inicialmente desenvolvido pela Android Inc., a qual foi comprada pela Google...
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 A...
9
O BlackBerry OS foi projetado de forma que suas aplicações rodem em uma JVM
juntamente com as especificações Connected L...
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 Ob...
11
O Windows Phone 8, atual versão, foi lançado em 29 de outubro de 2012 e substituiu a
antiga arquitetura baseada no Wind...
12
2.4.1. Aplicação Nativa
São aplicações instaladas a partir das lojas de aplicativos oficiais e desenvolvidas
utilizando...
13
Trabalhos como (IBM CORPORATION, 2012) e (BAYTECH SERVICES, 2012) se
propõem não a indicar qual a melhor abordagem, mas...
14
3 DESENVOLVIMENTO MULTIPLATAFORMA
Desenvolver uma mesma aplicação para diversas plataformas utilizando as
ferramentas o...
15
Figura 13 - Frameworks de Desenvolvimento Multiplataforma
3.1.1. PhoneGap
O PhoneGap foi desenvolvido pela Nitobe Softw...
16
Utilizando HTML5, CSS e JavaScript para desenvolver suas aplicações, o PhoneGap é
ideal para quem já possui conheciment...
17
3.1.3. Sencha Touch
Este framework de desenvolvimento foi anunciado pela antiga empresa Ext JS, a partir
da combinação ...
18
Figura 17 - Temas oferecidos pelo Sencha Touch 2
Já possuindo suporte a Android, iOS, BlackBerry, WindowsPhone, em sua ...
19
4 PROPOSTA
Este trabalho destina-se a analisar as vantagens, diferenças e limitações de três
frameworks de desenvolvime...
20
4.2. Escopo da Aplicação Prova de Conceito
Este estudo visa analisar a utilização de recursos multimídia, sensores e co...
21
4.4. Materiais
Todo o desenvolvimento das aplicações Android e iOS utilizando cada um dos
frameworks abordados foi feit...
22
5 RESULTADO E DISCUSSÃO
Para cada um dos três frameworks abordados neste trabalho, foram geradas duas
versões do aplica...
23
5.2. Desenvolvimento da aplicação POC
A Tabela 3 resume informações sobre o processo de desenvolvimento.
Ambiente de
de...
24
Figura 19 - Aplicações iOS, respectivamente PhoneGap, Sencha Touch e Titanium
5.3. Comparativo de desempenho
A seguir é...
25
Figura 21 - Consumo de memória no iOS
Figura 22 - Tempo de carregamento no Android
Figura 23 - Tempo de carregamento no...
26
5.4. Discussão
Com base em todo o processo de desenvolvimento, a característica mais impactante foi
a elaboração da int...
27
6 CONCLUSÃO
Este trabalho visou estudar, analisar e comparar três frameworks de desenvolvimento de
aplicações multiplaf...
28
7 ANEXO A – CÓDIGO FONTE DA APLICAÇÃO POC NO PHONEGAP
Figura 24 - PhoneGap código fonte, arquivo index.html
Figura 25 -...
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 pas...
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 - ...
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.
Disponiv...
36
CÂMARA, M. Como o iPhone mudou o rumo dos smartphones. Techtudo, 2012. Disponivel em:
<http://www.techtudo.com.br/artig...
37
NOKIA. Cross Platform Mobile Architecture. Nokia Developers, 2013. Disponivel em:
<http://developer.nokia.com/community...
Próximos SlideShares
Carregando em…5
×

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

3.878 visualizações

Publicada em

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á.

  • Seja o primeiro a comentar

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

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 38. 29 Figura 26 - PhoneGap código fonte, arquivo index.js parte 2
  39. 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. 40. 31 Figura 28 - Sencha Touch código fonte, arquivo Main.js da pasta Controller parte 1
  41. 41. 32 Figura 29 - Sencha Touch código fonte, arquivo Main.js da pasta Controller parte 2
  42. 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. 43. 34 Figura 33 - Titanium código fonte, arquivo index.js parte 2
  44. 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. 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. 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.

×