13 de noviembre de 2007

Sobre Android

Despues de haber estado ojeando el sdk de android, se me ocurren unas cuantas cosas sobre este aparato.

En primer lugar, es lento. No me refiero al SDK de mi sistema -que consiste de un emulador que arranca un sistema ARM con un qemu que tiene embebido-, sino a Android funcionando sobre hardware. Se puede comprobar en el video-demo que Google ha publicado sobre Android: hay momentos en los que se ve claramente que el sistema va lento. Y es que está construido sobre Java, y eso tiene sus ventajas y sus desventajas, se pongan los zealots de Java como se pongan: Una cosa es una aplicación Java, que acaba ejecutando librerías compartidas escritas en C/C++ para muchas funciones, y otra cosa es un framework escrito en buena parte en Java. Y además, tal como se anunció, la VM de Android no es la de Sun, sino Dalvik, una VM propia de Google optimizada para bajo consumo de memoria en sistemas embebidos. En el mundo de los lenguajes interpretados, "optimizado para sistemas embebidos" implica a menudo que se elimina la parte del JIT y se deja la VM como un puro intérprete de bytecode. Los benchmarks que los fans de Java hacen para intentar demostrar a la gente que Java es tan bueno como el código nativo se hacen con las VMs de Sun o IBM, que tienen complejísimos JITs....pero sin un JIT, el argumento del java veloz se esfuma en las nubes. Android parece confirmar que Dalvik es un simple interprete: The Dalvik VM is an interpreter-only virtual machine that executes files in the Dalvik Executable (.dex) format, a format that is optimized for efficient storage and memory-mappable execution. Es decir, que Android es simplemente lento. Al iPhone, cuyo software está escrito en Obj-C, se le podrá acusar de cualquier cosa menos de lentitud, y eso se ve reflejado en como vuela ese aparatito.

Esa es por cierto una de las ventajas que Apple tiene sobre absolutamente todas las plataformas de software: el hecho de tener todo escrito en un solo lenguaje, un lenguaje moderno y competitivo, y un framework claro y definido. Microsoft tenía todo eso con C++, pero ahora con .NET han partido el mundo de los desarrolladores en dos, y dios sabe como acabará. En cuanto a Linux...en fin: unas partes en C, otras en C++, dividas en decenas de librerias que juntas formarían un teórico framework completo, cada una con diferentes convenciones de utilización, documentación, etc. En las plataformas Apple está Cocoa y los frameworks disponibles tanto en un mac como en un iphone, bindings para algunos lenguajes, y punto.

Otro aspecto a destacar de Android es la recien citada VM Dalvik. Aquí han hecho una reflexión extremadamente interesante sobre esta VM: Dalvik utiliza un bytecode propio. Eso significa que los programas compilados en bytecode para Android no podrán ser ejecutados por las VMs de Sun. El código de programas para Android se pasa primero a bytecode de la VM de Sun, y luego se pasa al bytecode de Dalvik (un formato optimizado para ocupar menos tamaño y memoria). En ese blog afirman que esto es un jaque a Sun y al férreo control que mantiene -por mucha palabrería opensource que suelten- sobre el lenguaje Java y el JCP (Java Community Process) que define los futuros cambios en Java, y los procesos de estandarización. Para más INRI, Android utiliza Harmony, la reimplementación opensource de Java fomentada por IBM que fue, en realidad, lo que forzó a Sun a liberar el código de su JVM. Yo sin embargo pienso que esto no fue más que decisión técnica del grupo de desarrollo de Android antes de unirse a Google que bien podría cambiar en el futuro.

Por último, Robert Scobler dice que Android es vaporware, que la interfaz no es tan buena y simple como la del iPhone -lo cual es cierto-, y que no atrae a muchos desarrolladores y que la prueba de esto último es que Google ofrece 10 millones de dóalres en premios para quien cree aplicaciones, mientras que en el iPhone la gente está creando decenas de aplicaciones gratis a pesar de no tener SDK y a pesar de tener que hackear el iPhone para instalarlas. De nuevo tiene toda la razón del mundo. Tambien dice que en muchos aspectos es una pobre imitación del iPhone. De nuevo da en el clavo. Pero eso no significa que Android no vaya a tener cierto éxito. El iPhone no va a copar todo el mercado del mundo, un mal clon del iPhone distribuido por todos los socios del Open Handset Alliance bien puede tener mucho éxito comercial.

