28 de ago. de 2008

Uma pitada de JustJava - Fragmentação

Fragmentação: o copo esta meio cheio, ou meio vazio?!

Minha primeira intenção com este tema era tentar atrair o público com este famoso dilema psicológico da visão otimisma ou pessimista. Alguns amigos me apoiaram rapidamente dizendo: "Do que diabos vc ta falando?!". Resolvi então publicar neste post uma breve descrição do que irei tratar no dia 12 de setembro as 14 horas no auditório 4. O localização exata esta no final deste post.

Fragmentação em dispositivos móveis é um problema para o desenvolvimento em massa de aplicações. Obviamente, durante a palestra o foco será em Java ME; mas este problema atinge praticamente todas as linguagens. Isso acontece em diferentes níveis:

- No nível de design, os dispositivos apresentam recursos que outros não tem: é a câmera, o touch screen, GPS ou ainda o sensor de movimento (acelerômetro); recrusos que não estão disponíveis em todos os aparelhos.

- No nível de implementação, este problema aparece quando os dispositivos não apresentam um conjunto de API's (Application Programming Interfaces) que permitem com que o desenvolvedor crie uma aplicação utilizando um recurso físico do aparelho. Um bom exemplo, é a MMAPI (Multimedia API) em Java. Ela permite acessar os recursos de som, video e imagem dos aparelhos. Mas o fabricante não é obrigado a implementar todas as API's, visto que um determinado aparelho pode não possuir a câmera, por exemplo. Porém, isto deixa uma abertura para que, inclusive aparelhos que possuam câmera, não disponibilizem determinados recursos da MMAPI.

Mas qual problema?
Java ME é a linguagem mais presente nos celulares. Cerca de 2 bilhoes de aparelhos possuem uma Java Virtual Machine. Quando alguem escolhe usar Java para desenvolver uma aplicação, esta pensando em atingir o maior número de devices possíveis, visto as limitações de design como tamanho de tela, recursos do aparelho, etc.
Devido a essas limitações, fica impossível assegurar que uma aplicação irá atingir todos os dispositivos, apesar de possuírem inclusive o design especificado. Você pode desenvolver uma app. para celulares que possuem câmera e Java. Porém pode não atingir todos estes dispositivos. Punk!?

Em 2006 estive no JavaOne onde a Sun fazia a promoção da MSA, de modo a solucionar o problema da fragmentação. Voltando um pouco em 2003, dizia-se que a fragmentação era problema do passado: tinha nascido a JTWI. E mais recentemente, no mês passado a Sun publicou um artigo sobre a futura MSA2.

Já vi bastante gente importante no mundo ME, chateada com isso como Vikram Goyal em um artigo sobre as diferenças entre as implementações; além de discussões calorosas sobre a possível morte do Java ME, o surgimento de uma implementação mais rica, próxima ao JSE para celulares já que os recursos dos dispositivos melhoraram bastante com relação ao tempo da especificação de MIDP, CLDC e CDC; há ainda os que prevêem o JavaFx.

Mas a dura realidade da fragmentação, torna-se bastante inspiradora sob o ponto de vista mercadológico. As aplicações que mais se destacam, não são voltadas para o uso de massas; e quando são, são desenvolvidas com suas particularidades.
Um primeiro exemplo é o Google Maps que disponibiliza diferentes versões para BlackBerry, Symbian e Java. Se um dispositivo possui GPS, ele acessa os recursos para melhor precisão; em outros casos, faz triangulação para dar a localização atual mais próxima.
Outro exemplo: o Yahoo! Go que também se adapta ao tipo de resolução de cada device.
E o caso iPhone? Onde todas as aplicações só funcionam no iPhone?! E esta sendo promovido através do iTunes.

Você pode estar pensando, ainda assim esta fragmentado. Ainda assim, o esforço de desenvolvimento não esta sendo reduzido. E você esta certo!

A fragmentação inclusive atinge até os diferentes modelos de negócio: O getJar fornece aplicações freeware, o handango uma espécie de iTunes; além de games e conteúdos distribuídos exclusivamente através de parceiros e operadoras. Tudo isto têm que estar linkado ao device do consumidor final.

Todos os dias novos devices são lançados em um mercado extremamente competitivo, onde o que irá ganhar o consumidor final chama-se: diferencial. Portanto, podemos pensar que a fragmentação não é um problema que precisa ser resolvido, pois ela não esta aí para ser resolvida; mas para ser uma vantagem competitiva. Adaptar-se a ela sim, é um problema que precisa ser discutido.

As aplicações para estes dispositivos precisam ser dinâmicas e se adaptar aos recursos nativos quase que instantâneamente em tempo de execução. No evento iremos ver que se trata de uma questão tecnológica e mercadológica; e que flecha já foi lançada nesta direção visto a evolução das lojas e dos ecossistemas de comercialização das aplicações; bem como o surgimento de novos padrões tecnológicos como é o caso dos Widgets e dos Widsets.



Quer saber mais?

Data: 12 de setembro (sexta-feira)
Horário: 14h00 às 15h00
Local: Auditório 4
No SENAC-SP (clique para ver o mapa).


Até lá! :-)