Android 2.2 incluirá importante mejora en el rendimiento de sus aplicaciones
La próxima versión de Android lleva el nombre de Frozen Yogurt (Froyo)

La próxima versión de Android lleva el nombre de Frozen Yogurt (Froyo)
Ya se rumoreaba, pero una sesión del próximo Google IO, que se realizará esta semana, lo confirma: Android 2.2 incluirá JIT o Just In Time Compilation. Se trata de una mejora que incrementará agresivamente el rendimiento de las aplicaciones que corren en esta plataforma.
En Android, las aplicaciones están escritas en Java y se ejecutan en Dalvik, una máquina virtual de Java especialmente diseñada por Google para esta plataforma. Se trata de un estándar propio para que las aplicaciones puedan ejecutarse en distintos dispositivos con una potente API, sin llegar a los sacrificios que tuvo que tomar Sun con J2ME (Java 2 Mobile Edition).
Cuando se programa en Java, un compilador convierte lo que el programador escribió como texto en una secuencia de números que representan a este programa. Esta secuencia de números, conocida como byte-code, no es entendida directamente por el hardware, sino que por un software llamado máquina virtual. Una máquina virtual como Dalvik debe procesar el byte code para convertir sus instrucciones en algo que entienda el procesador real.
Hasta ahora Dalvik se comporta como un intérprete, es decir, a medida que va leyendo el byte code ejecuta un procedimiento equivalente en el procesador del dispositivo. Por ejemplo, si hay un ciclo que se repite 1000 veces, entonces por cada una de esas iteraciones Dalvik tendrá que procesar el byte code y ejecutar sus instrucciones equivalentes, realizando el mismo procedimiento 1000 veces.
Con JIT Compilation, que se espera para Android 2.2, Dalvik convertirá secciones completas de bytecode en código ejecutable por el procesador real, este código se ejecutará sin más interrupciones. Siguiendo el ejemplo anterior, Dalvik realizará la conversión a código real sólo una vez, y éste se ejecutará a máxima velocidad 1000 veces.
El uso de JIT es común en la implementación de Java para sistemas de escritorio y servidores, pero en Android hasta ahora habían sido bastante conservadores en este aspecto. Con este cambio no sólo se mejorará el rendimiento sino que además la exigencia al procesador será menor, lo que reducirá el consumo de energía. En pruebas realizadas en un Nexus One se han obtenido mejoras de rendimiento de hasta 6 veces en procesamiento de datos puro.
Bonus Track: Flash en Android 2.2
En Android 2.2 también se estrenará Flash 10.1 de Adobe. Se trata de una versión desarrollada exclusivamente para esta plataforma. Si han estado viviendo en una caverna los últimos meses, pueden revisar el artículo dedicado a Adobe, Android y Apple.
Como adelanto, este es un video en donde Adobe muestra el funcionamiento de Flash 10.1 en Android
Links:
- A JIT Compiler for Android’s Dalvik VM (Google IO)
- JIT performance boot coming with Android 2.2 (Android and Me)
Tommy Jordan se refiere al "asesinato" del note...
Futurología: La nueva Xbox podría incluir mando...
8 cámaras clásicas de Kodak, ahora que dejará d...
Alemania dice que no firmará ACTA (al menos por...
México: Sujeto intentó subastar un bebé en Merc...
10 regalos geek para tu media naranja en este D...
2012: IPv6, odisea en el (ciber)espacio
España ya no está en los planes de Netflix
29 Comentarios
Android 2.2 incluirá importante mejora en el rendimiento de sus aplicaciones
Primero??
Respondersorry, tenia que ponerlo alguna vez
Google me parece una muy buena empresa que todo lo que hace es excelente........y sobre todo pensando siempre en el usuario........no no tanto en el $$$$$$ como lo hace Apple o Microsoft..................bien por Google........
ResponderAndroid como siempre mejorando, espero que dentro de poco muchos equipos puedan actualizarce a esta version, ya que el problema para mi es que todavia hay demasiadas terminales con alguna version de android 1.X y pues no pueden disfrutar de mejoras como estas.
ResponderNooo, por que Java... Java es una mierda para programar.... por que no python o perl o ruby? Son lejos lenguajes mas potentes (aunque no tan rapidos en la ejecucion por ser scripts). Pero un JIT puede hacer maravillas aunque sean scripts ...
ResponderY para el que se queje del Java diciendo "x y z se hicieron en Java", igual, n programas buenos estan escritos en C o C++, eso no quita que C o C++ sean una mierda para el trabajo diario.
ResponderYa salieron las mierdas contra Java, o contra C o C++. Vállanse a freir monos.
Respondersimpre es bueno leer sobre mejoras de peso en sistemas nuevos bien po google bien por android
ResponderPues que bien que aumente el rendimiento, lastima que tengan que hacer maquinas virtuales para la portibilidad de programas, nada como lo nativo...
Responderlo del flash... wwooaahh... pues si es otra experiencia en celular... y en verdad se adapta muy bien a las funciones del teléfono...
Aunque aun no se ve el rendimiento de la batería, en el vídeo se ve que mientras muestra el flash en el teléfono, este esta cargando....
Que buena, algún día pienso comprarme un Nexus One, algún día... T_T
Responder@Sho
Responder"Son lejos lenguajes mas potentes"
Sho... no son más potentes... De hecho, no más que Java (que es una tecnología, no simplemente un lenguaje). Simplemente tienen mayor "azúcar sintáctica", y claro, eso atrae a los programadores.
Quiere decir eso que no se puede programar en C ó C++ para Android? :-O
ResponderMe quedo con el iPhone!!!!
Muy bien solo una corrección:
ResponderNo es J2ME (Java 2 Mobile Edition) es J2ME (Java 2 Micro Edition)
Y apartir de la vercion 6 Sun elimino el "2" de todas sus verciones entonces seria: JME.
Iré por el motorola droid... será en un par de años jajaja
ResponderIgual G termina monetarizando sus inventos, android por algún lado es una vitrina para googleAds creo yo, lo que pasa que recompensa con un ecosistema menos "evil".
Espero se sigan luciendo con su
malditacapa multiplataforma Dalvik@doc
Responder+1 :D
@Elvin Gonzalez Shejab toda empresa tiene fines de lucro, de alguna u otra forma tienen que obtener un beneficio.
ResponderAhora lo que google esta haciendo con android es muy buena iniciativa con el iphone de por medio los equipos con android le están haciendo la lucha y eso promueve la competencia y por ende mejores productos, salimos ganando nosotros.
El futuro de flash esta a un pie del precipicio deben demostrar que flash no se ha quedado en el tiempo y que ha evolucionado, cuando una empresa no se adapta al cambio simplemente colapsa.
Mi reclamo es contra del lenguaje, contra la sintaxis. No contra la máquina virtual (a pesar de que sea una máquina de tipos estáticos). Al final, toda la "azucar" sintáctica (con las herramientas apropiadas) es lo que hace un lenguaje productivo o no.
ResponderEl hecho de tener que meter todo en una clase es kk. Por eso, Java = kk
@Sho
ResponderPara aplicaciones pequeñas, mientras menos tipos usas, mejor. Para aplicaciones grandes, el uso de tipos estrictos te puede dar la seguridad de que tu código no está rompiendo nada y está caminando sobre un terreno firme, en el momento en que estás modificando y antes de aplicar siquiera una prueba unitaria.
Me gustaria agregar que DalvikVM no fue creado por Google sino por Dan Bornstein y con ayuda de algunos ingenieros de Google.
ResponderEstamos de acuerdo, Franco,... pero, el hecho de tener tipos estrictos es un impacto a futuro a la escalabilidad de una aplicación, como ya he visto en sistemas llamados "world class" implementados en lenguajes como Java y otros sabores de C. El hecho de realizar pruebas unitarias permite reducir el impacto de la "flexibilidad" de no usar tipos específicos de datos.
ResponderAhora ya estamos hablando de maneras de trabajar, que depende con lo que uno se sienta mas cómodo o productivo. Sin embargo, soy un firme convencido de que Java ha llevado la orientación a objetos (muy sobrevaluada en mi opinión) más alla de lo que debiera ir.
Como no me quiero quedar en críticas vacías, al interesado le recomiendo investigar sobre los 'mixins' de ruby o, aún mas allá, a los 'roles' de perl6. (que por cierto, va en buen camino a salie de beta y tener su primera versión productiva)
PS: Sorry por salirme del topic. De todos modos, no dudo que Google también lleve estos esfuerzos a lenguajes como Python, que usa extensivamente. Después de todo, hay esfuerzos por correr Python sobre la máquina virtual de Java. (JPhython)
@sho: wrong, en esta ocasión estaré de acuerdo con franco, el uso de tipos estrictos te asegura en tiempo de compilación por lo menos es coherente con respecto a los tipos de datos utilizados. No veo en esto una barrera para la escalabilidad, porque en OO tienes herencia como mecanismo de extensión, y si necesitas más modificaciones, puedes ir por SOA empaquetando la funcionalidad actual y extendiendo desde ahí.
ResponderLong live al offtopic
Buen artículo Franco!
ResponderY no se preocupen por la discusión offtopic, por lo menos es una discusión interesante y no solo criticas sin sentido, total aportan ;)
Ultimo y que tanto?
Responder@Sho
Responderel hecho de tener tipos estrictos es un impacto a futuro a la escalabilidad de una aplicación, como ya he visto en sistemas llamados “world class” implementados en lenguajes como Java y otros sabores de C
No logro ver la relación entre el lenguaje y la escalabilidad en sus términos clásicos. A menos que estés hablando de la escalabilidad del tamaño del proyecto o su base de código, es decir si puedes seguir manteniendo un sistema con un esfuerzo lineal en relación cómo crece éste. Y si es así, nuevamente mi experiencia es que lenguajes con tipos relajados e incluso con métodos relajados son cada vez más complejos de mantener a la hora que crecen y simplemente desde cierto tamaño en adelante son imposibles de mantener.
Sin embargo, soy un firme convencido de que Java ha llevado la orientación a objetos (muy sobrevaluada en mi opinión) más alla de lo que debiera ir
Estoy mas o menos de acuerdo con eso. Basta ver cómo en C# la hicieron de oro simplificando las ideas de Java, por lo mismo las están tratando de copiar de vuelta, aunque eso va mas lento por el proceso abierto en vez de tener una sola compañía que controle todo.
Como no me quiero quedar en críticas vacías, al interesado le recomiendo investigar sobre los ‘mixins’ de ruby o, aún mas allá, a los ‘roles’ de perl6. (que por cierto, va en buen camino a salie de beta y tener su primera versión productiva)
Mientras no lo veamos plasmado en experiencias reales, sólo serán ideas fabulosas. Así como tantas otras lo han sido en el pasado, basta ver la historia del mismo Java.
De todos modos, no dudo que Google también lleve estos esfuerzos a lenguajes como Python, que usa extensivamente. Después de todo, hay esfuerzos por correr Python sobre la máquina virtual de Java. (JPhython)
El App Engine soporta Python y Java 7 tiene modificaciones en su máquina virtual para poder usar lenguajes dinámicos en ella, incluyendo Ruby, Python y Javascript.
Esto no es de extrañar, estos lenguajes simplifican algunos tipos de problema, pero no todo el universo de problemas, específicamente aquellos que Java resuelve muy bien hoy en día,
Jojo, ademas agregar que android 2.2 es 4,5 veces mas rapido que sus anteriores versiones.
ResponderEn el video se ve algo que en el Iphone nunca se vera =)..
Grande Android! y mi Nexus One =)
Muy bien pero..., ¿una cosa tan básica no debería haber estado desde las primeras versiones? Máxime teniendo en cuenta las mejoras que brindaba, y que Java SE ya se viene manejando con éxito de esta manera desde hace mucho tiempo.
Responder@Tecnonucleo
ResponderPodría, pero hay varios factores que pueden haber influido, por ejemplo la capacidad del hardware de los primeros aparatos. No descarto también que haya sido un tema de oportunidad, lanzando el producto antes de que estuviese "perfecto"
@Sho Totalmente de acuerdo, Java es bastante malo, C y C++ son infinitamente superiores.
ResponderRespecto al tema de los lenguajes (por lo menos para mi se volvió una discusión mucho más entretenida xD ) Concuerdo con Franco cuando habla de extensibilidad ¿es un problema el lenguaje? el tema es buen diseño, el problema nace cuando tenemos que hacer mantención a sistemas, hace poco me paso con PHP vi unas mezclas de tipos... si es por eso prefiero los lenguajes estrictos y el cast. Por otro lado se habló de productividad y si quizas C++ y C tienden a ser más complejos (lo que se compensa con el rendimiento de la aplicación), pero eso se soluciona con frameworks, por ejemplo Qt creo q es excelente en este aspecto. Y finalmente debo decir que la sintaxis del tipo C, C++, Java, etc. es la que mas me gusta xD
ResponderNotables noticias!!
ResponderEspero dentro del mediano plazo poder adquirir un "juguete" con android... :D
@sho ¿Has tenido que hacer mantención alguna vez a un sistema "mediano" (no voy a decir grande aún) escrito en algún lenguaje dinámico? Déjame decirte que yo más de una vez, y se agradece poder saber de qué tipo de datos es una función, así sabes cómo procesar el parámetro; el nombre descriptivo ayuda, pero no es la panacea.
@sho Jython es una implementación de python sobre Java, ya va en su versión 2.5.1 y existe desde 2001 aproximadamente.
Deja tu Comentario