Desenvolvimento de Progressive Web Apps e Aplicações Nativas

0
909
DOI: ESTE ARTIGO AINDA NÃO POSSUI DOI SOLICITAR AGORA!
Desenvolvimento de Progressive Web Apps e Aplicações Nativas
5 (100%) 5 vote[s]
ARTIGO EM PDF

FREITAS, Caio Guimarães de [1], OLIVEIRA, Geveson de Souza [2], LEITE, Francisco Canindé da Silva [3], MORAIS, Gilvanete Melo de [4], PERES, Paulo Júnior de Jesus [5]
ALMEIDA, Cristiany Caliri de [6], PINTO, Aurílio Guimarães [7], SILVA, Francisco Eronildo da [8], RIBEIRO, Dallas dos Santos [9]

FREITAS, Caio Guimarães de; et.al. Desenvolvimento de Progressive Web Apps e Aplicações Nativas. Revista Científica Multidisciplinar Núcleo do Conhecimento. Edição 07. Ano 02, Vol. 02. pp 27-37, Outubro de 2017. ISSN:2448-0959

Resumo

As progressive web apps resultam de tentativas de unir as vantagens da web com as vantagens das aplicações nativas, por outro lado as aplicações nativas já têm seu lugar no mercado. Este estudo tem o objetivo geral de analisar as vantagens e desvantagens do desenvolvimento e utilização de progressive web apps e aplicações móveis nativas. Dentre os autores pesquisados para a constituição conceitual deste trabalho, destacaram-se Murarolli e Girotti (2016), Lopes (2016), Ater (2017), Pelletier (2013) e Barbosa Junior (2015). A metodologia utilizada foi a pesquisa descritiva, tendo como coleta de dados o levantamento bibliográfico. As conclusões mais relevantes são que o desenvolvimento de progressive web apps possibilita uma redução do custo da construção do aplicativo aliado a uma abrangência multiplataforma, ao passo que o desenvolvimento de aplicações nativas possibilita um melhor aproveitamento dos recursos de hardware.

Palavras-chave: Aplicação, Nativa, Web.

Introdução

Os usuários de smartphones do mundo contemporâneo têm um fator em comum que é o desejo estar sempre conectado aos assuntos de seu interesse, aplicações móveis surgiram como uma aposta para facilitar a rotina dessas pessoas. Ao atender os requisitos de conectividade e eficiência, esperadas nesse tipo de experiência móvel, os aplicativos se tornam uma das melhores maneiras para estabelecer uma conexão entre usuários e seus interesses.

Os Progressive Web Apps – PWA são aplicações móveis que resultam de experiências que tentam combinar o melhor da web com o melhor dos aplicativos nativos. Para isso, um conjunto de técnicas são usadas para que o desenvolvimento das aplicações web recebam, de forma progressiva, funcionalidades que antes só estavam disponíveis em apps nativos.

Negócios de todos os ramos já adotaram ou estão adotando aplicativos móveis como uma ponte entre clientes e negócios. Existe uma diversidade de aplicativos para diferentes públicos com as mais variadas funcionalidades.

Neste contexto, as aplicações móveis podem representar um bom negócio tanto para desenvolvedores em busca de uma oportunidade quanto para empresas.

O desenvolvimento de aplicações para dispositivos móveis envolve uma série de fatores típicos que o tornam diferente do desenvolvimento de software para PCs, visto que há uma série de recursos diferenciados que podem ser explorados, como utilização de GPS, câmera, giroscópio, acelerômetro, etc.

Outro fator a ser considerado no desenvolvimento de aplicativos móveis é que existem diversas plataformas para as quais as aplicações podem ser desenvolvidas, além disso os dispositivos podem apresentar uma grande variedade de recursos de hardware entre si que devem ser levados em consideração, como dimensões de telas diferentes, botões e utilização de interface.

Ao decidir pelo desenvolvimento de uma aplicação móvel é necessário escolher entre a utilização da tecnologia web ou a tecnologia nativa de cada plataforma para a construção da aplicação.

Há desenvolvedores que defendem que a utilização de uma determinada abordagem de desenvolvimento para a aplicação móvel apresenta características inequivocamente mais vantajosas.

