O Apache Cordova é uma framework gratuita e de código aberto para criar apps multiplataformas usando Html 5. Este tipo de aplicação é também chamado de app híbrido.
O Html sempre permitiu criar aplicações multiplataformas tendo navegadores como clientes, mas carecia de ter acesso às funcionalidades nativas do celular (Câmera, acesso aos contatos, GPS) – o Cordova veio preencher esta lacuna. Mais recentemente o Progressive Web Apps também vem atender esta mesma situação, sem necessidade de publicar app em loja.
O Apache Cordova consiste nos seguintes componentes:
- Código fonte para um container de aplicação nativo, para cada plataforma móvel suportada;
- Conjunto de Apis Core que provê à aplicação web acesso às funcionalidades nativas do dispositivo, que normalmente não são suportadas por aplicações no navegador;
- Conjunto de ferramentas para gerenciar
- processo de criação de aplicação
- o ciclo de vidas de plugins
- construir aplicações nativas (com o uso das SDKs nativas)
- testar aplicações em emuladores e simuladores
A aplicação nativa do Cordova contém um Web View (componente Nativo que permite navegar em páginas). Quando a aplicação é iniciada, ela abre a página inicial (html) e segue o fluxo em um navegador padrão, podendo carregar mais recursos (javascript, imagens, json) e modificar a página dinamicamente.
Vantagens do Cordova
- Fácil de aprender, se você for um desenvolvedor web poderá utilizar seu conhecimento para gerar um app
- Acesso às funcionalidades nativas
- Gratuito
- Código aberto
- Grande comunidade, com mais de 50.000 perguntas feitas no stackflow http://stackoverflow.com/tags/cordova/info
- Escreve uma vez e pode fazer múltiplas distribuições
Desvantagens
- Documentação pobre
- Mais lento que o nativo
- Precisa usar outra framework para os componentes (Ionic etc), já que o Cordova é apenas um Wrapper
- Bugs no plugin
- Nem todos dispositivos são iguais, e o acesso as funcionalidades do celular pode ser diferente
Qual a Diferença de Cordova e Phonegap?
Phonegap é o nome do projeto original, criado pela startup Nitobi por volta de 2009. Em 2011 a empresa foi comprada pela Adobe e o o código aberto do que veio a se tornar o Cordova foi doado ao Apache Foundation.
Hoje o Phonegap é uma distribuição de Cordova mantida pela Adobe.
Como funciona o Cordova?
A interface do Cordova é um web view (componente que permite navegação). A compilação do Cordova apenas pega o Html, CSS e Javascript e disponibiliza juntamente com a App, como recursos normais acessíveis por qualquer navegador.
Funcionalidade Nativa do Dispositivo
O acesso a funcionalidades nativas dos dispositivos é feito por plugins, que disponibilizam uma API para o Javascript. Estes plugins são escritos em códigos nativos, e por isso é necessário ter instalado o SDK das diferentes plataforms que você pretende distribuir.
Há plugins oficiais da comunidade (que tem o prefixo cordova-plugin) e os não oficiais.
O que é possível construir com o Cordova?
Praticamente qualquer tipo de aplicação, mas o Cordova é melhor em buscar dados no servidor, mostrar para o usuário e reagir a entrada de informações.
Também é possível criar apps com base de dados local, como o LokiJS
Limitações
Desempenho
Como o acesso às funcionalidades nativas dependem de plugins, não é interessante criar aplicativos que dependem exclusivamente de CPU e GPU
Disponibilidade de Plugins
Se algum plugin para uma funcionalidade não estiver disponível, você precisará de cria-lo ou esperar alguém fazê-lo.
Web View
O Web view é uma funcionalidade específica de cada plataforma, e por isso pode ter comportamento diferente.
Se necessário é possível utilizar o CrossWalk para ter um web view customizado.
Formas de desenvolvimento
Cross-platform (CLI) workflow: mais indicado se você deseja criar apps multiplataformas.
A linha de comando copia os arquivos necessários para cada plataformas nos subdiretórios corretos e as configurações necessárias, abstraindo os scripts shell de baixo nível.
Platform-centered workflow: quando estiver focando em uma única plataforma e precisa modificar baixo nível. Você poderá misturar componentes nativos com componentes Cordova baseado na Web.
Ao mudar a forma de desenvolvimento do Cross-Plataform (CLI) para a opção específica é um caminho sem volta.
Compilação
É possível fazer o build da aplicação local ou no Phonegap Build Service, que gera os binários para você sem precisar tem o específico de cada plataforma – como no caso do IOS que demanda um Mac.
Referências para o Post
An Introduction to Cordova: Basics por Wernher-Bel Ancheta em Janeiro de 2016
Introduction to Apache Cordova por John M. Wargo em Julho de 2014 com 8 páginas de informações
Curso Building an App With Cordova por Reginald Dawson de Novembro de 2015 com duas aulas iniciais gratuitas e o vídeo abaixo, que mostra mais um pouco sobre configuração de ambiente, criação do Html para o Cordova e resultado para o emulador:
Curso online de Cordova & PhoneGap: Apps mobile com HTML, CSS e JS por Sérgio Lopes com a primeira aula disponível gratuitamente
Curso Multiplatform Mobile App Development with Web Technologies no Coursera