Para muitos profissionais de TI o HTML5 representa a chegada de algumas novas características interessantes, com potencial para provocar uma mudança de paradigma na programação Web. Polvilhe um pouco de HTML5 em seu código e seus sites serão mais rápidos e mais extravagantes. Mas a realidade do que HTML5 pode fazer por aqueles que procuram APPs na Web está aquém do hype.
O momento é propício para admitir que existem limitações sérias com o modelo. Não só há razões para lamentar sobre o fato de o HTML5 não realizar todos os nossos sonhos de atingir o nirvana na Web, como até mesmo razões para abster-se de usar o HTML5, em alguns casos.
A verdade é que, apesar de suas capacidades poderosas, o HTML5 não é a solução para todos os nossos problemas. Suas características adicionais são convincentes e ajudam a tornar aplicativos Web concorrentes formidáveis para aplicativos nativos, mas questões com segurança, limitações para armazenamento local de dados, os desafios de sincronização e as políticas de uso, deveriam ser suficientes para frear todas as expectativas. Afinal, cada tecnologia tem suas limitações.
Listamos dez duras verdades que os desenvolvedores Web devem considerar para tirar o máximo do HTML5.
1:: Segurança é um pesadelo
Na ponta cliente, o problema fundamental é que o usuário final tem controle sobre o código executado na máquina. No caso de aplicações Web, quando o seu browser vem com uma ferramenta de depuração, é mais fácil do que nunca abusar desse controle.
Com um depurador JavaScript como o Firebug, quem tem alguma curiosidade sobre o que o Facebook, o Google, ou qualquer outro site está fazendo pode simplesmente começar a inserir breakpoints e ver o código. Isso é ótimo para depurar e aprender como operar sites, mas também é um pesadelo para a segurança.
Suponha que você tenha o interesse em mudar o valor de uma variável. O Firebug ou qualquer um dos depuradores presentes em outros navegadores pode ajudá-lo a ajustar as variáveis como você desejar. Quer enganar seus amigos e fazê-los crer que você está em determinado local, longe do local onde você de fato está? É fácil editar as variáveis latitude e longitude para colocar seu browser em qualquer lugar do mundo. Todas as características puras do seu aplicativo Web podem ser modificados, e o browser torna mais fácil essa modificação do que um APP de código nativo.
Isso significa que os aplicativos baseados em clientes HTML5 podem não ser confiáveis para a coleta dos dados, e é melhor para que todos tenham consciência de suas capacidades.
2 :: O armazenamento local de dados é limitado
A permissão para o armazenamento de até 4Gbytes de dados estruturados pelo banco de dados presente no browser, no lado do cliente _ de forma parecida a como vinha ocorrendo com o uso das cookies, mas tentando eliminar as limitações impostas, como o tamanho de 4Kb _ é uma das funcionalidades mais badaladas do HTML5.
O desenvolvedor deve lembrar, no entanto, que o armazenamento local é por site e estará disponível para seus scripts toda vez que o site que originalmente armazenou os dados for acessado, de modo a poupar largura de banda e melhorar o desempenho.
E também que os banco de dados dos browsers não dão aos usuários o mesmo poder sobre seus dados que eles teriam em outros aplicativos.
Por exemplo: o usuário não pode mover os dados armazenados para outra máquina, fazer cópias, fazer um backup, ou abri-lo com um aplicativo diferente do navegador. Os arquivos não são projetados para se mover facilmente, embora seja possível fazê-lo se o usuário souber onde e como localizá-los. Até porque, não são como planilhas ou documentos de texto, fáceis de abrir com qualquer editor.
3:: Dados locais podem ser manipulados
O usuário não pode ter controle sobre os dados armazenados localmente, mas o site central também pode ter problemas por causa com a sincronização e até mesmo com a segurança desses dados.
Não há como o desenvolvedor garantir que o banco de dados local nunca será manipulado pelo usuário. Embora não existam ferramentas que tornem a edição dos dados locais e/ou a atualização de privilégios, tarefas fáceis para os usuários, ainda assim elas podem vir a ocorrer. Brechas de segurança do código JavaScript , por exemplo, são apenas um dos caminhos possíveis para tal.
4:: A sincronização dos aplicativos offline é um pesadelo
A possibilidade de armazenamento local de dados local do HTML5 melhora imensamente a capacidade de usar aplicativos Web no modo offline. O único problema é a sincronização de dados.
Se um aplicativo Web está conectado à Internet, pode sempre salvar os dados para a nuvem. Quando está offline, as alterações não são sempre armazenados na nuvem. Quando alguém muda de navegador ou usa uma máquina diferente, cópias começam a proliferar e as dificuldades de sincronização também.
Os desenvolvedores devem se preocupar em fornecer a interface para que o usuário possa lidar com a sincronização. A especificação HTML5 não oferece qualquer ajuda.
Programadores gerenciar essas dores de cabeça utilizando sistemas de controle de versão, que se tornaram cada vez mais sofisticados para lidar com esse problema. No entanto, apenas ter a tecnologia não significa que ela seja de fácil uso. A fusão de vários repositórios GIT pode levar tempo.
5:: A nuvem lhe deve nada
Não é justo culpar HTML5 por todos os problemas estruturais com o armazenamento de dados na nuvem, mas a nuvem é uma parte essencial do modelo, que tira proveito dela para corrigir todas as dores de cabeça da instalação de software e backup de dados.
Dadas as limitações de armazenamento local de dados do HTML5, a maior parte do armazenamento de dados das APPs Web continuará nos servidores, e há momentos em que esta abordagem poderá ser devastadora.
Recentemente o Facebook decidiu que não gostava de um plug-in baseado em Linux para fazer upload de fotos. O plug-in foi removido, juntamente com todas as fotos que foram enviadas ao usá-lo.
Essas histórias não são comuns, mas estão se tornando cada vez mais frequentes, por muitas razões. E podem vir a ser um problema ainda maior se considerarmos que muitos termos de serviço de aplicações Web não responsabilizam os fornecedores por perdas de dados, deixando o usuário sem nenhum recurso legal para recuperá-los. Alguns dos acordos de serviço mais ultrajantes insistem que os dados podem até mesmo serem excluído sem "nenhuma razão” para tal.
A estrutura do HTML5 praticamente garante que qualquer do dado em cache local no navegador do usuário será armazenado na nuvem, fora de seu alcance e controle. O hype HTML5 diz que esta é uma característica fantástica, mas esquece que ele pode se voltar facilmente contra o modelo.
6:: Upgrades forçados não são para todos
Uma história, apócrifa, circula na rede. Consta que determinada pessoa usou uma conta de Gmail para conexões casuais com pessoas em bares. Quando o Google+ foi lançado, todas as lembranças dessas pessoas vieram à tona, porque endereços antigos para os fóruns de discussão voltaram à superfície. Todos os dias, velhos conhecidos reaparecem lá pedindo para serem incluídos em círculos de discussão.
Quando as empresas Web necessitam fazer o upgrade de seus serviços, normalmente o fazem de uma vez, contemplando todos os usuários ao mesmo tempo. Se, por um lado, isso livra os usuários de terem que gerenciar a instalação do upgrade, por outro acaba virando um pesadelo para qualquer um que não queira usar os novos recursos.
E este não é apenas um problema para a privacidade das pessoas, como no caso acima.
7:: Web Workers não oferecem priorização
Web Workers estão entre os recursos mais intrigantes do HTML5. Ele acelera o carregamento de páginas web cheias de código javascript, por ser capaz de executá-los em processos separados do restante da página web. Em outras palavras, o HTML5, com o Web Workers permite que o navegador se comporte como um sistema operacional, ainda que parcialmente.
Infelizmente, não há maneira de gerenciar a carga de trabalho de forma eficaz ou de definir prioridades.
8:: Incompatibilidades de formato abundante
Não culpe os comitês do HTML5 pelo fato de os desenvolvedores de browsers não tenham decidido implementar todos os vários formatos áudio e vídeo. São os desenvolvedores que têm que lidar com as consequências quando um arquivo que funciona perfeitamente em um browser não faz nada em outro. Há um teste para isso? Desenvolvedores de API foram espertos o suficiente para incluir a função canPlayType, mesmo que ela não seja suportada por todos os navegadores.
9:: Implementações são browser-dependentes
A visão idílica do HTML5 é uma coisa, a realidade grungy de suas implementações é outra. Verdade. Os programadores estão tentando fazer o seu melhor para construir os sonhos dos arquitetos, mas algumas tags e objetos não funcionam corretamente.
Por exemplo, há muitos desejos sobre a API de geolocalização do HTML5. Ela oferece alguma proteção para a privacidade e um pouco de controle sobre a precisão. Mas em determinado browser, sempre dá time out.
Em última instância, esta é mais uma reclamação sobre como os navegadores não conseguem implementar recursos HTML5 de forma consistente, ao contrário de um ser que visa a estrutura da API em si.
10:: Idiossincrasias de hardware impõem novos desafios
Também parece injusto reclamar sobre como alguns desenvolvedores de browser vão além do dever de proporcionar um desempenho muito melhor. Mas nenhuma boa ação fica impune.
A Microsoft tem feito um grande trabalho de melhorar o desempenho de objetos Canvas no IE, integrando-os com os drivers de baixo nível de hardware. A empresa encomendou jogos simples, como pirateslovedaisies.com, para demonstrar o recurso.
Mas agora os programadores devem prestar atenção para saber se esse recurso adicional está disponível ou não, e se seu código está sendo executado.
FONTE: UOL Tecnologia