Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Flash Player Internals

1,144 views

Published on

Flash Player Internals

Published in: Technology

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

×