Pplware

Porque razão será o iOS mais fluido e sólido que o Android?

Quem me conhece sabe que eu sou utilizador de Android, seja ser meu amigo, ou por utilizar um dos muitos trabalhos que tenho espalhados pela net. É indiscutível que o Android está a crescer, mas não suficiente para me convencer a comprar um tablet com este Sistema Operativo.

Devido à minha curiosidade decidi então adquirir um iPad, não só para ficar a conhecer o iOS mas também para programar para a plataforma.

Nas últimas 24 horas que tenho utilizado o iPad tenho ficado cada vez mais com a certeza que o iOS é definitivamente mais sólido, mais rápido e mais fluído que qualquer Android já alguma vez já lançado. Vou então partilhar a minha experiência.

O meu percurso no mundo dos sistemas operativos móveis tem sido interessante pois tenho conseguido seguir as evoluções a nível de hardware nos vários Androids que tenho vindo a adquirir. Ao mesmo tempo fui sempre deitando o olho na concorrência, o iOS e desde então que ando de olho no iPad. Porquê iPad? Porque não há um único tablet com Android que funcione correctamente. O Honeycomb foi uma desgraça, nem com dual cores poderosíssimos se consegue aguentar sem se arrastar por todos lados. Era esta a tentativa da Google de combater o iPad? Infelizmente sim.

Em Novembro de 2011 sai o Android 4.0, o Ice Cream Sandwich, que prometia resolver os problemas da fragmentação e unificar o sistema para smartphones e tablets… mas nada mudou. Continuamos a ter fragmentação por todo o lado, empresas a lançar telemóveis novos ainda (!!!!!!!) com o Gingerbread, tablets com o 4.0 ainda são muito poucos…ou seja só me restou comprar um iPad. É importante explicar que tenho dois telemóveis com o 4.0 nativo e que, contrariamente aquilo que parece pelo que escrevi acima, gosto bastante do Ice Cream Sandwich. Foi uma grande evolução e está muito sólido a comparar com as edições anteriores. Mas agora entramos no tema polémico que vem explícito no título: porque razão é o iOS mais fluído e sólido que o Android?

Há muitas teorias sobre este fenómeno, mas a verdade é que comparando o meu HTC One X com o “velhinho” iPhone 4 (quad-core vs single-core respectivamente) o iOS é substancialmente mais rápido, fluído e mais agradável de se usar (devido à fluidez) do que o One X. Pensei que estava a imaginar coisas então decidi ir buscar um iPad para ser o meu primeiro dispositivo móvel da Apple e para poder comparar como deve ser a experiência de utilização dos dois sistemas operativos… mas só me fez ficar mais com a certeza que o iOS é uma plataforma muito mais sólida que o Android.

Para não ser bombardeado com comentários a chamar-me fanboy é importante explicar que sempre tive Androids e tenho muito trabalho publicado tanto ao nível de kernels como aplicações Android, portanto todo este feedback acerca do iOS é real e não está inflacionado por gostos pessoais.

Ora qual será a verdadeira razão para o iOS ser assim tão mais sólido e rápido que o Android? Eu tenho algumas teorias, uma delas tem a ver com a linguagem utilizada para se programar os sistemas. O SO da Apple é programado em Objective-C e Android é programado em Java. Para mim o verdadeiro culpado da fluidez do iOS é o Objective-C porque é uma linguagem muito mais baixo nível (porque é baseado em C) do que o Java que correm em cima de uma máquina virtual chamada Dalvik, logo é muito mais alto nível. Correr em baixo nível significa que corre mais perto do hardware, mais perto da linguagem de máquina sendo portanto muito mais rápida de interpretar. Alto nível é o contrário e neste caso temos o Java que é compilado na hora para a máquina virtual Dalvik e só depois o Dalvik é que comunica com o hardware através do Kernel e por aí fora.

Isto é muito fácil de se reproduzir: quem tiver Macintosh pode criar um emulador do iOS a partir do XCode e observar a fluidez com que corre pois funciona em código nativo, em C. Depois basta correr um emulador do Android e ir tomar um café, voltar e ainda estar a inicialiazar, já para não falar do lag de outro mundo que se sente a correr um emulador do SO da Google. Este é o melhor exemplo para se comparar as velocidades dos dois sistemas. O Android num smartphone é obviamente mais rápido que no emulador mas a teoria por trás é igual.

Outra teoria famosa é o facto do iOS correr tudo na main thread dando a “ilusão” de fluidez. Isto pode ser fácilmente observado abrindo o browser num iPhone e quando se faz scroll parece que a página fica cortada até tirarmos o dedo do ecrã e aí é renderizada. O que acontece é que como corre tudo na main thread o evento de receber um touch input passa a correr em “foreground” e o resto pára até que o input seja null outra vez. Isto dá a ideia que o multi-tasking no iOS é uma coisa relativa, e na realidade é, funciona de modo completamente diferente do Android. Qual das duas implementações está correcta eu não sei…será que o Android ainda não usa e abusa do facto do standard hoje em dia é termos um multi-processor unit e não um single-processor? É possível que não esteja ainda muito optimizado para multi-cores, mas sinceramente espero que isto não seja verdade ou então é uma falha gigantesca da Google.

Em termos de solidez o iOS é rei e senhor. Quantas vezes tenho apps que me crasham no Android, ou que criam mil processos que ficam a estoirar bateria e dados em plano de fundo sem eu ter dado autorização? (app do Facebook por exemplo), quantas vezes o meu sistema fica bloqueado porque uma app que descarreguei vem mal programada e fica ali a tentar aceder a entradas num array que não existem (os famosos NullPointerExceptions)… aqui culpo também a Google pela sua falta de controlo sobre o conteúdo do market. O meu iPad funciona sem crashes, sem lags e sem problemas com aplicações (e já tirei muitas mesmo), pede me autorização para uma app poder aceder à minha localização ou às push notifications (coisa que não acontece no Android e aqui volto a apontar a app do Facebook que me cria 5 serviços em plano de fundo a fazer sabe-se lá o quê). Agora eu pergunto, onde está esta solidez no Android? Não existe.

Isto é apenas um relato da minha nova experiência que deixa algumas questões no ar propícias a debate e a discussão.

Concordam, não concordam? Se não concordam, porquê?

Exit mobile version