7 comentarios:

  1. Anónimo2:12 a. m.

    Lento lento no es, pero ni de lejos es tan fluido y tan "soft" como el iphone... muy mal, el iphone es una mierda que ha marcado unas necesidades y unos patrones para el mercado de dispositivos portátiles, no seguirlos es un error.

    Pero bueno, de momento habrá que ver como evoluciona la plataforma, que es muy interesante, porque a servicios integrados, que es lo que de verdad importa al fin y al cabo, no va a tener rival.

    ResponderEliminar
  2. Anónimo2:35 a. m.

    Que el famoso Android sea una mierda, estoy totalmente de acuerdo, pero que tengas que meter nuevamente a tu puta empresa de la manzana ya me tiene enfermo.

    ¿Acaso no existen otras plataformas abiertas con las cuales hacer una comparación, que tienes que meternos lo del puto Ipone?, si te gusta que Steve Jobs te lo meta hasta por las narices, pues muy bien por ti hombre, pero deja de darnos la lata al resto que luego de probar un MAC no nos hemos vuelto una mas de sus putas fashon.

    En fin tu Blog ya me termino de aburrir y tomando en cuenta que casi ya ni lo visito(y que cada vez que lo hago me encuentro con perlas de artículos como este)no veo razón para seguir haciéndolo en un futuro cercano, así que hasta nunca.

    Oh por cierto, trata de ahorrarte el típico comentario sarcástico, que así como a ti no te molesta perder un lector, a mi tampoco me afecta en lo mas mínimo dejar de leer un blog(y mucho menos me afectarían los comentario de algún lector de fin de semana con complejo de abogado defensor, que de seguro sale alguno creyendo que voy a volver a meterme aquí solo leer sus agudos comentarios...)

    ResponderEliminar
  3. Anónimo12:13 a. m.

    hay que tener en cuenta que en apple han sido los primeros en lanzar este tipo de cacharros, por lo que se han ganado a los geeks que desarrollan chorradas (a mi me encantan, pero no dejan de serlo) para todo lo último, valga la paradoja, así que digamos que esos 10millones son para recuperar posiciones, aunque tampoco tengo claro que se vayan a parecer unos con otros...
    una pregunta de ignorante ¿por mucho que sea en java no puede ser que la version final este hecha en otro lenguaje mas "potente" (perdon, no encontré otra palabra para expresarlo mejor)? ¿tanto tiene que ver el sdk con lo q llevará instalado el cacharro en cuestion?
    y por favor, sacame de dudas, ¿es cierto que trabajas para apple?

    ResponderEliminar
  4. No, esta plataforma se centrará en java...podrán desarrollarse aplicaciones en C, C++ e incluso python y derivados, pero serán excepciones...Java no es un mal lenguaje, el problema es aplicar la idea a todo un sistema....


    Si lo dices por mi, no, no trabajo para apple xD

    ResponderEliminar
  5. Creo que hay plataformas mas interesantes para hablar como MAEMO.

    ResponderEliminar
  6. LADRILLO VA!!!

    Lo de si hace falta crear un concurso para que la gente haga aplicaciones para Android mal vamos.... Pues igualmente si Apple hace publicidad de su telefono para que venda mal vamos...

    Me refiero a que es todo marketing, Google tiene mucho dinero y se lo puede permitir, y quiere que se creen aplicaciones lo mas rapido posible, y la verdad es que un concurso con esos precios es un buen motivo para ello, seguro que sin el concurso se crearian igual o mas aplicaciones que para Iphone, y con el concurso pues aun se creearan muchisimas mas.

    Sobre si Android es mas lento y Iphone es mas rapido. El SDK hace poco que salio y a los dias salio una actualizacion porque no se podian reproducir mas de 10sonidos XD, osease esta la cosa un poco verde y hasta que no lo tengamos en nuestras manos...

    Ademas no hace falta que sea lo mas rapido del mundo y con las mayores prestaciones para triunfar. COn lo que has dicho podriamos decir que Iphone es la PS3 y Android es la Wii. Android(Wii) No ira tan rapido como el Iphone(PS3) y a lo mejor no podra ofrecer tantas cosas, pero la libertad que tienes a la hora de crear aplicaciones y la facilidad que eso conlleva sin tener que hackear el aparato como ocurre en el Iphone para poder ejecutar algo llamemosle casero es una buena ventaja.

    Y bueno si fracasa el invento, por marketing, recursos, y empresas de la OHA no sera. Y viendo ejemplos todos los dias de juegos como Assasins Creed mal hechos, con bugs, etc... que gracias al marketing, Hype etc.. estan en los 10mejores juegos vendidos, pues con que Android sea la mitad de bueno que Iphone bastara.

    Ojo! Yo tampoco trabajo en Google(Mis ganas!), pero estoy haciendo un juego para la plataforma Android, en principio para el concurso, pero visto la facilidad de desarrollo, el emulador y demas, espero que le vaya bien a Google por que se podran hacer juegos como churros.

    Ale, ahy queda mi opinion!

    ResponderEliminar
  7. Anónimo2:32 p. m.

    el tiempo siempre acaba poniendo las cosas en su sitio.

    ResponderEliminar