Os trabalhos de especificação do HTML 5 estão em andamento há quase quatro anos e boa parte dos desenvolvedores web já conhece e deseja as novidades. Entretanto, o termo HTML 5 é usado como um "guarda-chuva" para diversas melhorias em HTML, JavaScript e CSS, o que dificulta a tarefa de avaliar sua maturidade e adoção. Existem tanto os que defendem que o HTML 5 deva ser adotado, quanto os que apresentam controvérsias, principalmente os problemas de segurança do JavaScript e as diferenças entre os navegadores.
A adoção do HTML 5 certamente depende das necessidades de cada aplicação, mas considerando as funcionalidades mais desejadas nos navegadores modernos, já podemos usá-lo?
Funcionalidades
Para responder a essa pergunta precisamos definir claramente o que significam "funcionalidades mais desejadas" e "navegadores modernos". As primeiras são aquelas que tornam possível ou facilitam muito a implementação dos requisitos de aplicações ricas para a web. É o caso das funcionalidades definidas pelos conjuntos de tecnologias e especificações, que são apresentados a seguir.
Aplicações Offline
As funcionalidades para aplicações online são importantes para trazer a experiência de aplicações desktop para a web, principalmente em ambientes onde a conexão com a internet é lenta ou eventual. A persistência ainda é limitada a 5 MB na maioria dos navegadores, mas é importante notar que esses "bancos de dados do navegador" não têm o objetivo de armazenar todos os dados do usuário indefinidamente; apenas de retê-los até a próxima sincronização com o servidor ou acelerar a carga de páginas.
Novas APIs JavaScript
As novas APIs JavaScript simplificam o desenvolvimento de diversas funcionalidades que hoje dependem de tecnologias proprietárias não padronizadas ou de particularidades dos navegadores.
Estilo e semântica
- Tags Semânticas (article, nav, section etc.)
- Layout em colunas
- Opacidade
- Cantos arredondados e bordas
As tags semânticas e o CSS3 são muito importantes para os web designers, que com elas poderão reduzir e melhorar a codificação de layouts de páginas, além de fazer com estilos o que hoje é feito de forma muito mais trabalhosa com imagens, ou mesmo código JavaScript.
Multimídia
Usando as tags multimídia e para desenho em 2D, o desenvolvedor pode reduzir muito a necessidade de plugins externos, como Java e Flash. Há ganhos em produtividade, desempenho e segurança.
Para conhecer mais sobre estas funcionalidades e diversas outras propostas pelo HTML 5, recomendo esta excelente apresentação do grupo html5rocks.
Navegadores
Para verificar o suporte dos navegadores, vamos considerar a versão mais recente e uma anterior dos três navegadores mais usados no desktop (IE, Firefox e Chrome) e os navegadores padrão dos dispositivos iOS (iPhone/iPad/iTouch) e Android. A tabela abaixo detalha o suporte às funcionalidades selecionadas. Os dados vêm do site caniuse.com, que rastreia a implementação do HTML5 pelos browsers.
IE | Firefox | Chrome | iOS | Android | ||||||
---|---|---|---|---|---|---|---|---|---|---|
9 | 8 | 6 | 5 | 13 | 12 | 4.3 | 4.1 | 2.3 | 2.2 | |
Cache da aplicação | N | N | S | S | S | S | S | S | S | S |
Persistência chave-valor | S | S | S | S | S | S | S | S | S | S |
Web Sockets | N | N | S | P | S | S | S | N | N | N |
Web Workers | N | N | S | S | S | S | N | N | N | N |
Geolocalização | S | N | S | S | S | S | S | S | S | S |
Histórico | N | N | S | S | S | S | P | N | S | S |
Tags semânticas | S | N | S | S | S | S | S | S | S | S |
Multimídia | S | N | S | S | S | S | S | S | S | N |
Gráficos 2D | S | N | S | S | S | S | S | S | S | S |
Layout em colunas | N | N | S | S | S | S | S | S | S | S |
Opacidade | S | P | S | S | S | S | S | S | S | S |
Cantos arredondados | S | N | S | S | S | S | S | S | S | S |
Pode-se ver que o suporte dos navegadores às funcionalidades fundamentais destacadas nesse artigo já é razoável. As principais deficiências estão no Internet Explorer e no suporte a Web Sockets e Web Workers, principalmente nos smartphones.
Os Web Workers, que são scripts executados em background, juntamente com com os Web Sockets (canais de comunicação bidirecionais com o servidor), são importantes para aplicações onde os usuários interagem entre si, como em chats e jogos. Para contornar a falta de suporte no IE e nos smartphones, pode-se usar AJAX Reverso (Comet) ou frameworks como o Atmosphere e o Kaazing, que permitem que se desenvolva a comunicação bidirecional usando as funcionalidades disponíveis em cada navegador.
As deficiências do Internet Explorer são mais difíceis de se contornar. Além de sugerir que o usuário atualize o navegador, uma alternativa para ter maior suporte ao HTML5 no IE é recomendar a instalação do Chrome Frame, um plugin que faz com que o IE (6 ou mais recente) apresente as páginas usando o engine do Google Chrome.
Conclusão
Claramente, o suporte ao HTML 5 melhora a cada versão dos navegadores e, nos casos em que não é totalmente suportado, existem alternativas. Decidir se o HTML 5 está maduro o suficiente e se as alternativas são aceitáveis ainda é muito particular para cada aplicação. Mas nos casos em que pode ser usado, o HTML 5 certamente torna possível (ou muito mais simples) o desenvolvimento de aplicações ricas para a web.