El panorama actual de dispositivos móviles, ha quedado, podrÃamos decir que reducido a iOS de Apple, Android de Google, y Windows Phone de Microsoft (con el permiso del marginal TabletOS de RIM).
La evolución ha llevado a que el código bytecode sea el que domine estas plataformas. Java para Android, y .NET para Windows Phone. La excepción es en este caso Objective-C en iOS.
En general defiendo el código nativo, pues por rendimiento, y a pesar de las mejoras que sucesivamente se implementa en la VM de Java y en el CLI de .NET, éstos están todavÃa lejos del código nativo en cuanto a velocidad del código, y consumo de memoria. Puntos que son especialmente importantes en dispositivos móviles, donde los recursos de CPU, memoria y almacenamiento son bastante limitados, y donde sobretodo, el uso de CPU va invariablemente condicionado al uso de la baterÃa.
La apuesta de Apple en iOS, me parece atrevida, todos sabemos que es más difÃcil desarrollar código nativo que requiere liberar aquello que se reserva, y donde facilidades a parte, no hay un Garbage Collector como tal. Sin embargo, los números en cuanto a Apps disponibles, y número de desarrolladores, no sustentan de momento esta afirmación, y a pesar de ser de desarrollo más complejo, la comunidad iOS, supera a la de Android y Windows Phone. Y es que, se puede criticar el uso de Objective-C, más si consideramos que C++ es un lenguaje maduro, muy estandarizado, portable, con un elevado rendimiento, y sobretodo conocido; pero en mi opinión, la decisión de usar código nativo, es la correcta.
Naturalmente, entornos puramente interpretados como PHP, Perl o Python tienen grandes ventajas en lo que a velocidad de desarrollo se refiere, pero no llegan al nivel de eficiencia del código nativo. Estos lenguajes, permiten desarrollar y probar de inmediato, no hay que compilar, y no hay que generar archivos intermedios.
El siguiente paso, serÃan los lenguajes que compilan en tiempo de ejecución, como las últimas versiones de las máquinas virtuales de Javascript, ASP.NET o JSP. AquÃ, se pierde algo de tiempo al compilar el código fuente a código nativo o bytecode, pero al menos es transparente para el desarrollador, y obtiene unos rendimientos aceptables.
La nota disonante, serÃa .NET (para escritorio, y para dispositivos móviles), Java (para escritorio, applets, y servlets), ActionScript, etc, que no dejan de ser entornos que ejecutan bytecode, pero que además requieren que el desarrollador deba compilar y generar paquetes cada vez que quiere probar. Es decir, requiere tiempo e interacción para compilar, pero no generan un código tan eficaz como el nativo.
ArtÃculos relacionados:
Rendimiento de dispositivos móvilesOffice 2007 no es nativo x64
Código automodificable en PHP
Gaelco en los móviles
Código fuente de XPlorer



#1 by David Bravo on 10 de febrero de 2012 - 21:58
Citar
Muy interesante el post, iOS una vez mas marca una diferencia importante en el desarrollo de sus aplicaciones con Objective-C.
En lo personal no me gustan ni el Android ni el WPhone, me parecen aun distantes, quizás residan en dispositivos con hardware muy superior a un IPhone, pero finalmente gana la experiencia de los usuarios de la manzana al interactuar con sus aplicaciones.
WPhone con Silverlight no creo que lleguen a muy buen puerto y Android que tiene una muy buena cuota en el mercado no llega a ser mas que una copia de un IOS sin ofrecer nada realmente nuevo e innovador.
#2 by Javier Gutiérrez Chamorro (Guti) on 11 de febrero de 2012 - 12:59
Citar
A mi si me gusta Android y Windows Phone David Bravo, pero reconozco que de momento los chicos de Cupertino lo están haciendo mejor.
Windows Phone no ha cumplido expectativas, y con las nueva crisis de Nokia, veremos que es lo que ocurre.
Android en cambio ha superado espectativas, y tal como indicas, con hardware más potente, y un software que en algún momento deberÃa ser capaz de avanzar, puede ser un buen contendiente.
Claro que Apple no se duerme en los laureles, y tendremos iPhone 5 e iPad 3, que aunque a nivel de software, no creo que cambie demasiado el iOS 5.1 sobre el 5.0.1, el hardware vendrá renovado.