Progressive web app

Logo PWA

Progressive Web App (PWA) é um termo usado para denotar um conjunto de processos de desenvolvimento de software. Ao contrário dos tradicionais aplicativos, um Progressive Web App pode ser visto como uma evolução híbrida entre as páginas da web regulares (ou sites) e um aplicativo móvel. Este novo modelo de aplicação combina recursos oferecidos pelos mais modernos navegadores, com as vantagens de uso de um celular.

Visão geral

Desde 2005, a Internet foi evoluindo rapidamente: a partir de sites estáticos para páginas web dinâmicas, através de Ajax e responsive web design.

Web Dinâmica e Responsiva

As tecnologias de desenvolvimento da web mudaram, do HTML estático a documentos dinâmicos PHP, ASP.NET, Ajax e vários outras linguagens e scripts que rodam do lado do servidor e outras baseadas em dispositivos.

Ao final, o RWD (Responsive Web Design) evoluiu devido à mudança das funcionalidades introduzidas no HTML5, CSS3 e JavaScript. Esta poderosa combinação de marcação, folhas de estilo e scripts habilitaram interações personalizadas com elementos de página, renderização de vídeos sem o Adobe Flash Player, jogar jogos - todos estes no dispositivo cliente (não servidor).

Estas alterações não teriam afetado a nova forma de navegar na web sem alterações significativas feitas nos navegadores.

Dispositivos móveis

Em 2007, a Apple lançou o iPhone, pioneiro na popularização dos smartphones com uma tela sensível ao toque, embora outras empresas já tivessem oferecido smartphones semelhantes usando os sistemas operacionais Symbian (Nokia, Motorola, Sony Ericsson, Benq entre outros) e Linux (Motorola e Palm). A ideia de ter um dispositivo prático que permita navegar na Web, bem como uma grande variedade de funções e aplicações nativas ganhou mercado em relativamente pouco tempo.

Melhores experiências em dispositivos móveis 

Uma melhor experiência de usuário é uma das principais razões por trás da popularidade de aplicativos nativos. Estes executam como um pacote de aplicação do sistema considerando que aplicativos web tradicionais são carregados em tempo de execução num navegador. O navegador também atua como uma abstração entre o hardware do sistema e de aplicativos da web. Embalando os recursos e o acesso direto ao hardware, os aplicativos nativos executam mais rapidamente.

Outra categoria de aplicativos chamado "aplicativo híbrido" cai entre as características dos nativos e web apps.

Aplicativos híbridos imitam os aplicativos móveis nativos, sendo assim precisam de uma loja de aplicativos para download, necessitam de instalação e consumem espaço em disco, bem como nas telas iniciais de dispositivos móveis.

Aplicações hibrida parcialmente executado em navegadores de dispositivos móveis, mas de alguma forma eles não manter os princípios partilhados da web, tais como:

Muitos tentaram fechar a brecha entre o móvel e a web experiências, mas descartou a existência de um ou dois aspectos do sistema de valores comuns, descritos acima.

História

Em 2015, o designer Frances Berriman e o engenheiro do Google Chrome Alex Russell[desambiguação necessária] cunharam o termo "Progressive Web Apps" para descrever novas funcionalidades suportadas pelos navegadores modernos, incluindo Work Services Web e App Manifests, que permitem que os usuários atualizem aplicativos web semelhantes aos aplicativos nativos do sistema operacional.

Características

Segundo o Google Developers, um Progressive Web App é:

Tecnologias

Progressive Web Apps são uma melhoria da tecnologia web existente. Eles não exigem agregação ou distribuição. A publicação de um PWA é igual a qualquer outro aplicativo da web.

Os critérios técnicos básicos para que um site seja considerado um Aplicativo Progressivo da Web foram descritos por Russell em uma publicação de acompanhamento:

Manifesto

Trata-se de uma especificação da W3C definida no formato JSON, conhecida como manifesto, que oferece aos desenvolvedores um ponto centralizado para armazenar os metadados relacionados a um aplicativo da web, incluindo:

Ao definir e manipular os metadados no arquivo de manifesto para a web, os desenvolvedores permitem que os agentes do usuário criem experiências perfeitas, semelhantes às de aplicativos nativos, por meio de PWAs.

Service Workers