O presente estudo delimita-se a apresentar as características inerentes às abordagens de desenvolvimento e utilização de progressive web apps – PWA e aplicações nativas.

Este estudo tem o objetivo geral de analisar as vantagens e desvantagens do desenvolvimento e utilização de Progressive Web Apps e aplicações nativas.

Este trabalho justifica-se pela importância de se conhecer cada uma dessas abordagens para que se possa determinar qual delas é a mais adequada, de modo a possibilitar o melhor custo-benefício para o desenvolvimento de aplicativos móveis e utilização por parte de seus usuários.

A metodologia deste trabalho é a pesquisa descritiva, tendo como coleta de dados o levantamento bibliográfico.

Desenvolvimento de Aplicações Nativas e Progressive Web Apps

As progressive web apps são um novo ramo de aplicativos que combinam os benefícios de uma aplicação nativa com a fluidez da web. Elas começaram como sites simples, mas conforme os usuários se engajavam eles progressivamente adquiriram novos poderes. Esse novo modelo toma o lugar da natureza binária instalado/não instalado das aplicações nativas. Os Progressive Web Apps vão construindo uma relação de confiança e adquirindo nova força à medida que vão sendo utilizados (ATER, 2017).

O desenvolvimento de Aplicações Web tem sido tipicamente menos custoso do que desenvolver uma aplicação nativa. Baseando-se puramente no preço, muitas companhias e indivíduos optam por disponibilizar seu conteúdo acessível a usuários mobile através da opção web (PELLETIER, 2013).

O advento do termo mobile-first modificou a forma como nós olhamos para o desenvolvimento web. Esse conjunto de filosofias de desenho e desenvolvimento ganhou uma incrível notoriedade. Essas duas palavras nos fizeram entender que estava na hora de mudar a abordagem de desenvolvimento web (ATER, 2017).

Como desvantagens em relação a utilização de aplicações web, Firtman (2013) aponta o fato de não ser possível acessar todo o hardware e serviços do sistema operacional. Isso faz com que esta não seja a escolha mais adequada para todos os tipos de aplicações, principalmente jogos que exijam muito do hardware.

Quando o primeiro iPhone foi lançado em 2007, a sua principal característica era permitir que se navegasse em websites através do telefone. Quando os aplicativos foram introduzidos um ano depois, os desenvolvedores finalmente foram capazes de superar as funcionalidades limitadas de uma página web. Contando com recursos como gráficos avançados, geolocalização, notificações, disponibilidade off-line, ícones na tela inicial, entre outros, a web parecia fraca em comparação, aos olhos de muitos desenvolvedores. Assim os aplicativos nativos tomaram conta o mundo mobile (ATER, 2017).

Porém, essa tendência está mudando. Enquanto nós gastamos mais tempo do que nunca com nossos smartphones utilizando aplicativos móveis, nós gastamos esse tempo em um número cada vez menor de aplicativos nativos. Os usuários estão instalando cada vez menos aplicativos e utilizando apenas uma pequena parte daqueles que estão instalados (ATER, 2017).

Segundo Alasdair (2013), a experiência de usuário será muito melhor se for efetuada a integração do aplicativo ao ambiente do sistema operacional, e for feito o uso das possibilidades que o hardware oferece certificando-se de que a interface de usuário está otimizada para o dispositivo. Vale destacar que é possível fazer isso utilizando tecnologias web, mas na maior parte do tempo, será realmente difícil escrever aplicativos não nativos que funcionem bem em várias plataformas. É ainda mais difícil fazer com que eles pareçam nativos em várias plataformas distintas.

A principal vantagem de se optar pelo desenvolvimento de aplicações web é a possibilidade de estas serem executadas em qualquer plataforma, simplesmente considerando a compatibilidade do navegador, de forma oposta ao desenvolvimento de aplicativos nativos, os quais exigem um projeto específico para cada sistema operacional e as vezes até para diferentes versões de um mesmo S.O. (MURAROLLI & GIROTTI, 2015).

