Betazeta Networks:BelelúBólidoCHWFayerWayerFW BrasilFerpleiLUPANiubieSaborizanteVeoVerdeWayerless MCUZimio Versión Movil

Temas Calientes

Android 2.2 incluirá importante mejora en el rendimiento de sus aplicaciones

29

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)

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

YouTube Preview Image

Links:
- A JIT Compiler for Android’s Dalvik VM (Google IO)
- JIT performance boot coming with Android 2.2 (Android and Me)

29 Comentarios

Android 2.2 incluirá importante mejora en el rendimiento de sus aplicaciones

Thumb up 0 Thumb down 0 avatar_groucho_marx groucho_marx dijo hace 2 años

Primero??
sorry, tenia que ponerlo alguna vez

Responder
Thumb up 0 Thumb down 0 avatar_Elvin Gonzalez Shejab Elvin Gonzalez Shejab dijo hace 2 años

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........

Responder
Thumb up 0 Thumb down 0 avatar_Carlos Carlos dijo hace 2 años

Android 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.

Responder
Thumb up 0 Thumb down 0 avatar_Sho Sho dijo hace 2 años

Nooo, 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 ...

Responder
Thumb up 0 Thumb down 0 avatar_Sho Sho dijo hace 2 años

Y 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.

Responder
Thumb up 0 Thumb down 0 avatar_gustavo gustavo dijo hace 2 años

Ya salieron las mierdas contra Java, o contra C o C++. Vállanse a freir monos.

Responder
Thumb up 0 Thumb down 0 avatar_Ale Ale dijo hace 2 años

simpre es bueno leer sobre mejoras de peso en sistemas nuevos bien po google bien por android

Responder
Thumb up 0 Thumb down 0 avatar_MG-Speed MG-Speed dijo hace 2 años

Pues que bien que aumente el rendimiento, lastima que tengan que hacer maquinas virtuales para la portibilidad de programas, nada como lo nativo...

lo 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....

Responder
Thumb up 0 Thumb down 0 avatar_rvm rvm dijo hace 2 años

Que buena, algún día pienso comprarme un Nexus One, algún día... T_T

Responder
Thumb up 0 Thumb down 0 avatar_Dryden Dryden dijo hace 2 años

@Sho
"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.

Responder
Thumb up 0 Thumb down 0 avatar_Javier Javier dijo hace 2 años

Quiere decir eso que no se puede programar en C ó C++ para Android? :-O
Me quedo con el iPhone!!!!

Responder
Thumb up 0 Thumb down 0 avatar_doc doc dijo hace 2 años

Muy bien solo una corrección:

No 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.

Responder
Thumb up 0 Thumb down 0 avatar_Gordo Gordo dijo hace 2 años

Iré por el motorola droid... será en un par de años jajaja
Igual 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 maldita capa multiplataforma Dalvik

Responder
Thumb up 0 Thumb down 0 avatar_Franco Catrin Franco Catrin dijo hace 2 años

@doc

+1 :D

Responder
Thumb up 0 Thumb down 0 avatar_ByJC ByJC dijo hace 2 años

@Elvin Gonzalez Shejab toda empresa tiene fines de lucro, de alguna u otra forma tienen que obtener un beneficio.

Ahora 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.

Responder
Thumb up 0 Thumb down 0 avatar_Sho Sho dijo hace 2 años

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.

El hecho de tener que meter todo en una clase es kk. Por eso, Java = kk

Responder
Thumb up 0 Thumb down 0 avatar_Franco Catrin Franco Catrin dijo hace 2 años

@Sho

Para 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.

Responder
Thumb up 0 Thumb down 0 avatar_Ivan Ivan dijo hace 2 años

Me gustaria agregar que DalvikVM no fue creado por Google sino por Dan Bornstein y con ayuda de algunos ingenieros de Google.

Responder
Thumb up 0 Thumb down 0 avatar_Sho Sho dijo hace 2 años

Estamos 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.

Ahora 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)

Responder
Thumb up 0 Thumb down 0 avatar_el semántico el semántico dijo hace 2 años

@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í.

Long live al offtopic

Responder
Thumb up 0 Thumb down 0 avatar_MrGerlo MrGerlo dijo hace 2 años

Buen artículo Franco!
Y no se preocupen por la discusión offtopic, por lo menos es una discusión interesante y no solo criticas sin sentido, total aportan ;)

Responder
Thumb up 0 Thumb down 0 avatar_NonStopKilling NonStopKilling dijo hace 2 años

Ultimo y que tanto?

Responder
Thumb up 0 Thumb down 0 avatar_Franco Catrin Franco Catrin dijo hace 2 años

@Sho

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

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,

Responder
Thumb up 0 Thumb down 0 avatar_aker aker dijo hace 2 años

Jojo, ademas agregar que android 2.2 es 4,5 veces mas rapido que sus anteriores versiones.
En el video se ve algo que en el Iphone nunca se vera =)..
Grande Android! y mi Nexus One =)

Responder
Thumb up 0 Thumb down 0 avatar_Tecnonucleo Tecnonucleo dijo hace 2 años

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
Thumb up 0 Thumb down 0 avatar_Franco Catrin Franco Catrin dijo hace 2 años

@Tecnonucleo

Podrí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"

Responder
Thumb up 0 Thumb down 0 avatar_Nablamax Nablamax dijo hace 2 años

@Sho Totalmente de acuerdo, Java es bastante malo, C y C++ son infinitamente superiores.

Responder
Thumb up 0 Thumb down 0 avatar_F3lip3 F3lip3 dijo hace 2 años

Respecto 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

Responder
Thumb up 0 Thumb down 0 avatar_Estepario Estepario dijo hace 2 años

Notables noticias!!

Espero 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.

Responder

Deja tu Comentario

La opción de comentar está abierta a todos los usuarios, pero te pedimos por favor mantenerte dentro del tema del artículo y no publicar comentarios ofensivos o publicidad basura. Nos reservamos el derecho de eliminar cualquier comentario que no cumpla estas reglas.

Para que aparezca tu foto en vez del icono genérico en tu comentario, el email con el que comentas debe estar inscrito en Gravatar.