An Evaluation of Cross-Platform Frameworks for Multimedia Mobile Applications Development
Cristiane M. S. Ferreira, Maria J. P. Peixoto, Paulo A. S. Duarte, Andrei B. B. Torres, Messias L. Silva Júnior, Lincoln S. Rocha, Windson Viana
1Abstract—Cross-Platform Mobile Development Tools allows developers to write a unique base code and create the same application for multiple mobile platforms (e.g., Android and iOS). A variety of frameworks have been proposed to support cross-platform mobile application development. PhoneGap, Sencha Touch, and Titanium are well-known frameworks designed for this purpose. The main goal of this research is to analyze their current state of maturity. In that direction, an application was developed in PhoneGap, Titanium, and Sencha, as well as native versions for Android and iOS were implemented. Such mobile application obtain information from sensors, uses camera to take pictures, applies image filters, and establishes connection to a remote Web Service. We analyzed the feasibility to build this kind of mobile application, the performance of each version, and the development effort. With our results, we intend to provide an overview of the qualities and limitations of these frameworks.
Keywords—Cross-Platform, Sensibilidade ao Contexto, iOS, Android, PhoneGap, Sencha Touch, Titanium
I. INTRODUÇÃO
Os avanços nas tecnologias de comunicação sem fio e a popularização de dispositivos móveis (e.g., smartphones e tablets) modificaram várias atividades cotidianas e profissionais. Os usuários passaram a acessar aplicações móveis e serviços (e.g., redes sociais e e-mail) em praticamente qualquer hora e local. Desde o sucesso do primeiro modelo do iPhone, a fabricação de aparelhos com tela sensível ao toque, multifuncionais, equipados com múltiplos sensores (e.g., GPS e acelerômetro) e recursos multimídia se tornou quase um padrão [1], tornando as aplicações ofertadas cada vez mais complexas.
O desenvolvimento de aplicações móveis com acesso a sensores e recursos multimídia não é uma atividade trivial.
Entre as razões, destacam-se as variações de configurações dos dispositivos móveis (e.g., tamanho de tela, sistema operacional), que tornam a programação, o teste e a portabilidade custosa. Além disso, existe a necessidade dos aplicativos rodarem em vários modelos de plataformas e fabricantes distintos (e.g., Android e iOS). Tal heterogeneidade requer o conhecimento e a experiência do desenvolvedor em várias linguagens de programação e vários ambientes de desenvolvimento de software (SDKs). Com isso, a duplicação de esforços de desenvolvimento e os custos altos de manutenção são comuns em fábricas de software móvel. As duas plataformas móveis mais populares atualmente são Android e iOS, responsáveis por 96,7% do market share
Grupo de Redes de Computadores, Engenharia de Software e Sistemas (GREat) Universidade Federal do Ceara´ (UFC) Fortaleza - CE - Brasil
Contato dos autores: [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]
global [2] e, por isso, as fábricas de software as priorizam.
Elas possuem APIs distintas e particularidades de desenvolvimento, impossibilitando que seja escrito apenas um único código para ambas usando SDKs nativos.
Frameworks para o desenvolvimento de aplicações cross- platform surgiram dessa necessidade de otimizar o processo de desenvolvimento de um mesmo aplicativo para várias plataformas móveis. Uma das estratégias mais utilizadas pelos frameworks é o uso de linguagens e tecnologias da Web (e.g., JavaScript, HTML5) na produção do código-fonte da aplicação. Exemplos dessa categoria são o PhoneGap, o Sencha Touch e o Titanium [3]. Cada um dos três possui suas peculiaridades no processo de desenvolvimento e limitações nas aplicações resultantes quando comparadas com as nativas.
O principal objetivo desta pesquisa é avaliar esses frameworks para o desenvolvimento de aplicações móveis de forma a responder as seguintes questões de pesquisa:
• Q1: Hoje, os frameworks cross-platform dispõem de recursos suficientes para o desenvolvimento de aplicações móveis que utilizam sensores e recursos multimídia?
• Q2: Qual é o desempenho das aplicações criadas com frameworks cross-platform se comparada a uma mesma versão da aplicação codificada de forma nativa em iOS e Android?
Para tanto, foram desenvolvidas cinco versões de uma mesma aplicação móvel como prova de conceito, uma para cada framework e uma versão nativa para cada sistema operacional alvo. A aplicação foi projetada para utilizar sensores (i.e., GPS e acelerômetro), acessar a câmera fotográfica e realizar comunicação com um web service externo. Então, uma avaliação de desempenho foi implementada e, com os resultados coletados, pode-se inferir uma visão geral das qualidades e limitações de cada framework no desenvolvimento de aplicações móveis e multimídia.
Visando responder às questões de pesquisa elencadas, o restante do artigo está organizado da seguinte forma. A Seção II apresenta as principais abordagens de desenvolvimento de aplicações móveis, definindo o escopo dos frameworks selecionados para o estudo comparativo. A Seção III analisa um levantamento realizado no GitHub sobre a popularidade das ferramentas. A Seção IV descreve o desenvolvimento da aplicação prova de conceito. A Seção V discorre sobre o tipo de avaliação, a metodologia seguida e os resultados atingidos.
Com base nos resultados das avaliações e nos comparativos realizados, a Seção VI apresenta uma discussão a respeito dos três frameworks. A Seção VII posiciona este trabalho em relação aos estudos afins encontrados na literatura e, por fim, a Seção VIII expõe as conclusões obtidas e as possibilidades de trabalhos futuros.
II. DESENVOLVIMENTODEAPLICAÇÕESMÓVEIS Uma aplicação móvel é um software destinado a ser executado em um dispositivo móvel, normalmente obtido em lojas de aplicativos existentes para cada plataforma. Quando iniciam o projeto de uma aplicação, as fábricas de software e profissionais autônomos precisam definir qual abordagem de desenvolvimento utilizar.
Xanthopoulos et al classifica as abordagens em Nativa, Web, Híbrida, Interpretada e Gerada, sendo as duas últimas subcategorias da Híbrida [4]. Contudo, nenhuma das estratégias é considerada predominante ou a melhor solução para o desenvolvimento multiplataforma de aplicações móveis.
As aplicações Nativas são as desenvolvidas especificamente para um sistema operacional móvel por meio de suas APIs e convenções. A linguagem e ferramentas usadas são fornecidas pela empresa responsável por cada plataforma. Para Android, desenvolve-se em Java na IDE Android Studio. Em iOS, se utiliza as linguagens Objective-C ou Swift na IDE Xcode [5].
As aplicações móveis Web usam o navegador como ambiente de execução e se baseiam nas tecnologias Web mais difundidas, como HTML e JavaScript [6]. Sua vantagem é a portabilidade, já que todas as plataformas móveis possuem um browser compatível com padrões do W3C [5]. As desvantagens são o acesso limitado a hardware e dados do dispositivo, exigência de conexão para o funcionamento e o tempo necessário para renderizar páginas Web mais complexas.
A estratégia híbrida combina as abordagens Nativa e Web.
Os desenvolvedores utilizam frameworks cross-platform para obter versões adaptadas a cada sistema operacional. Para o usuário final, elas se comportam como aplicações nativas, podendo ser baixadas e instaladas no dispositivo e o acesso a hardware é viável por meio de APIs especializadas. Quando os frameworks suportam o desenvolvimento de aplicações híbridas usando linguagens e tecnologias Web (HTML5, CSS, Javascript), eles são chamados de web-based frameworks. Tal subgrupo é o escopo do estudo apresentado neste trabalho.
Um tipo de abordagem híbrida usa interpretação de código em tempo de execução. O código é executado em um browser embutido em uma aplicação nativa de forma a possibilitar um certo grau de portabilidade. Usuários finais interagem com componentes nativos da UI. Mas a parte lógica é implementada independentemente da plataforma. Exemplos de web-based frameworks que usam esta abordagem são o PhoneGap [7] e o Sencha Touch [8].
Outra abordagem híbrida é da geração de código nativo a partir de uma codificação inicial em linguagens/tecnologias Web, resultando em uma versão específica para cada plataforma. Tendem a alcançar melhor desempenho por conta do código nativo gerado. Os desenvolvedores modelam seus aplicativos em um nível mais alto de abstração e, a partir desse, é realizada a geração de código fonte para a plataforma- alvo, criando versões nativas das aplicações. Um exemplo que utiliza esta abordagem é o Titanium [9].
Os frameworks PhoneGap, Sencha Touch e Titanium foram selecionados para a pesquisa deste estudo por possibilitarem o desenvolvimento para Android e iOS e por apresentarem abordagens de desenvolvimento distintas (i.e., os dois primeiros utilizam a abordagem interpretada e o
último, a gerada). PhoneGap e Sencha Touch são soluções que utilizam, respectivamente, as licenças Apache 2.0 License e GPLv3. O Titanium é um software proprietário da Appcelerator. Uma vez definido o escopo de quais os frameworks cross-platform a serem avaliados, o passo seguinte foi analisar o tamanho e o grau de maturidade atual da comunidade de desenvolvedores desses frameworks.
III. PANORAMANOGITHUB
Uma análise de projetos envolvendo os frameworks PhoneGap, Sencha Touch e Titanium foi realizada no GitHub2, conforme exposto na Tabela I. O intuito foi possuir um indicador de popularidade ou difusão dos frameworks. O GitHub foi escolhido por ser um dos serviços de compartilhamento de projetos e controle de versão mais usados, possuindo mais de 10 milhões de usuários em sua comunidade.
A pesquisa foi realizada com projetos entre 2011 e 2015.
Foram usadas duas formas de busca: uma pelo site do GitHub2 e outra por meio da API Google BigQuery3. Através da API, foram pesquisadas a quantidade de repositórios que possuíam o nome da plataforma no título, a quantidade total de Push Events4 e a quantidade de Push Events apenas em 2015. Todos esses resultados foram obtidos por meio de consultas SQL no BigQuery. Pelo site do repositório foi possível pesquisar o número de bugs nos quais aparecem o nome de cada uma das plataformas.
Pode-se concluir que o PhoneGap é o framework mais popular entre os três, sendo o framework que possui o maior número de projetos que contém o seu nome no título e cujos projetos são mais atualizados. Isto porque, em todos os projetos, foi verificada a quantidade de Push Events realizadas no total. Em 2015, os projetos “PhoneGap” tiveram as maiores quantidades de atualizações dentre os três frameworks. O número de Issues Events5 é maior também no “PhoneGap”, o que indica uma comunidade de desenvolvedores mais ativa.
IV. PROVADECONCEITO
A análise dos projetos no GitHub fornece bons indicativos do grau de maturidade das comunidades de desenvolvedores.
Porém, para analisar os frameworks em termos de desempenho e curva de aprendizado, fez-se necessário o desenvolvimento e a avaliação de uma Prova de Conceito6. A PoC (Proof of Concept) foi projetada para avaliar se os frameworks dispõem de mecanismos suficientes para a criação de aplicações complexas que requerem sensores e recursos multimídia.
Optou-se por uma aplicação que abrangesse o uso da câmera fotográfica e contivesse processamento de imagens (aplicação de filtros), acesso a sensores (acelerômetro e GPS)
2https://github.com/about
3https://bigquery.cloud.google.com/queries
4Push Events são os momentos em que códigos ou trechos de código são enviados para um repositório remoto, nesse caso o GitHub.
5Issues Events são perguntas, sugestões ou observações feitas nos projetos do GitHub.
6 Prova de Conceito, ou PoC (Proof of Concept), é um modelo (e.g., um software) desenvolvido que permite a avaliação e prova de conceitos estabelecidos de forma teórica.
e comunicação com serviços Web externos (compartilhamento da localização e da imagem em uma rede social e compartilhamento da imagem para um servidor Web). A aplicação deveria prover um slide de fotos controlado pelo acelerômetro do dispositivo. Um movimento rápido girando o aparelho da esquerda para a direita, ou vice-versa, deveria alterar a imagem exibida. Essas features não são triviais para tecnologias Web móveis. Assim, deseja-se, com a pesquisa, avaliar se os frameworks cross-platform já são maduros e suficientes para a implementação deste tipo de aplicação.
Foram desenvolvidas versões para os três frameworks analisados, além das nativas para Android e iOS, totalizando cinco versões codificadas e oito aplicações, quatro para cada S.O. (i.e., cada versão cross-platform resultou em duas aplicações). As plataformas Android e iOS foram selecionadas como alvo para a geração e execução da PoC devido ao seu domínio hegemônico no mercado. Buscou-se aproximar ao máximo o desenho e as funcionalidades definidas para a PoC.
A interface gráfica foi desenvolvida com ferramentas e APIs disponibilizadas por cada framework. As Figuras 1A e 2A apresentam as versões nativas, respectivamente, para Android e iOS. Na versão PhoneGap, mostrada nas Figuras 1B para Android e 2B para iOS, a interface gráfica foi construída com HTML e CSS. Na versão Sencha Touch, exibida nas Figuras 1C para Android e 2C para iOS, a interface gráfica possui elementos encadeados em diversos níveis, cada um com seus respectivos atributos. Na versão Titanium, mostrada nas Figuras 1D para Android e 2D para iOS, a interface é criada de modo semelhante à de uma aplicação Web. O corpo é criado com HTML em um arquivo XML e uma variação do CSS, chamado TSS, define os estilos dos componentes. Um vídeo exibindo o funcionamento das quatro versões da aplicação para Android está disponível em:
https://youtu.be/rhlfFlzTY_o.
A Figura 3 exibe o trecho de código que realiza o slide das imagens de acordo com os dados do acelerômetro. Nota-se que os três frameworks, respectivamente, as Figuras 3B, 3C e 3E, têm um código menos verboso que o Android (Figura 3A).
V. AVALIAÇÃO DA PROVADE CONCEITO
Foram realizados dois experimentos para avaliar o desempenho das aplicações. Um experimento com um conjunto de atividades executadas manualmente. O outro, com um conjunto de atividades executadas automaticamente. Os experimentos foram rigorosamente repetidos em todas versões das aplicações. Porém, algumas atividades não foram reproduzidas na versão Titanium, por não ter sido possível desenvolver os filtros nessa versão. As bibliotecas encontradas, livres ou pagas, forneciam a funcionalidade apenas para iOS e, mesmo nesses casos, apresentaram problemas de incompatibilidade ou falta de manutenção.
Assim, foi decidido desconsiderar a versão Titanium em ambas as plataformas nas atividades envolvendo a execução de filtros de imagem.
Os experimentos em Android dispuseram de um smartphone Google Nexus 4, com processador Qualcomm Snapdragon S4 Pro Quad-Core 1.5GHz e 2GB de memória RAM com Android Kitkat 4.4.2. Para iOS, foi usado um iPhone 5, com iOS 9.0.2, processador Apple A6 1.3 GHz Dual Core e memória RAM 1 GB. Para a coleta de dados sobre a
memória de execução, usou-se as ferramentas Trepn Power Profiler7, com a opção Memory Usage ativa para verificar a taxa de memória livre durante a execução, para Android, e Allocations8, para iOS.
A. Procedimentos
O primeiro experimento objetivava mensurar a variação de memória ocorrida durante a realização de atividades envolvendo acesso a sensores. O experimento foi feito manualmente e repetido 10 vezes [10], seguindo este procedimento: T0) Instalar e abrir a aplicação; T1) Aos 20 segundos, tirar uma foto; T2) Aos 40 segundos, aplicar um filtro; T3) Aos 60 segundos, compartilhar a foto; T4) Aos 80 segundos, compartilhar a localização; T5) Aos 100 segundos, fechar a aplicação, coletar o consumo de memória e desinstala-la.
Como o experimento foi feito de forma manual, optou-se por sua repetição em 10 vezes visto que mitigar a possibilidade de que comparação entre os resultados obtidos das diferentes versões envolvesse resultados que fossem outliers.
Já o segundo experimento consistia em um conjunto de testes automatizados para medir o tempo da execução dos filtros nas fotos tiradas pela aplicação. Nas aplicações em Android, foi criado um script, semelhante ao procedimento descrito a seguir, por meio da ferramenta Test-Complete Platform9: 1) Instalar e abrir a aplicação; 2) Tirar uma foto; 3) Iniciar um loop com 100 iterações, consistido em: Iniciar a medição do tempo, Realizar a execução do filtro Sépia, seguida do filtro Escala de Cinza e do filtro Negativo, Finalizar a medição do tempo e armazená-lo em um log.
Também foi feita a coleta da memória livre (nos experimentos em Android) ou alocada (nos experimentos em iOS), realizando-a 10 vezes, com a app sendo reinstalada em cada ocasião.
B. Resultados
A Figura 4 mostra um gráfico box plot com o resultado da memória livre após o carregamento das aplicações PoC para Android. Foi observado um desempenho semelhante nas quatro versões. A Figura 5 contém o resultado da memória alocada no caso do iOS. Nota-se que a versão Sencha Touch consome mais memória em iOS.
A Figura 6 apresenta o resultado do experimento de atividades. Nota-se que o comportamento das aplicações variou conforme a atividade. A aplicação Nativa ocupou mais memória em quatro atividades: tirar a foto (em média, 16,997 MB de memória livre a menos que o Sencha Touch), executar o filtro (em média, 20,559 MB a menos que o Sencha Touch), compartilhar a foto (em média, 30,836 MB a menos que o Sencha Touch) e compartilhar a localização (em média, 20,366 MB a menos que o PhoneGap).
7https://developer.qualcomm.com/software/trepn-power-profiler 8https://developer.apple.com/library/ios/documentation/
DeveloperTools/Conceptual/InstrumentsUserGuide/ Instrument-Allocations.html 9https://smartbear.com/product/testcomplete/overview/
Tabela I: Popularidade no GitHub
Framework
Repositórios Push Events Push Events
Issues Events
Cross-platform (2011-2015) (2015)
Abertos Fechados Total
PhoneGap 19.212 10.795 2.490 6.435 16.162 22.597
Titanium 16.713 6.304 1.708 2.202 5.736 7.938
Sencha Touch 14.999 7.237 330 1.795 3.141 4.936
Figura 1: Screenshots das telas das aplicações PoC desenvolvidas para Android: A) Versão Nativa; B) Versão PhoneGap; C) Versão Sencha Touch; D) Versão Titanium.
Figura 2: Screenshots das telas das aplicações PoC desenvolvidas para iOS: A) Versão Nativa; B) Versão PhoneGap; C) Versão Sencha Touch; D) Versão Titanium.
Figura 3: Trecho do código-fonte indicando a mudança da foto a partir da detecção de movimento pelo acelerômetro em cada versão da PoC: A) Android, B) PhoneGap, C) Sencha Touch, D) iOS, E) Titanium.
A Figura 7 apresenta o resultado do experimento da utilização dos filtros para Android e iOS. No Android, a app Nativa teve um desempenho bem superior em questão de tempo de execução, com uma mediana de 3.737 ms e com uma baixa variação entre as 100 execuções. A versão
PhoneGap apresentou uma mediana de execução melhor (7.740 ms) que a versão Sencha Touch (9.300 ms). Porém, a versão Sencha Touch apresentou maior estabilidade de valores, com uma variação entre o valor da execução mais lenta em relação à mais rápida (3.872 ms) bem menor que o
PhoneGap (6.221 ms). No caso do iOS, os timestamps fornecidos pelo Automation precisavam a informação apenas até a ordem de segundos. As três versões apresentaram um resultado similar, com uma maior estabilidade da versão PhoneGap.
I. DISCUSSÃO
Com base no levantamento dos projetos do GitHub, no desenvolvimento das PoCs e nos testes, manuais e automatizados, feitos, pode-se chegar a conclusões sobre as questões de pesquisa elencadas na Introdução. Quanto à questão de pesquisa 1 (Q1), foi possível implementar o acesso a sensores e recursos multimídia em todas as plataformas. Porém, alguns recursos e funcionalidades não puderam ser implementadas em todas as versões. O Titanium foi o framework que apresentou maiores dificuldades no desenvolvimento de recursos complexos. As funcionalidades referentes ao acesso de sensores (e.g., GPS, acelerômetro) e acesso à câmera foram implementadas em todas as versões, como demonstrado no vídeo.
A Tabela II apresenta um resumo das PoCs e do esforço de desenvolvimento envolvido. Os dados sobre LoC10 (C02), NoF11 (C03), Tamanho da PoC (C04) e Tempo Médio de Inicialização (C05) foram medidos com base na PoC construída. As informações sobre dificuldades (C06) relacionam as funcionalidades que não puderam ser desenvolvidas. A documentação (C08) foi mensurada com base no que é disponibilizado pelos sites oficiais das plataformas e frameworks e em quanto isso pode ajudar no desenvolvimento das PoCs. As conclusões sobre o tamanho e atividade das comunidades (C07) foram inferidas pelo levantamento dos projetos do GitHub. E observado que os frameworks cross-platform permitem o desenvolvimento de aplicações menos verbosas e com menos métodos/funções que aplicações nativas para Android. Contudo, deve-se frisar que a versão Titanium não tem implementação dos filtros de imagens nem o compartilhamento da imagem para servidor Web remoto, apenas redes sociais. O Sencha Touch também não tem essa última funcionalidade. Em termos de tempo médio de inicialização, as versões PhoneGap e Sencha Touch apresentaram um desempenho superior à versão Nativa para Android, mas as três versões cross-platform para iOS tiveram desempenho inferior à versão Nativa.
Com relação à questão de pesquisa 2 (Q2), há indícios que aplicações feitas com frameworks cross-platform que realizem acesso a sensores ou recursos multimídia não oferecem uma perda de desempenho em termos de memória utilizada em comparação com versões nativas. Porém, as aplicações nativas tendem a ter um desempenho superior em termos de tempo de execução. As versões nativas tendem a ser mais rápidas e ter um tempo médio mais estável na execução. Assim, o uso de frameworks cross-platform pode afetar a aceitação de uma aplicação que exija processamento mais pesado, como os das imagens.
10Lines of Code, ou Linhas de Código. Métrica que calcula o número de linhas de código de uma aplicação
11Number of Functions, ou Número de Funções. Métrica que calcula o número de funções ou métodos de uma aplicação
Pode-se concluir que o PhoneGap é o framework com o maior estágio de maturidade dentre os três, por suportar aplicações mais estáveis e prover uma maior manutenibilidade do código superior, além da farta documentação e maior comunidade. O Sencha Touch usa tecnologias similares ao do PhoneGap, mas tem pouca documentação e pequena comunidade de desenvolvedores, tornando o desenvolvimento mais complexo em termos de manutenibilidade.
Figura 4: Memória livre ao inicializar as PoCs para Android.
Figura 5: Memória alocada ao inicializar as PoCs para iOS.
Figura 6: Variação da memória no experimento de atividades na plataforma Android.
O Titanium apresentou diversas dificuldades no desenvolvimento da PoC. Mesmo sem alterações, o código apresentava novos erros com constância, obrigando uma frequente manutenção do código. Além de problemas como falta de documentação e bibliotecas desatualizadas. Isso tornou inviável o desenvolvimento de determinadas partes da PoC para esta versão.
Figura 7: Box plots dos experimentos da execução dos filtros de imagens nas plataformas Android e iOS.
II. TRABALHOS RELACIONADOS
Os diversos frameworks cross-platform já foram alvo da avaliação de estudos comparativos anteriores.
Sommer e Krusche compararam frameworks multiplataforma para Android e iOS. Eles usaram pesos que descrevem sua importância para a indústria: funcionalidade,
usabilidade, suporte de desenvolvimento, confiabilidade, desempenho, deploy, portabilidade e custos. Eles desenvolveram uma PoC e compararam com as versões nativas. Porém, os testes realizados foram manuais, não automatizados [11].
Dhillon e Mahmoud nomeou os frameworks como CPDTs (Cross-Platform Development Tools). Apresentou um processo reutilizável para implementação, teste e avaliação.
Porém, não informou como são as aplicações, em termos de estrutura e layout, usados nos testes. Também não informou a razão de, em alguns testes, ser usado alguns frameworks ou SOs nativos e em outros não. Também não foram realizadas comparações com a versão nativa da PoC [12].
Heitkötter et al classificou as abordagens de desenvolvimento em Nativas, Web móveis e Híbridas.
Baseado nisso, escolheu e avaliou aplicações Web, desenvolvidas com Titanium e PhoneGap e Nativas para Android e iOS. Apresentou os resultados com um conjunto de critérios de avaliação, como questões da perspectiva de infraestrutura, como licença, custo, multiplataforma, look and feel, acesso a características específicas da plataforma e velocidade da aplicação. Não foi desenvolvida nenhuma PoC específica para os testes da aplicação [10].
Este trabalho analisou menos frameworks que [11] e [12]
devido ao escopo mais específico. Diferente de [10], desenvolveu uma aplicação PoC e, diferente de [12], comparou as versões geradas pela PoC com versões nativas.
Além disso, foram realizados testes automatizados, ausentes em [10] e [11], e uma análise estática do código, ausente em [10], [11] e [12].
Tabela II: Comparativo entre as PoCs
PhoneGap Titanium Sencha Touch Android Nativo iOS Nativo
01 - Linguagem JavaScript JavaScript JavaScript Java Swift
02 - LoC 197 147 248 445 176
03 - NoF 14 5 23 46 28
04 – Tamanho da PoC iOS - 4,40 MB
And - 3,30 MB iOS - 7,08 MB
And - 10,3 MB iOS - 3,50 MB
And - 2,41 MB 3,65 MB 20,6 MB
05 - Tempo médio
de Inicialização iOS - 2,803s
And - 1,260s iOS - 2,796s
And - 1,698s iOS - 3,352 s
And - 1,148s 1,539s 2,302 s
06 – Dificuldades
Filtro de Imagens;
Compartilhamento
— Compartilhamento em em Servidor — —
Servidor
07 - Comunidade Média e Ativa Incipiente Quase Inexistente Grande e Ativa Grande e Ativa
08 - Documentação Farta Pouca e confusa Pouca Muito Farta Muito Farta
III. CONCLUSÃO E TRABALHOS FUTUROS
Este trabalho analisou três frameworks cross-platform sob o prisma do desenvolvimento de aplicações móveis com acesso a sensores e recursos multimídia. Buscou-se inferir a viabilidade da utilização desses frameworks para aplicações móveis mais complexas. Foi desenvolvida uma aplicação PoC que usa sensores, recursos multimídia e comunicação com um serviço Web e realizado testes protocolares e automatizados. A maior parte das funcionalidades puderam ser implementadas em todas as versões. Pode-se inferir que, em termos de memória usada, as aplicações desenvolvidas
com os frameworks têm um desempenho similar às nativas, mas perdem em tempo de execução. Assim, elas não são ainda recomendadas para aplicações em que o tempo de execução de determinados algoritmos é essencial.
Como trabalhos futuros, pretende-se realizar mais testes de desempenho, tanto como protocolos de testes quanto com abordagens automatizadas. Além disso, planeja-se um estudo para avaliar o grau de aceitabilidade por parte dos desenvolvedores móveis dos modelos de programação para cross-platform.
REFERÊNCIAS
[1] N. Islam and R. Want. Smartphones: Past, present, and future.
Pervasive Computing, IEEE, 13(4):89–92, Oct 2014.
[2] I. IDC Research. IDC’s Worldwide Quarterly Mobile Phone Tracker
smartphone os market share, 2015 q2.
http://www.idc.com/prodserv/smartphone-os-market-share.jsp, 2015.
[3] V. Mobile. Cross-platform developer tools 2012. Vision Mobile Research, page 97, 2012.
[4] S. Xanthopoulos and S. Xinogalos. A comparative analysis of cross- platform development approaches for mobile applications. In Proce- edings of the 6th Balkan Conference in Informatics, BCI ’13, pages 213–220, New York, NY, USA, 2013. ACM.
[5] B. Services. Native, hybrid or mobile web – what’s best for your mobile apps. North Andover, 2012.
[6] [6] H. Heitkötter, S. Hanschke, and T. A. Majchrzak. Evaluating cross-platform development approaches for mobile applications. In Web Information Systems and Technologies - 8th International Conference, WEBIST, pages 120–138, 2012.
[7] PhoneGap. Platform Support, 2013.
[8] V. Mobile. Cross-platform developer tools 2012. Vision Mobile Research, page 97, 2012.
[9] Appcelerator. Titanium SDK & Titanium Studio, 2014.
[10] H. Fischer. A History of the Central Limit Theorem: From Classical to Modern Probability Theory. Sources and Studies in the History of Mathematics and Physical Sciences. Springer New York, 2010.
[11] A. Sommer and S. Krusche. Evaluation of cross-platform frameworks for mobile applications. In Software Engineering 2013 - Workshop- band (inkl. Doktorandensymposium), Fachtagung des GI-Fachbereichs Softwaretechnik, pages 363–376, 2013.
[12] S. Dhillon and Q. H. Mahmoud. An evaluation framework for cross- platform mobile application development tools. Softw., Pract. Exper., 45(10):1331–1357, 2015.
Cristiane M. S. Ferreira possui graduação em Ciência da Computação, pela Universidade Federal do Ceará (UFC). Atualmente, é estudante do curso de Mestrado em Ciência da Computação, da Universidade Federal do Ceará (UFC). Atua principalmente nos seguintes temas: Jogos Móveis Baseados em Localização, Ferramentas de Autoria, Documentos Multimídia, Otimização, Problemas de Roteamento de Veículos.
Maria J. P. Peixoto é graduada em Sistemas e Mídias Digitais pela Universidade Federal do Ceará, atualmente é mestranda em Ciências da Computação também pela Universidade Federal do Ceará. Tem experiência na área de Ciências da Computação, com ênfase em sistemas multimídia, pesquisa e ensino.
Paulo A. S. Duarte é doutorando no programa de Mestrado e Doutorado em Ciências da Computação (MDCC) da Universidade Federal do Ceará (UFC). Mestre em Ciência da Computação da Universidade Federal do Ceará (UFC) em 2014.
Graduado em Engenharia de Computação pelo Instituto Federal de Educação, Ciência e Tecnologia do Ceará (IFCE) em 2012. Trabalhou entre 2009 e 2012 no laboratório NASH (Núcleo Avançado em Engenharia de Software
Distribuído e Sistemas Hipermídia) e, desde então, no laboratório GREat (Grupo de Redes de Computadores, Engenharia de Software e Sistemas). Tem experiência na área de Engenharia de Software, Desenvolvimento Dirigido por Modelos, Sensibilidade ao Contexto e Computação Móvel.
Andrei B. B. Torres é professor auxiliar da Universidade Federal do Ceará (UFC). Mestrando em Engenharia de Teleinformática na UFC e graduado em Arquitetura e Urbanismo pela mesma instituição. Suas pesquisas atuais incluem Internet das Coisas e Redes de Sensores Sem Fio.
Messias L. Silva Júnior é técnico em informática formado pela escola de educação profissional José Maria Falcão. Bacharel em Sistemas e Mídias Digitais pela Universidade Federal do Ceará (UFC) onde atuou durante dois anos com pesquisas na área de jogos móveis baseados em localização.
Atualmente, é analista de desenvolvimento da DeVry Brasil.
Lincoln S. Rocha é bacharel em Ciência da Computação pela Universidade Federal do Piauí (2003), Mestre (2007) e Doutor (2013) em Ciência da Computação pela Universidade Federal do Ceará. Tem experiência na área de Ciência da Computação com ênfase em Engenharia de Software, atuando principalmente nos seguintes temas: engenharia de software para sistemas ubíquos, tratamento de exceção sensível ao contexto, teste de software
sensível ao contexto, linha de produto de software, arquitetura e evolução de software. Além disso, tem atuado como revisor de Artigos em vários workshops (e.g., VEM e SBCUP), conferências (e.g., SBLP, SugarLoafPlop e WebMedia) e periódicos (e.g., JSERD e CEE) especializados. Alguns de seus artigos receberam distinção em conferências nacionais (melhor artigo de pesquisa do SBCARS de 2011) e internacionais (um dos melhores artigos do SPLC de 2010) da sua área. É membro da SBC (Sociedade Brasileira de Computação) desde 2005.
Windson Viana é professor adjunto do Instituto UFC Virtual e membro do Mestrado e Doutorado em Ciência da Computação (MDCC) da Universidade Federal do Ceará (UFC). Possui graduação em Ciência da Computação pela Universidade Federal do Ceará (2002), mestrado em Ciência da Computação pela Universidade Federal do Ceará (2005) e doutorado (specialité Informatique) pela Université de Grenoble, France (2010). Tem
experiência na área de Ciência da Computação, com ênfase em Computação Móvel, Multimídia e Engenharia de Software, atuando principalmente nos seguintes temas: computação móvel e ubíqua, sensibilidade ao contexto, middleware, TICs aplicadas ao auxílio ao ensino e aprendizagem, tecnologias assistivas, gerenciamento de documentos multimídia, jogos pervasivos e sistemas de recomendação.