Segundo Firtman (2013), as aplicações Web são o futuro para a maioria das aplicações, por vários motivos, dentre eles pode-se destacar o fato de que o mercado de Smartphones é fragmentado e provavelmente vai continuar fragmentado no futuro. Se for desejada uma cobertura ampla de plataformas, será necessário que a aplicação seja executada no iPhone, Android, Windows Phone, Blackberry e isto ainda não estará cobrindo todas elas. Outro motivo está relacionado a velocidade do mercado, pois não é desejado que se espere meses para entregar as aplicações móveis aos clientes. Aplicações Web podem ser desenvolvidas mais rapidamente.

É importante observar que os navegadores de internet de dispositivos móveis têm evoluído para prover uma experiência de utilização de aplicações web que seja tão boa quanto a de se utilizar aplicativos nativos. Enquanto o desenvolvimento de aplicativos nativos para cada plataforma resultam em um aplicativo mais otimizado para aquela determinada plataforma, uma única aplicação web seria capaz de aproveitar os principais recursos de diferentes tipos de dispositivos móveis como câmera e acelerômetro através do uso de Javascript, sem a necessidade de passar pela rigidez de desenvolver múltiplos aplicativos para múltiplas plataformas (LINGRAS, 2016).

Para desenvolver aplicações nativas para cada plataforma, faz-se uso de um conjunto de ferramentas, bibliotecas e compiladores chamados de Software Development Kits – SDKs que são disponibilizados pelo fabricante do sistema operacional. Estes SDKs são exclusivos para cada sistema operacional. O código fonte da aplicação deve ser escrito na linguagem específica para cada plataforma. Em seguida, este código é compilado em um arquivo executável com uso das ferramentas disponibilizadas, incluindo as bibliotecas e arquivos adicionais (MURAROLLI & GIROTTI, 2015).

Para a programação no desenvolvimento web ganha-se tempo pela capacidade de atender a diversas plataformas, enquanto para aplicações nativas é exigido um projeto para cada sistema operacional. Cabe lembrar que, além da programação, é necessária manutenção do sistema, sendo mais custosa no caso das aplicações nativas. Além disso, as aplicações nativas ocupam espaço em disco e podem requerer disponibilidade do processador, enquanto que as aplicações web não guardam nada no dispositivo e são, em geral leves (MURAROLLI & GIROTTI, 2015).

Cada plataforma móvel tem seus próprios padrões para aceitar aplicativos e sua loja de aplicativos. O desenvolvimento de aplicativos móveis nativos para várias plataformas deve ocorrer separadamente, e cada versão da aplicação precisa do seu próprio especialista em padrões (PRESSMAN; MAXIN, 2016).

De modo similar, Murarolli e Girotti (2015) afirmam que, em termos de recursos do dispositivo, as aplicações web tem dificuldade de acessar as funcionalidades como câmera e GPS do smartphone, podendo fazer apenas o acesso de APIs complexos, sem garantia de compatibilidade e as vezes tão dispendiosa quanto o desenvolvimento nativo.

Ainda que o navegador de internet suporte as capacidades de localização geográfica que o HTML5 fornece, isso não elimina o problema por completo. É duvidoso que todo o hardware específico da plataforma obtenha o mesmo tipo de tratamento em HTML5 (ALASDAIR, 2013).

Pode-se desenvolver nativamente para o sistema da Google Usando o Android SDK e a linguagem Java. A Apple permite usar Objective-C ou Swift e oferece ferramentas para iOS. Cada plataforma tem sua combinação de linguagem e APIs específicas (LOPES, 2016).

Outro ponto a se destacar está relacionado ao fato de a performance das aplicações web ser inferior em relação às aplicações nativas. Neste ponto, Lopes (2013) defende que poucas aplicações realmente precisam de alta performance. E, para muitos casos, a diferença de performance entre a web e uma aplicação nativa não é perceptível para o usuário, pois os navegadores atuais são excelentes e cada vez mais rápidos, e só perdem de forma perceptível em casos bem específicos que exigem alta performance.