Aplicativos móveis nativos oferecem experiências ricas e alto desempenho, pois possuem o conteúdo, os componentes e os recursos necessários já otimizados para o dispositivo do usuário. No entanto, enfrentam limitações devido ao processo de instalação, como ocupação de espaço em disco, ausência de atualizações em tempo real e falta de visibilidade nos mecanismos de busca.

Os aplicativos web tradicionais enfrentam desafios relacionados à confiabilidade da conectividade e às restrições de carregamento. Para superar essas limitações, o Service Worker, projetado no contexto do Web Worker, proporciona experiências de carregamento mais eficientes.

Tecnicamente, o Service Worker atua como um script proxy de rede no navegador, permitindo gerenciar programaticamente as solicitações web/HTTP. Ele opera entre a rede e o dispositivo, auxiliando no fornecimento de conteúdo. Além disso, utiliza mecanismos de cache de forma eficiente, garantindo uma experiência livre de erros, mesmo em modo offline.

Propriedades dos Service Workers:

  1. Desencadear e manter-se vivo pelo relacionamento com os acontecimentos, não por documentos.
  2. De natureza genérica.
  3. Orientado a eventos com tempo limite de script contextos e em execução na origem.
  4. Natural e com pontos de extremidade para uma ampla gama de serviços de tempo de execução.
  5. Ter um estado.
  6. Com um script de URL.
  7. Contendo registro.
  8. Atribuída a ID ou UUID.
  9. Com eventos de ciclo de vida.
  10. Tem recurso de script mapa.
  11. Pode pular de espera para as bandeiras.

Benefícios dos Service Workers:

Aplicação Shell De Arquitetura

Para carregar rapidamente o layout e o conteúdo do aplicativo, os Service Workers armazenam componentes essenciais para a "Interface de Usuário Básica" de um aplicativo web responsivo (RWD). Essa Interface de Usuário Básica é comumente referida como o "Shell" do aplicativo.

O Shell fornece uma estrutura estática inicial, atuando como um layout ou arquitetura para carregar o conteúdo de forma progressiva e dinâmica. Tecnicamente, ele é um conjunto de códigos armazenado localmente no cache do navegador do dispositivo móvel. Dessa forma, o Shell mantém o Aplicativo Progressivo da Web (PWA) funcional e envolvente para os usuários, mesmo enquanto o conteúdo é carregado em condições variadas de conectividade.

O verdadeiro potencial de uma PWA está em aproveitar a excelência das tecnologias web, saindo do convencional e oferecendo experiências móveis excepcionais.

Navegadores como Google Chrome, Microsoft Edge e Opera oferecem suporte robusto para PWAs, enquanto Mozilla Firefox também oferece suporte, mas com algumas limitações. O Safari tem suporte mais restrito, especialmente em dispositivos iOS, mas ainda permite que PWAs sejam instaladas na tela inicial.

Referências

  1. ↑ http://adaptivepath.org/ideas/ajax-new-approach-web-applications/ Em falta ou vazio |título= (ajuda)
  2. ↑ http://alistapart.com/article/responsive-web-design Em falta ou vazio |título= (ajuda)
  3. 1 2 https://infrequently.org/2015/06/progressive-apps-escaping-tabs-without-losing-our-soul/ Em falta ou vazio |título= (ajuda)
  4. ↑ Your First Progressive Web App | Web Fundamentals - Google Developers https://developers.google.com/web/fundamentals/getting-started/your-first-progressive-web-app/?hl=en Em falta ou vazio |título= (ajuda)
  5. ↑ https://developers.google.com/web/progressive-web-apps Em falta ou vazio |título= (ajuda)
  6. ↑ «Seu primeiro Progressive Web App  |  Web  |  Google Developers». Google Developers. Consultado em 23 de novembro de 2017
  7. ↑ «Introdução a aplicações web progressivas - Blog Fellyph Cintra». 18 de maio de 2022. Consultado em 27 de março de 2024
  8. ↑ https://infrequently.org/2016/09/what-exactly-makes-something-a-progressive-web-app/ Em falta ou vazio |título= (ajuda)
  9. ↑ «Manifesto do app da Web». web.dev. Consultado em 27 de março de 2024
  10. ↑ W3C “Web App Manifest”, Working Draft, retrieved 12 September 2016