EMPRESA CLIENTES PRODUTOS SERVIÇOS ARTIGOS SUPORTE DOWNLOADS CONTATO


Porque não é igual: as diferenças ao desenvolver soluções de mobilidade – Parte I

28/12/2006

Olá a todos!

Quando converso com desenvolvedores que nunca programaram para dispositivos móveis, quase sempre sinto aquele ar de "não teria dificuldade nenhuma de programar dispositivos móveis. É igual!". Tento explicar delicadamente que não é bem assim, mas as pessoas raramente acreditam.

Para aqueles que têm um mínimo de modéstia, tentarei esclarecer ao longo deste texto as diferenças fundamentais que existem no desenvolvimento de sistemas móveis.

Para os que já têm realmente alguma experiência no desenvolvimento deste tipo de solução, sei que muito já se foi escrito sobre o tema anteriormente, mas acredito que este é um bom momento tanto para reforçar quanto para atualizar os conceitos face às inovações tecnológicas recentes. Como o assunto é um pouco extenso, trataremos o tema em dois artigos, e este é o primeiro deles. Vamos a elas então:

Processamento: Apesar de a Marvell/Intel ter recentemente anunciado processadores com clock de até 1,2Ghz (http://www.marvell.com/press/pressNewsDisplay.do?releaseID=680), o poder de processamento dos dispositivos móveis não é algo com que se possa contar de forma abundante. Primeiro porque tais processadores são desenvolvidos primariamente para consumir pouca energia, e depois é que se pensa em performance; em segundo lugar, por questões técnicas que estão fora do escopo deste texto, tais processadores são baseados normalmente em arquitetura RISC, e não CISC, como a maioria dos processadores para desktop. Isto tudo somado significa que não dá pra comparar um processador de dispositivo móvel com um para desktop de mesmo clock: Este último ganha com folga.

Memória: Assim como acontece com os processadores, a disponibilidade de memória nos dispositivos móveis tem aumentado bastante nos últimos tempos - tanto de execução quanto de armazenamento. Mas esta oferta ainda é ínfima se comparada a dos desktops. Um ponto importante (e que muitos desenvolvedores ignoram) é que em dispositivos móveis não existe memória virtual, e conseqüentemente o desenvolvedor precisa se preocupar com a questão de memória disponível nos palmtops e celulares (quantas vezes você se preocupou se o seu programa desktop teria memória suficiente para rodar?).

Outro ponto importante é a disponibilidade de cartões de memória (muito comuns hoje), mas que não têm garantias de estarem presentes o tempo todo no dispositivo. É preciso, pois, pensar em estratégias para lidar com todos estes tópicos relacionados à memória.

Armazenamento de dados: Ainda relacionado à questão da memória, é importante pensar em como os dados serão armazenados. Não existem tantas opções como no desktop por aqui. Você terá à disposição alguns poucos SGBDs de baixa performance (se comparados aos de desktop) e recursos resumidos, arquivos texto e talvez XML. E além disso é necessário pensar em se seus dados vão "caber" na memória disponível, e caso contrário, definir estratégias de filtragem/escolha de dados, e/ou recuperação on-demand de certas informações.

Suprimento de energia: Este tema sempre foi problemático em dispositivos móveis, e não progrediu muito nos últimos anos. O que melhorou foi que agora a maioria dos dispositivos não perde todos os dados quando "falta energia" (isto acontecia - pode acreditar), pois utilizam memória Flash-ROM para armazenamento de dados. De toda forma ainda precisamos estar atentos a isto, pois dados ainda não persistidos no armazenamento (que ainda estão em memória de execução) se perdem em um "apagão". E, se a falta de energia é coisa rara em desktop, nos dispositivos móveis é uma coisa relativamente rotineira.

Estratégia de backup: Ainda considerando o tópico anterior, em alguns contextos faz-se necessário o desenvolvimento de estratégias / ferramentas de backup, seja para um cartão de memória ou para um desktop. Analise se a sua solução de mobilidade terá esta necessidade para garantir uma maior confiabilidade.

Vamos parar esta parte do artigo por aqui, e em breve enviarei a segunda parte, com a continuação dos tópicos e a conclusão. Por enquanto, vou deixar abaixo alguns links de referências interessantes sobre o tema para quem quiser estudar mais detalhadamente sobre o tema (todas as páginas estão em inglês. Infelizmente existem poucas referências sobre mobilidade em nossa língua – com raríssimas exceções como este portal):

http://www.microsoft.com/windowsmobile/developers/default.mspx

http://www.developer.com/ws/

http://www.palmos.com/dev/start/

http://www.netbeans.org/kb/trails/mobility.html

http://www.symbian.com/developer/

Além destes links, não deixe de voltar a este portal para ler mais artigos sobre o tema e também a continuação deste artigo.

Um abraço,

Aderval Mendonça