Flash Player Internals<br />Alberto González<br />Sr. Technical Consultant<br />
Bio<br />Director de Tecnología en Activ (Adobe Authorized Training Center)<br />+9 años de experiencia trabajando con la ...
Flash Player<br />Mismo código base para todos los dispositivos ( 80% es “core” )<br />Actualizamos/mejoramos el “core” y ...
Flash Player en laptops, desktop, dispositivos<br />Consistente<br />Multi-plataforma<br />Optimizado<br />Existen diferen...
Flash Player<br />Hay que ser cuidadoso<br />// Fallará el flash player en un móvil con 100MB de RAM<br />for( inti=0; i&l...
Infraestructura<br />Flash Player<br />
Modelo de ejecución (Flash) : Basado en “frames”<br />
Modelo de ejecución<br />// Este código no hace lo que esperaríamos<br />// El “Render” no es invocado<br />for( var i:int...
Modelo de ejecución<br />// Siempre hay unaexcepción.<br />start = getTimer();<br />bitmapData.draw(…);<br />end = getTime...
Modelo de ejecución (Flash) : Basado en “frames”<br />
Modelo de ejecución (Flex) : Basado en eventos<br />
Prioridades de performance en Flash Player<br />Sonido streaming<br />Video<br />ActionScript + Rendering<br />
Versiones<br />Versión del Flash Player  vs  versión del SWF<br />La “versión” es virtual<br />Aplica a:<br />Funcionalida...
ActionScript<br />
ActionScript VMs<br />ActionScript 2 se ejecuta en AVM1<br />Interpretado<br />ActionScript 3 se ejecuta en AVM2 “Tamarin ...
GarbageCollector (Recolector de basura)<br />Tipos primitivos, referencias y objetos<br />Recolección de basura no es mane...
Alchemy<br />Podemos “inyectar” código C / C++ directo a los SWFs<br />Soporte limitado pero útil<br />Ideal para utilizar...
Rendering…<br />
GPU vs Software Rendering<br />“Rendereo” por software:<br />“Rendereo” por GPU<br />+<br />
Video y optimización de bitmaps<br />Video decodificado en GPU<br />H.264<br />Soportado en todos los “wmodes”<br />JPEG d...
Vectores en GPU<br />Dispositivos Móviles<br />Reemplaza el render por software con render GPU<br />Teoría: Mover lo gráfi...
Performance<br />ActionScript<br />Utilizar ActionScript 3<br />Tener cuidado con los intervalos y los altos “framerates”<...
Q & A<br />Alberto González<br />E-mail:<br />agonzalez@activ.com.mx<br />Twitter:<br />@albertx<br />Blog:<br />http://x-...
Upcoming SlideShare
Loading in...5
×

Flash Player Internals

924

Published on

