Fonte da imagem: http://hooah.cc/blog/the-difference-between-native-apps-and-web-apps-making-an-informed-choice

Recentemente participei de uma semana de inovação aqui na Locaweb, onde trabalho atualmente. Durante essa semana, pudemos colocar em prática algum projeto de caráter inovador dentro da empresa. No meu caso, escolhi criar um aplicativo mobile. Foi uma experiência intensa e incrível, pois, convenhamos, criar um aplicativo funcional em apenas uma semana é uma tarefa nada trivial.

A fim de podermos dar conta do desafio, escolhi utilizar o Apache Cordova. Trata-se de uma plataforma open source para o desenvolvimento de aplicativos móveis multiplataforma através de linguagens web: basicamente HTML, CSS e Javascript.

A primeira dificuldade foi passar pelas inúmeras decisões que são necessárias para criar um aplicativo deste tipo. De início, há várias "distribuições" do Cordova. Adobe Phonegap e Intel XDK estão entre as mais conhecidas. Depois, de forma semelhante ao que acontece hoje, com toda a "ebulição" da web nos últimos anos, é necessário optar por algum framework Javascript como Jquery Mobile, Ionic ou Zepto. Contudo, a lista pode se estender quase que infinitamente.

Alguns desenvolvedores ainda torcem o nariz quando ouvem falar de web apps rodando fora do navegador. No meu entender, trata-se apenas de preconceito. Na quase totalidade das vezes, é possível criar um app desta maneira e com muitas vantagens em relação ao desenvolvimento de aplicativos nativos. Para que perder tempo aprendendo a API do Android, iOS e Windows Phone (sem falar em outros sistemas) para realizar uma mesma tarefa (acessar a câmera, por exemplo) se podemos fazer o mesmo com uma única API?

A não ser que você precise utilizar todo o desempenho e potencial do hardware, como acontece em um jogo, por exemplo, nada me parece justificar a opção pelas plataformas nativas. E olha que mesmo assim, WebGL e outras APIs recentes do HTML5 estão ai para “fazer miséria” pelos seus jogos. Além disso, usuários estão interessados na experiência que você entrega a eles e, para esse objetivo, sua habilidade como programador é muito mais determinante do que o fato de seu aplicativo ser escrito em Java, Swift ou C#.

Sim, tudo isso é muito recente e ainda há um longo caminho evolutivo a se trilhar. Contudo, já é possível criar uma infinidade de coisas que eram impensáveis há alguns anos atrás sem as ferramentas que dispomos atualmente. Cada vez mais veremos o mundo da web rodando fora dos navegadores: Firefox OS, Gnome Shell, a interface "Metro" do Windows 8 e de boa parte das smart TVs que você tem em casa, são apenas alguns exemplos.

Se você continua torcendo o nariz, lembre-se de que o Java cresceu a partir desta mesma premissa: quem se recorda do "write once, run everywhere"? Pois é! No fim das contas, foi a web que conseguiu entregar o prometido.

Publicado originalmente na coluna Post do Kemel na revista Locaweb #52