Flash Player InternalsAlberto GonzálezSr. Technical Consultant
BioDirector de Tecnología en Activ (Adobe Authorized Training Center)+9 años de experiencia trabajando con la plataforma Flash, ActionScript y tecnologías de servidor.Co-manager del grupo de usuarios, oficial de Adobe, enfocado a Rich Internet Applications ( RIActive – www.riactive.com )Consultor de Adobe Mex enfocado en tecnologías de programaciónConferencista 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,…
Flash PlayerMismo código base para todos los dispositivos ( 80% es “core” )Actualizamos/mejoramos el “core” y se aplica de forma automáticaOtra parte del código es específico de la plataformaMobile* (Palm, Symbian, …)Desktop (Mac, Window, Linux)Mismo código, misma liberación, misma estrategia para dispositivos móviles y escritorio.
Flash Player en laptops, desktop, dispositivosConsistenteMulti-plataformaOptimizadoExisten diferencias mayoresMemoria y CPU (QuadCore, Palm, Core 2 Duo, …)Resolución (1600x1280, 320x260, …)Mouse, teclado, touchscreen
Flash PlayerHay que ser cuidadoso// Fallará el flash player en un móvil con 100MB de RAMfor( inti=0; i<10; ++i ) {	data[i] = new BitmapData( 1600, 1600 );}
InfraestructuraFlash Player
Modelo de ejecución (Flash) : Basado en “frames”
Modelo de ejecución// Este código no hace lo que esperaríamos// El “Render” no es invocadofor( var i:int; i < 100; i++){clip.x++;	…}
Modelo de ejecución// Siempre hay unaexcepción.start = getTimer();bitmapData.draw(…);end = getTimer();
Modelo de ejecución (Flash) : Basado en “frames”
Modelo de ejecución (Flex) : Basado en eventos
Prioridades de performance en Flash PlayerSonido streamingVideoActionScript + Rendering
VersionesVersión del Flash Player  vs  versión del SWFLa “versión” es virtualAplica a:FuncionalidadesAPIsBugfixes
ActionScript
ActionScript VMsActionScript 2 se ejecuta en AVM1InterpretadoActionScript 3 se ejecuta en AVM2 “Tamarin VM”JIT – Convierte el ABC (ActionScript Byte Code) a “código máquina” ejecutableNanojit, nuevo!!!Nanojit tiene soporte de la comunidadNanojit soporta múltiples procesadoresNuevo en Flash Player 10.1Clase “String” mejorada de manera internaGC ha sido mejoradoMobile principalmentePocas mejoras en multi-plaforma
GarbageCollector (Recolector de basura)Tipos primitivos, referencias y objetosRecolección de basura no es manejo de memoriaSi el manejo de memoria realmente importa en tu aplicaciónComienza desde el principioUtiliza dos algoritmos:Conteo de referenciasMark and sweepCódigo de ayudaflash.system.System.gc();Flash Player >= 9.0.115
AlchemyPodemos “inyectar” código C / C++ directo a los SWFsSoporte limitado pero útilIdeal para utilizar librerías de C / C++ en aplicaciones web (Flash Player) y escritorio (Adobe AIR)Manipulación de datosDecodificación de audio/video“Parseo” de XML u otros formatosFunciones criptográficasSimulaciones físicasNo es una alternativa para evadir la seguridad en la plataformaProyecto Alchemy( http://labs.adobe.com/technologies/alchemy )
Rendering…
GPU vs Software Rendering“Rendereo” por software:“Rendereo” por GPU+
Video y optimización de bitmapsVideo decodificado en GPUH.264Soportado en todos los “wmodes”JPEG descompresión bajo demandaInstancias por superficieLa memoria sin utilizar es liberada
Vectores en GPUDispositivos MóvilesReemplaza el render por software con render GPUTeoría: Mover lo gráfico de la computación del CPU al GPU
PerformanceActionScriptUtilizar ActionScript 3Tener cuidado con los intervalos y los altos “framerates”DisplayList (móviles)Mantenerla lo más pequeña posibleVideoResoluciones, formatos y “framerate” apropiados
Q & AAlberto GonzálezE-mail:agonzalez@activ.com.mxTwitter:@albertxBlog:http://x-geom.net/blog

Flash Player Internals

  • 1.
    Flash Player InternalsAlbertoGonzálezSr. Technical Consultant
  • 2.
    BioDirector de Tecnologíaen Activ (Adobe Authorized Training Center)+9 años de experiencia trabajando con la plataforma Flash, ActionScript y tecnologías de servidor.Co-manager del grupo de usuarios, oficial de Adobe, enfocado a Rich Internet Applications ( RIActive – www.riactive.com )Consultor de Adobe Mex enfocado en tecnologías de programaciónConferencista 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,…
  • 3.
    Flash PlayerMismo códigobase para todos los dispositivos ( 80% es “core” )Actualizamos/mejoramos el “core” y se aplica de forma automáticaOtra parte del código es específico de la plataformaMobile* (Palm, Symbian, …)Desktop (Mac, Window, Linux)Mismo código, misma liberación, misma estrategia para dispositivos móviles y escritorio.
  • 4.
    Flash Player enlaptops, desktop, dispositivosConsistenteMulti-plataformaOptimizadoExisten diferencias mayoresMemoria y CPU (QuadCore, Palm, Core 2 Duo, …)Resolución (1600x1280, 320x260, …)Mouse, teclado, touchscreen
  • 5.
    Flash PlayerHay queser cuidadoso// Fallará el flash player en un móvil con 100MB de RAMfor( inti=0; i<10; ++i ) { data[i] = new BitmapData( 1600, 1600 );}
  • 6.
  • 7.
    Modelo de ejecución(Flash) : Basado en “frames”
  • 8.
    Modelo de ejecución//Este código no hace lo que esperaríamos// El “Render” no es invocadofor( var i:int; i < 100; i++){clip.x++; …}
  • 9.
    Modelo de ejecución//Siempre hay unaexcepción.start = getTimer();bitmapData.draw(…);end = getTimer();
  • 10.
    Modelo de ejecución(Flash) : Basado en “frames”
  • 11.
    Modelo de ejecución(Flex) : Basado en eventos
  • 12.
    Prioridades de performanceen Flash PlayerSonido streamingVideoActionScript + Rendering
  • 13.
    VersionesVersión del FlashPlayer vs versión del SWFLa “versión” es virtualAplica a:FuncionalidadesAPIsBugfixes
  • 14.
  • 15.
    ActionScript VMsActionScript 2se ejecuta en AVM1InterpretadoActionScript 3 se ejecuta en AVM2 “Tamarin VM”JIT – Convierte el ABC (ActionScript Byte Code) a “código máquina” ejecutableNanojit, nuevo!!!Nanojit tiene soporte de la comunidadNanojit soporta múltiples procesadoresNuevo en Flash Player 10.1Clase “String” mejorada de manera internaGC ha sido mejoradoMobile principalmentePocas mejoras en multi-plaforma
  • 16.
    GarbageCollector (Recolector debasura)Tipos primitivos, referencias y objetosRecolección de basura no es manejo de memoriaSi el manejo de memoria realmente importa en tu aplicaciónComienza desde el principioUtiliza dos algoritmos:Conteo de referenciasMark and sweepCódigo de ayudaflash.system.System.gc();Flash Player >= 9.0.115
  • 17.
    AlchemyPodemos “inyectar” códigoC / C++ directo a los SWFsSoporte limitado pero útilIdeal para utilizar librerías de C / C++ en aplicaciones web (Flash Player) y escritorio (Adobe AIR)Manipulación de datosDecodificación de audio/video“Parseo” de XML u otros formatosFunciones criptográficasSimulaciones físicasNo es una alternativa para evadir la seguridad en la plataformaProyecto Alchemy( http://labs.adobe.com/technologies/alchemy )
  • 18.
  • 19.
    GPU vs SoftwareRendering“Rendereo” por software:“Rendereo” por GPU+
  • 20.
    Video y optimizaciónde bitmapsVideo decodificado en GPUH.264Soportado en todos los “wmodes”JPEG descompresión bajo demandaInstancias por superficieLa memoria sin utilizar es liberada
  • 21.
    Vectores en GPUDispositivosMóvilesReemplaza el render por software con render GPUTeoría: Mover lo gráfico de la computación del CPU al GPU
  • 22.
    PerformanceActionScriptUtilizar ActionScript 3Tenercuidado con los intervalos y los altos “framerates”DisplayList (móviles)Mantenerla lo más pequeña posibleVideoResoluciones, formatos y “framerate” apropiados
  • 23.
    Q & AAlbertoGonzálezE-mail:agonzalez@activ.com.mxTwitter:@albertxBlog:http://x-geom.net/blog