sábado, 18 de julho de 2009

A pergunta maldita: Qual a melhor plataforma móvel?

Ola pessoal,

Nas últimas duas semanas a lista de Java ME do SouJava (para se inscrever envie e-mail para j2me-list-subscribe@soujava.dev.java.net) o assunto a respeito do futuro das plataformas mobiles e do próprio JME voltou a gerar flames e opiniões acalouradas e bem parciais ;-) (me incluo nessas opiniões).
Então, resolvi escrever um pouco sobre essa pergunta "maldita": Qual a melhor plataforma móvel?

O Cardápio

Antes de qualquer coisa, é preciso saber quais são as opções entre plataformas e linguagens que demos povoando o mercado:

  • Symbian (S60): Presente principalmente nos smartphones da Nokia.
  • iPhone OS: Sistema operacional criado pela Apple para o iPhone
  • Android: SO criado pelo Google e já adotado pela HTC e Motorola. Logo, Sony Ericsson.
  • Linux: Algumas distribuições de Linux já foram vistas povoando alguns celulares, como a A1200 da Motorola.
  • Plataformas proprietárias: Para os dispositivos mais simples (não smartphones) as fabricantes possuem seus próprios SOs, mais simples.
A Plataforma Java

Porque eu não coloquei o Java como uma plataforma móvel junto com as demais acima? Porque ali preferi listar os SOs, e que são de fato uma plataforma. O Java ME ou FX Mobile são especificações ou linguagens e que com excessão do iPhone OS rodam em todas as plataformas citadas.
Ou seja, podem espernear e gritar a vontade, mas quando se fala em número de aparelhos que sua aplicação pode alcançar, uma aplicação em Java ME tem muito mais potencial do que as demais.

Recursos nativos x Java

É (muito) óbvio dizer que Objective-C (iPhone) ou Symbian possuam mais recursos do que JME por um simples motivo: são as linguagens nativas do telefone. Então é claro que o acesso a um recurso novo ou diferenciado vai estar disponível primeiro nessas linguagens.
Entramos então na questão de que o JCP (Java Community Process) que foi criado para ajudar no crescimento do Java está na verdade atrapalhando o JME, mas isso é assunto pra outro post (bastante polêmico por sinal...), já que ele demora em especificar a API para novos recursos, exemplos: MIDP 3, Location API 2.0 e outras...

Mas, o que dizer de recursos já sedimentados como o bluetooth por exemplo? Eu não preciso aprender como Symbian ou como o Objective-C trata isso, eu preciso saber apenas a API da JSR-82 e eu teria meu aplicativo compatível com todos os devices... lindo não?

E a resposta pra pergunta maldita?

Poderia escrever uma dissertação de mestrado sobre essa pergunta, usar diferentes aspectos de comparação e então chegar a uma conclusão e mesmo assim teria milhares de pessoas que iriam contestar, esperniar e me xingar. Então, eu vou usar uma linha de raciocínio bem simples: número de potenciais clientes.

O pessoal no geral fica se degladiando sobre os SOs dos smartphones e com recursos super modernos, que se pegarmos o Brasil, estão na mão de menos de 30% do usuários de telefone celular.
Então, temos um número enorme de pessoas usando celulares low-end que custam menos do que 150 dólares com recursos (pasmem!!) ainda limitados. Sim, são MILHÕES de celulares sem touch-screen, GPS ou acelerometro? Incrível não?!?! É, mas isso existe ainda! ;-)

E acredite, essas pessoas consomem e também querem utilizar seu celular para algo mais além de simplesmente telefonar, cabe a nós (desenvolvedores, designers, pesquisadores, gerentes, etc) oferecer a esses usuários serviços e softwares simples de usar e bonitos.

E adivinhe só, qual a linguagem que "ataca" principalmente esses telefones? Sim, é o "condenado" Java ME! Não há números exatos (e seria quase impossível conseguir algo verdadeiro), mas o número de celulares low / middle end é esmagadoramente maior do que o número de smartphones disponíveis por ai.
Além disso, seu aplicativo Java também irá rodar nesses smartphones (menos no iPhone).

E o mercado corporativo?

Vamos imaginar uma situação e VOCÊ responde:
Seu cliente chega e diz que precisa colocar em campo uma força de vendas automatizada, mas esses trabalhadores também vão usar o dispositivo para fazer ligações, ou seja, são telefones celulares. E ele tem um contrato com uma operadora para conseguir os telefones mais baratos e que além disso ele já tem uma base com vários Nokia, Motorola e alguns LG (!!) mas que ele ta pensando em adquirir mais alguns que você aconselhar.
Ah, e além disso, esse telefone passa por situações onde ele pode cair, riscar e em sua grande maioria é operado por pessoas com pouco relacionamento com a tecnologia.

Me diga você, o que você escolhe?

Bom, podem começar os flames e xingamentos. Mas essa é a minha opinião, pois apesar de não ser algo com totais recursos, continua sendo uma linguagem de fácil aprendizado, menos segmentação e maior número de possíveis usuários.

Abraços
Neto

5 comentários:

Lucas Abrão disse...

Esse tipo de discussão é mais velho que andar pra frente ehehehe e muito bacana o post e os pontos de vista apresentados! Meus parabens d++ pelas observações e vc eh o cara rapaz!! Abração!

Bayron disse...

Ótimo post Neto. Concordo com o seu ponto de vistam, lembrando que o BlackBerry também rodam J2ME ;-). J2ME é o Highlander das plataformas, bem que a MIDP podia sair para dar mais um empulso a ele.
Abraço

Jairo disse...

Como faço para usar o Nokia Sports Tracker. Instalei no meu celular e nao sei como usá-lo.
Grato
Jairo
jairo@ritmocardio.com.br

Joel Lazzari disse...

Olá Neto, muito bom o seu post.
Estou a alguns dias decidindo qual plataforma móvel começar a desenvolver. Seu post confirmou pra mim que será em J2ME.

Já faço algumas coisas em J2SE, então era uma tendência - porém ainda estava indeciso.

Preciso desenvolver um sistema simples de Automação de Força de Vendas (pedidos p/ vendedores externos).

Tenho uma pergunta simples e sua opinião é importante pra mim: qual celular escolher? Qual celular vc indica pra essa necessidade?
obs:
1 - tem que ser barato e rodar java;
2 - tem que ser simples de usar;
3 - com caneta ou sem caneta?
4 - Talvez no futuro - não é uma necessidade no momento - que tenha suporte a JSR-179 Location API;

SuperDriveFan disse...

Neto, estou começando agora a trabalhar com Java para dispositivos móveis.
Instalei o Netbeans com o pacote mobility.
Tenho muito a aprender ainda e vou acompanhar de perto seu blog.
Quem me deu a dica foi o Spock.
Se puder me ajudar indicando o caminho, agradeço muito.
Um abraço.
Fabio, Campinas-SP