Os aplicativos nativos estão disponíveis para os usuários finais apenas através de lojas de aplicativos para dispositivos específicos. A loja de aplicativos para usuário de iPhone é a App Store, já para os usuários de Android, é a Google Play. Para desenvolver um aplicativo nativo para cada plataforma, desenvolvedores devem estar familiarizados com o Ambiente Integrado de desenvolvimento e o Kit de desenvolvimento de software da plataforma escolhida, e a linguagem associada a cada uma delas. Aplicativos nativos geralmente aproveitam os benefícios do hardware de alta performance, e se encaixam melhor para aplicativos que requerem gráficos em 3D ou aplicativos de jogos (PELLETIER, 2013).

Mais um aspecto é quanto aos canais de distribuição, que são perdidos quando falamos de aplicações web. Conforme Murarolli & Girotti (2015). Isto pode significar menor abrangência da aplicação, necessidade de investimento em divulgação e a obrigatoriedade do usuário em recordar o endereço para acessar a aplicação. Vale lembrar que, para que um aplicativo fique disponível na loja de aplicativos, é necessário o processo de validação.

Por outro lado, Ater (2017) afirma que fazer os usuários instalarem um aplicativo significa sobreviver a um ciclone. Os usuários precisam encontrar o seu site, então eles precisam visitar a sua página em uma loja de aplicativos, depois eles precisam clicar para instalar e depois concordar com uma série de diferentes permissões, então eles precisam aguardar o download e instalar. Por fim eles precisam abrir o aplicativo pelo menos uma vez e talvez até utilizá-lo. Este ciclone não parece ruim quando você está instalando um aplicativo que você já conhece e gosta de utilizar, porém pode dificultar a distribuição e utilização de novos aplicativos.

Segundo Ater (2017), os websites têm se tornado tão desesperados para que seus visitantes instalem as suas aplicações nativas que eles têm utilizado um novo método de propaganda que funciona da seguinte maneira: o visitante abre em um site para ler um artigo. A informação está lá, nas suas mãos, então um banner salta na tela bloqueando o conteúdo que ele queria ler. O banner pergunta se o visitante quer instalar o aplicativo ao invés de ler o artigo que está na sua frente.

Uma característica que pode ser considerada negativa no desenvolvimento de aplicações web é que é muito difícil desenvolver aplicativos web de aparência nativa que possam ser reutilizados em muitas plataformas diferentes (ALASDAIR, 2013).

Segundo Lopes (2013), na web, o mais comum é ter uma linguagem visual única, não atrelada a nenhuma plataforma específica, do mesmo modo que a web funciona no Desktop. Os sites e aplicações web costumam ter um estilo mais ligado à identidade visual da marca e da empresa, do que da plataforma de acesso.

Já em relação ao aplicativos nativos, é comum que aplicativos móveis sejam executados em vários tipos de plataformas com diferentes níveis de funcionalidade. Os motivos para essas diferenças são o hardware e o software disponíveis, que variam muito de um dispositivo para o outro. Esse fato acaba por aumentar o custo e o prazo de desenvolvimento de um aplicativo para dispositivos móveis (PRESSMAN; MAXIN, 2016).

Alasdair (2013) alerta para o fato de que a maioria dos argumentos apresentados em suporte ao uso de tecnologias web, ou de outros frameworks não nativos, é feito a partir da perspectiva do desenvolvedor. Ainda que isso não torne esses argumentos inválidos, deve-se analisar cuidadosamente esses argumentos pela perspectiva do usuário, pois nenhum deles trata realmente da principal consideração: a usabilidade.

Murarolli & Girotti (2015) ressalta que as aplicações web dependem integralmente de conexão com a internet, enquanto que as nativas só necessitam caso a aplicação peça esse acesso.

Alasdair (2013) afirma que os consumidores não compram determinado aplicativo na plataforma deles simplesmente porque ele é suportado também em outras plataformas, em vez disso eles querem um aplicativo que tenha o mesmo visual dos outros aplicativos da plataforma deles, que siga os mesmos paradigmas de interface do restante dos aplicativos com que eles estão acostumados e que esteja integrado a essa plataforma.