Flash Player Internals

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total Views
924
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
33
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Flash Player Internals

  1. 1. Flash Player Internals<br />Alberto González<br />Sr. Technical Consultant<br />
  2. 2. Bio<br />Director de Tecnología en Activ (Adobe Authorized Training Center)<br />+9 años de experiencia trabajando con la plataforma Flash, ActionScript y tecnologías de servidor.<br />Co-manager del grupo de usuarios, oficial de Adobe, enfocado a Rich Internet Applications ( RIActive – www.riactive.com )<br />Consultor de Adobe Mex enfocado en tecnologías de programación<br />Conferencista en diversos eventos internacionales como Software Guru, Adobe en vivo, Adobe Hispano, presentación de productos: CS3 – CS4, Flex y AIR, Flash Builder, Flash Catalyst,…<br />
  3. 3. Flash Player<br />Mismo código base para todos los dispositivos ( 80% es “core” )<br />Actualizamos/mejoramos el “core” y se aplica de forma automática<br />Otra parte del código es específico de la plataforma<br />Mobile* (Palm, Symbian, …)<br />Desktop (Mac, Window, Linux)<br />Mismo código, misma liberación, misma estrategia para dispositivos móviles y escritorio. <br />
  4. 4. Flash Player en laptops, desktop, dispositivos<br />Consistente<br />Multi-plataforma<br />Optimizado<br />Existen diferencias mayores<br />Memoria y CPU (QuadCore, Palm, Core 2 Duo, …)<br />Resolución (1600x1280, 320x260, …)<br />Mouse, teclado, touchscreen<br />
  5. 5. Flash Player<br />Hay que ser cuidadoso<br />// Fallará el flash player en un móvil con 100MB de RAM<br />for( inti=0; i&lt;10; ++i ) {<br /> data[i] = new BitmapData( 1600, 1600 );<br />}<br />
  6. 6. Infraestructura<br />Flash Player<br />
  7. 7. Modelo de ejecución (Flash) : Basado en “frames”<br />
  8. 8. Modelo de ejecución<br />// Este código no hace lo que esperaríamos<br />// El “Render” no es invocado<br />for( var i:int; i &lt; 100; i++){<br />clip.x++;<br /> …<br />}<br />
  9. 9. Modelo de ejecución<br />// Siempre hay unaexcepción.<br />start = getTimer();<br />bitmapData.draw(…);<br />end = getTimer();<br />
  10. 10. Modelo de ejecución (Flash) : Basado en “frames”<br />
  11. 11. Modelo de ejecución (Flex) : Basado en eventos<br />
  12. 12. Prioridades de performance en Flash Player<br />Sonido streaming<br />Video<br />ActionScript + Rendering<br />
  13. 13. Versiones<br />Versión del Flash Player vs versión del SWF<br />La “versión” es virtual<br />Aplica a:<br />Funcionalidades<br />APIs<br />Bugfixes<br />
  14. 14. ActionScript<br />
  15. 15. ActionScript VMs<br />ActionScript 2 se ejecuta en AVM1<br />Interpretado<br />ActionScript 3 se ejecuta en AVM2 “Tamarin VM”<br />JIT – Convierte el ABC (ActionScript Byte Code) a “código máquina” ejecutable<br />Nanojit, nuevo!!!<br />Nanojit tiene soporte de la comunidad<br />Nanojit soporta múltiples procesadores<br />Nuevo en Flash Player 10.1<br />Clase “String” mejorada de manera interna<br />GC ha sido mejorado<br />Mobile principalmente<br />Pocas mejoras en multi-plaforma<br />
  16. 16. GarbageCollector (Recolector de basura)<br />Tipos primitivos, referencias y objetos<br />Recolección de basura no es manejo de memoria<br />Si el manejo de memoria realmente importa en tu aplicación<br />Comienza desde el principio<br />Utiliza dos algoritmos:<br />Conteo de referencias<br />Mark and sweep<br />Código de ayuda<br />flash.system.System.gc();<br />Flash Player &gt;= 9.0.115<br />
  17. 17. Alchemy<br />Podemos “inyectar” código C / C++ directo a los SWFs<br />Soporte limitado pero útil<br />Ideal para utilizar librerías de C / C++ en aplicaciones web (Flash Player) y escritorio (Adobe AIR)<br />Manipulación de datos<br />Decodificación de audio/video<br />“Parseo” de XML u otros formatos<br />Funciones criptográficas<br />Simulaciones físicas<br />No es una alternativa para evadir la seguridad en la plataforma<br />Proyecto Alchemy( http://labs.adobe.com/technologies/alchemy )<br />
  18. 18. Rendering…<br />
  19. 19. GPU vs Software Rendering<br />“Rendereo” por software:<br />“Rendereo” por GPU<br />+<br />
  20. 20. Video y optimización de bitmaps<br />Video decodificado en GPU<br />H.264<br />Soportado en todos los “wmodes”<br />JPEG descompresión bajo demanda<br />Instancias por superficie<br />La memoria sin utilizar es liberada<br />
  21. 21. Vectores en GPU<br />Dispositivos Móviles<br />Reemplaza el render por software con render GPU<br />Teoría: Mover lo gráfico de la computación del CPU al GPU<br />
  22. 22. Performance<br />ActionScript<br />Utilizar ActionScript 3<br />Tener cuidado con los intervalos y los altos “framerates”<br />DisplayList (móviles)<br />Mantenerla lo más pequeña posible<br />Video<br />Resoluciones, formatos y “framerate” apropiados<br />
  23. 23. Q & A<br />Alberto González<br />E-mail:<br />agonzalez@activ.com.mx<br />Twitter:<br />@albertx<br />Blog:<br />http://x-geom.net/blog<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×