master, que grande artigo
http://seekingalpha.com/article/1018841-the-unsung-apple-advantage?source=feed
a Apple tomou tantas decisões bem tomadas que neste momento é uma empresa que pode ser liderada por um idota...é pena estar mesmo a ser liderada por um
Inc,
Acho que desta vez estás enganado. A análise que fazes é demasiado simplista, partes de pressupostos que não são necessariamente correctos, e as conclusões que tiras são a meu ver erradas, mesmo que os pressupostos fossem correctos.
Começando pelos pressupostos: objective-c, por ser compilado, é mais rápido do que java em dalvik. Não é necessariamente verdade.
Objective-c não é propriamente uma linguagem rápida, pelo menos não ao nível de c ou mesmo de c++. Objective-c é uma linguagem relativamente dinâmica, que tem por exemplo dynamic typing, e é baseada em message passing. Isto traz overhead, e exige um run-time na altura da execução. Ou seja, objective-c não está a "bater directamente no metal" como c está (c++ também tem algum overhead mas é tipicamente menor).
Os developers em iOS, quando querem performance, também passam para c++. Os jogos mais exigentes não são feitos em objective-c, são em c++ (eventualmente isto não é só uma questão de performance, mas também - por incrivel que pareça - uma questão de portabilidade, já que os motores dos jogos são tipicamente feitos em c++ para serem reutilizados em várias plataformas).
Agora o reverso da medalha: Java é lento... Não é verdade. Java, com uma boa VM é rápido. Java com uma boa VM é mais rápido do que c ou c++ com um compilador mediano (mas claro que não é mais rápido do que c/c++ com um bom compilador). E o Dalvik, actualmente é uma boa VM (o artigo que linkas é de 2009, e francamente não percebi onde é que ele estava a correr os testes).
Não existe muita informação fidedigna na net sobre a performance do Dalvik, mas o abstract deste paper do IEEE aponta para um diferencial de 34% relativamente a código nativo (c++):
http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6118781&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6118781Não acho por isso válida a conclusão que objective-c é mais rápido do que Java porque é compilado.
Nota que a MS, ao contrário do que dizes no artigo, segue o mesmo modelo do Android: linguagems managed para escrever apps, e native code para os casos especiais. Desenvolver para Windows Phone 8 é em .Net, que é semelhante a Java. O que o outro artigo diz é que no 8 a MS também permite código nativo, para jogos essencialmente.
De resto, as eventuais (pequenas) diferenças de performance que existam na linguagem em si não terão um impacto significativo na maioria das aplicações. A maior parte do tempo de execução em aplicações mobile é gasto à espera de resources (downloads por ex.), no SO (que é Linux, logo é C, e não é o foco do artigo), ou na librarys do sistema operativo, nomeadamente nas de interface gráfica (e essas também são tipicamente em C).
Se a aplicação está a fazer processamento de matrizes, então o melhor mesmo é passar para c++, tanto em Android, como em WP8, como em iOS...
Mas há um ponto que é relevante, que é a percepção de que o Android é mais "lento". Esta percepção tem a meu ver uma vertente que é falsa e uma que é eventualmente verdadeira:
1. A falsa deve-se ao facto de a Google só à coisa de 6 meses se ter dignado a optimizar a interface (o 4.1). O android não era mais lento, mas parecia mais lento, porque tinha quebras de framerate e algum lag. Com o 4.1 a Google implementou uma serie de mecanismos (triple buffering, v-sync) que tornaram a interface mais fluida - não necessariamente mais rápida, mas mais fluida. O iOS e o WP sempre tiveram isso, o que era uma decisão acertada.
Outra coisa que contribui para isto é o facto de os iphone sempre tiveram das melhores placas gráficas, na ultima geração bastante superiores ao disponivel em Android, logo a interface fica mais rápida. Neste geração a coisa parece ir ficar mais equilibrada.
2. A segunda deve-se ao facto de Android ter um espectro de hardware muito mais largo em que corre, por isso pode não estar tão bem optimizado para um hardware especifico como o iOS está. Isso admito que possa ter impacto.