Uma diferença brutal onde as aplicações nativas ainda ganham de longe das aplicações web é na questão da monetização. As lojas de aplicativos já são plataformas de pagamento integradas e o usuário não tem trabalho algum para comprar Apps e assinaturas. Já na web não tem esse tipo de facilidade. Na web, há os serviços de pagamento como PayPal, porém nada tão fácil como as lojas de aplicativos (LOPES, 2013).

A individualidade do desenvolvimento é a principal desvantagem das aplicações nativas, Conforme Murarolli & Girotti (2015), visto que praticamente nada poderá ser reaproveitado no desenvolvimento para outra plataforma, fazendo com que o desenvolvimento para vários ambientes seja uma tarefa longa e cara.

Neste contexto, é importante ter em mente quais plataformas serão suportadas ao construir aplicativos móveis. Conforme Lopes (2016), o Android domina o cenário dos smartphones no mundo, principalmente no Brasil. Enquanto que o iOS é bastante usado principalmente nas classes sociais de maior poder aquisitivo. E além desses, há o Windows Phone, Blackberry, Tizen entre outros.

Conforme Alasdair (2013), A principal razão de utilizarmos um SDK nativo para desenvolvimento é a possibilidade de fazer algo que não poderia ser feito usando tecnologias web. Um exemplo disso é a primeira geração de aplicativos de realidade aumentada para o iPhone. Esses aplicativos necessitavam de uma integração mais próxima com os sensores do aparelho e não teriam sido possíveis sem esse acesso.

Para Murarolli e Girotti (2015), uma das maiores vantagens do desenvolvimento de aplicações nativas é que o aplicativo é instalado diretamente no dispositivo e é disponibilizado um atalho para que a aplicação seja executada sem a necessidade de memorizar endereços ou acessar links. Os aplicativos podem ser publicados nas lojas como a App Store e a Google play, sem exigir que o usuário encontre o aplicativo de outra maneira. Os recursos do dispositivo móvel, como acelerômetro e giroscópio, são acessados mais facilmente. Os apps podem ser executados sem a conexão com a internet se isso for a intenção do projeto, e o uso das Push Notifications é facilitado, permitindo alertar o usuário sobre atualizações.

Já como desvantagens das aplicações nativas para o desenvolvedor, podemos destacar que deverá ser implementado um projeto para cada plataforma, também deve ser levado em consideração as dificuldades de se conhecer cada linguagem (MURAROLLI & GIROTTI, 2015).

Outro problema é que os desenvolvedores com conhecimento para desenvolver uma aplicação nativa pertencem a um grupo bem menor de desenvolvedores do que aqueles com conhecimento para desenvolver uma aplicação web. Isso significa que eles custam mais caro. Soma-se isso ao fato de que normalmente é necessário, no mínimo, um desenvolvedor com expertise em cada linguagem (PELLETIER, 2013).

Diante da necessidade de um projeto para cada plataforma e de desenvolvedores especialistas em cada uma delas, o custo das aplicações acaba sendo maior, e o tempo de desenvolvimento torna-se mais estendido. Além disso, realizar a validação das aplicações se torna mais complexo, pela variedade de testes que deverão ser realizados (MURAROLLI & GIROTTI, 2015).

Pode-se optar por diferentes abordagens para o desenvolvimento de aplicações móveis. Cada uma dessas abordagens tem características próprias. É importante que a equipe de desenvolvimento conheça claramente as características de cada abordagem, pois a opção por um determinado tipo pode ser determinante para o sucesso ou fracasso de um projeto (MURAROLLI & GIROTTI, 2015).

Além disso, o desenvolvimento de aplicações móveis vem acompanhado de uma série de fatores que torna sua execução distinta em relação ao desenvolvimento de software das modalidades tradicionais como o desktop e web. Estas diferenças estão relacionadas principalmente ao ambiente de desenvolvimento e também às técnicas envolvidas no processo, visto que os dispositivos móveis apresentam diferentes versões de sistema operacional, tamanho de tela e recursos de hardware, como GPS, câmera, etc. (BARBOSA JUNIOR, 2015).

Conclusão

Este estudo teve como objetivo geral analisar as vantagens e desvantagens no desenvolvimento e utilização dos progressive web apps e aplicações nativas. Ao realizar esta análise, observa-se que não há uma escolha de desenvolvimento que seja a melhor opção em absoluto, visto que há pontos favoráveis e desfavoráveis em cada uma delas.

O desenvolvimento de progressive web apps possibilita uma abrangência multiplataforma aliado a redução do custo de desenvolvimento, ao passo que o desenvolvimento de aplicações nativas possibilita um melhor aproveitamento dos recursos de hardware.

Determinado abordagem para desenvolvimento pode ser mais adequado para um projeto específico não o ser para outro. É importante que os envolvidos no desenvolvimento da aplicação tenham o conhecimento dos requisitos de seu projeto para que possam fazer a escolha da abordagem mais adequada para o desenvolvimento de sua aplicação.

É importante, também, ter em mente que os avanços no campo da tecnologia são frequentes promovendo, algumas vezes, mudanças nos paradigmas vigentes, de modo que as tecnologias atuais podem estar obsoletas em pouco tempo. Com isso, novos trabalhos podem ser realizados no sentido de apresentar os avanços e inovações nas tecnologias para desenvolvimento de aplicações móveis.

Referências

LOPES, S. Aplicações Mobile Híbridas com Cordova e PhoneGap. São Paulo: Editora Casa do Código, 2016.

ATER, T. Building Progressive Web Apps. Sebastopol: O’Reilly Media Inc, 2017.

PRESSMAN, R. S.; MAXIN, B R. Engenharia de Software: Uma abordagem profissional. São Paulo: AMGH editora Ltda, 2016.

BARBOSA JUNIOR, H. A et al. Metodologias Ágeis para Desenvolvimento de Aplicações Móveis. Revista Pensar Tecnologia. Vol. 4, n. 2, jul/2015, ISSN 2237-5252.

MURAROLLI, P. L; GIROTTI, M. T. Inovações Tecnológicas nas Perspectivas Computacionais. São Paulo: Biblioteca 24 Horas, 2015.

ALASDAIR. A. Aprendendo Programação iOS: Do Xcode à App Store. São Paulo: Novatec Editora LTDA, 2013.

LOPES, S. A Web Mobile: Programe Para um Mundo de Muitos Dispositivos. São Paulo: Editora Casa do Código, 2013.

PELLETIER, J. Mobile App Manual: The Blueprint. Withinsight, 2013 ISBN: 9780989072106.

FIRTMAN, M. Programming the Mobile Web. 2. ed. Sebastopol: O’Reilly Media Inc, 2013.

LINGRAS, P et al. Building Cross-Platform Mobile and Web Apps for Engineers and Scientists: An Active Learning Approach. Boston: Cengage Learning, 2016.

[1] Graduado na Área de Computação, atua como servidor público na Suframa no cargo de Analista Técnico Administrativo – TI.

[2] Graduado na Área de Computação, atua como servidor público na Suframa no cargo de Analista Técnico Administrativo – TI.

[3] Graduado na Área de Computação, atua como servidor público na Suframa no cargo de Analista Técnico Administrativo – TI.

[4] Graduada na Área de Computação, atua como servidor público na Suframa no cargo de Analista Técnico Administrativo – TI.

[5] Graduado na Área de Computação, atua como servidor público na Suframa no cargo de Analista Técnico Administrativo – TI.

[6] Graduada na Área de Computação, atua como servidor público na Suframa no cargo de Analista Técnico Administrativo – TI.

[7] Graduado na Área de Computação, atua como servidor público na Suframa no cargo de Analista Técnico Administrativo – TI.

[8] Graduado na Área de Computação, atua como servidor público na Suframa no cargo de Analista Técnico Administrativo – TI.

[9] Graduado na Área de Computação, atua como servidor público na Suframa no cargo de Analista Técnico Administrativo – TI.

Pós-graduado em Gestão de Tecnologia da Informação pela Universidade do Estado do Amazonas, atua como servidor público da Superintendência da Zona Franca de Manaus – SUFRAMA, no cargo de Analista Técnico Administrativo – Tecnologia da Informação.

DEIXE UMA RESPOSTA

Please enter your comment!
Please enter your name here