Generic Viagra online

El hipnosapo ataca de nuevo

General 8 Octubre, 2009

En faq-mac no han dudado en traducir el último articulo del hipnosapo, el cual no deja de ser otro de los patéticos intentos de tapar las enormes cagadas de Apple a base medias verdades y mentiras a destajo que Eran nos tienes acostumbrados.

No voy a comentar todo el articulo de Eran, solamente las partes que me han llamado más la atención de todas y es el intento de desviar la atención de las prácticas monopolísticas de Apple con el iPhone, las cuales son muy parecidas a las de Microsoft en cuanto a lenguajes de programación y servicios soportados dentro de Windows. Pero vayamos a lo que dice Eran en su articulo, al menos las partes que más me han llamado la atención.

Las “aplicaciones” Flash sustituyen contenidos web estándar creado usando HTML, CSS, y JavaScript con el formato propietario de Adobe “.swf”, un archivo binario cerrado que envuelve los archivos de contenidos web (como gráficos y películas) con las propias variantes de la empresa de ECMAScript (JavaScript), llamado ActionScript. En CS5, las herramientas de desarrollo Flash permitirán que los nuevos proyectos Flash se exporten como aplicaciones estándar de iPhone en vez de archivos .swf.

No existen las aplicaciones flash en si mismas, lo que existen son los visores de contenido SWF y sus derivados. Flash nació como un programa para hacer animaciones a partir de gráficos vectoriales, estas animaciones son interactivas a través de un lenguaje llamado ActionScript, en realidad los archivos SWF no son más que una sucesión de archivos SVG con un applet en ActionScript incorporado.

El problema real de Flash es su DOM (Document Object Manager) que no es más que la parte del formato de archivo que le permite interactuar con otros lenguajes de programación para crear aplicaciones a través de esta, el concepto es que en orientación a objetos los archivos también son tratados como objetos y tienen una interfaz asociada a su tipo y unos metodos dentro de su clase. Adobe no documenta el DOM de los archivos SWF, esto hace que solamente el Flash Player y Flash sean los únicos capaces de comunicarse con este tipo de archivos.

Adobe lo va a hacer usando LLVM (Low Level Virtual Machine), una tecnología de compilación de código abierto soportada por Apple y usada en sus herramientas de desarrollo Xcode para Mac e iPhone. La próxima versión de desarrollo de aplicaciones flash de Adobe simplemente compilará el ActionScript de Flash en código nativo de iPhone, de igual forma que las herramientas ya existentes permiten a los desarrolladores de iPhone escribir su código usandoJavaScheme, u otros lenguajes y después compilar el código en C u Objective-C como aplicación nativa de iPhone.

Aquí el hipnosapo hace otro enorme error, ActionScript no es un lenguaje compilado sino interpretado a tiempo real. Por otro lado LLVM no es más que una tecnología para crear maquinas virtuales para diferentes plataformas que hagan el código compatible con GCC (C, C++ y Objective-C) totalmente independiente de cualquier hardware, la idea de LLVM no esta pensada para el iPhone sino para los Stream Processors, para hacer uso de estos de forma más eficiente sin tener que aprender lenguajes ni APIs específicas como OpenCL. Cierto es que Apple le da apoyo a OpenCL pero su preferencia es que los desarrolladores de OS X de cara al futuro puedan usar el código fuente de sus aplicaciones en los Stream Processors sin tener que variarlo.

El problema por el cual Flash Player va tan lento viene por la naturaleza de los archivos SWF, estos son varios archivos SVG con un applet ActionScript cada uno de ellos que les dice como tienen que ir reproduciendose, cuales son sus partes interactivas y todo esto. Los archivos SVG no son datos sobre la imagen sino sobre como se ha de generar la imagen, en vez de tener información sobre cada uno de los fotogramas de la imagen lo que tenemos es un archivo XML oculto dentro de este que nos dice como se ha de ir construyendo esta con lo que eso supone un enorme desgaste en ciclos de reloj.

El iPhone se ha diseñado para no ser compatible con lenguajes alternativos a través de ningún tipo de máquina virtual, lo que impide que utilice en “crudo” Java, Flash, .Net, Silverlight, o cualquier otra cosa que no sea su código nativo C/Objective-C compilado para el procesador ARM. Esto se especifica en el acuerdo del SDK de Apple. No hay, sin embargo, ningún tipo de restricción contra la compilación de código ya existente en C/Objective-C nativo y crear una aplicación iPhone a partir de ahí.

Otra de las grandes mentiras de Eran es llegar a decir que Flash funciona a través de una maquina virtual, no lo hace, simplemente lo que hay es un interprete de este tipo de archivos que Adobe se guarda para si para que los que crean este tipo de contenido tengan que seguir dependiendo de Adobe Flash, el cual es el motivo por el cual Adobe puso todo el dinero sobre Macromedia. Pese a que ActionScript es un lenguaje interpretado se puede llegar a crear un compilador y código binario alrededor de este, cosa que no sería nada descabellada que Adobe lo estuviera haciendo, en realidad ya lo esta haciendo.

Desgraciadamente la creación de ActionScript como un lenguaje compilado para hacer aplicaciones significaría también el tener que documentar la forma en que sus clases internas se comunican con los archivos por lo que al final esto significaría que cualquiera con conocimientos podría adivinar la forma en la que funcionan los archivos SWF en su comunicación con Flash y por tanto crear alternativas a Adobe. Ya existen proyectos bajo licencia GPL que están haciendo eso pero Adobe pone todas las trabas posibles.

Adobe también afirma que cualquier contenido flash que se piense pasar a aplicación para iPhone debe usar ActionScript 3.0, que se presentó con Flash 9. Las anteriores versiones de Flash usaban ActionScript 1.0 o 2.0, que funcionan usando una máquina virtual completamente diferente a la de ActionScript 3.0. El plugin de flash para sobremesa ofrece dos máquinas virtuales diferentes, una para reproducir los códigos ActionScript 1/2, y una segunda para ejecutar ActionScript 3.0.

No hay dos máquinas virtuales diferentes, lo que ocurre es que la versión 3.0 es otro mundo. Antes del ActionScript 3.0 como lenguaje interpretado para eventos era mucho mejor Lingo, pero este estaba atado completamente a Director cuyo contenido ha ido cayendo en desuso en lo que a la web se refiere, pues bien, la versión 3.0 de ActionScript añadio orientación a objetos con todo lo que eso significa y los que sepáis de programación entenderéis el motivo por el cual Adobe separa el contenido hecho con la versión 3.0 de ActionScript del resto. La orientación a objetos hace que ciertos elementos del lenguaje base acaben cambiando también por lo que es necesario otro interprete para los archivos SWF que usen ActionScript 3.0, no hay nada especial aquí.
Y siguen las mentiras
Si la primera mentira de Eran se basaba en decir que los archivos SWF corren a través de una máquina virtual, cosa que es completamente falsa. Las que vienen a continuación no tienen desperdicio.
La versión actual de Flash Lite 3.0 para teléfonos móviles sólo soporta ActionScript 2.0, lo que significa que Flash Lite no puede utilizar los cotenidos de los modernos Flash 9 o 10. El nuevo reproductor Flash 10 que Adobe dirige a los usuarios de teléfonos móviles sólo utilizará ActionScript 3.0, lo que significa que los contenidos flash anteriores diseñados para funcionar con Flash Lite no funcionarán en los nuevos dispositivos.
El hipnosapo mete miedo en el cuerpo a los que crean contenido interactivo a través de Flash, les dice simplemente que no hagan contenido para teléfonos móviles inteligentes que lleven el interprete SWF llamado Flash Lite, estos teléfonos son competencia de Apple en el mercado y lo que intenta hacer Eran es que no reciban contenido metiendo miedo en el cuerpo a través de su artículo. Su mensaje es: No hagáis contenido que use Flash pensado para teléfonos móviles inteligentes ya que vuestro contenido no tendrá futuro si lo hacéis.
Esta diversidad ayuda a engordar las versiones de sobremesa de Flash, que no hace ningún esfuerzo en obligar a modernizar los contenidos de flash porque tiene los recursos disponibles para seguir utilizando los antiguos contenidos usando múltiples máquinas virtuales. Pero eso no es trasladable al entorno móvil, donde la duración de la batería y las limitaciones de potencia de procesado hacen que no sea viable un plugin lleno de máquinas virtuales y que ocupe tanto.
Ya he dicho que lo de las maquinas virtuales de Flash es un bulo de Eran, no hace falta que lo vuelva a repetir.
El plan de Adobe de crear una versión móvil “completa” de Flash 10 que sólo soporta los nuevos códigos de la versión 3.0 hará que de repente gran cantidad de contenidos Flash que tengan poco más de un par de años queden obsoletos. Eso incluye todo lo que se diseñara para funcionar con Flash Lite, la estrategia actual de Adobe para móviles. Esto obliga a los desarrolladores de flash para móviles a reescribir todo su código flash para que su contenido se vea bien en el nuevo reproductor, eliminando así una de las principales razones para querer usar Flash en primer lugar: su amplia base instalada.
Yo tendría que quejarme más que Eran, al fin y al cabo 18 créditos de mi carrera han ido sobre programación a través de eventos usando ActionScript 2.0, me empape el libro de O’Reilly y del libro oficial de Adobe sobre el tema y sinceramente no me pongo las manos sobre la cabeza sobre el hecho de que ActionScript 3.0 necesite otro interprete, los motivos técnicos son justificables para ello y si no eres capaz de hacer el salto de un lenguaje (tanto interpretado como compilado) a otro entonces retirate.
Tiene huevos que Eran vea como problemático que los desarrolladores de ActionScript tengan que aprender la ampliación del lenguaje y los cambios en su tercera versión, pero que no vea como problemático el hecho de que los desarrolladores tengan que aprender Objective-C para programar para el iPhone/iPod Touch, y tampoco vea como problemático que los desarrolladores de dicho lenguaje hayan tenido que hacer un curso de “reciclaje” para la versión 2.0 de dicho lenguaje.
Aparte que ActionScript 3.0 ya tiene 3 años, que no ha salido hace unos meses.

Adicionalmente, con el iPhone consumiendo alrededor de la mitad de todo el tráfico web de móviles, los desarrolladores de Flash para móviles tendrán que plantearse si merece la pena reescribir todo su contenido en flash existente en ActionScript 3.0 sólo para poder acceder a las plataformas que no son el iPhone que deberían poder usar Flash Player 10 en algún momento del año que viene.

La alternativa es construir aplicaciones con HTML5 usando JavaScript estándar, que ya funciona en el iPhone y en otros navegadores móviles que usan WebKit como los de Symbian de Nokia, Android de Google, BlackBerry OS de RIM, y WebOS de Palm.

Eran nos viene a decir de nuevo que no debemos hacer contenido usando Flash, solo por el hecho de que Apple no le da apoyo y nos da como alternativa el uso de la plataforma webkit de Apple a través del uso de HTML5+Javascript sin tener en cuenta cual es la naturaleza real de los archivos SWF. Para el hipnosapo los archivos Flash no son más que páginas web interactivas con contenido de varios medios que solamente se puede reproducir a través de una máquina virtual de Adobe, ya he dicho más arriba el motivo por el cual eso es falso.

El formato FLV es otra cosa diferente al SWF, mientras que se le llama Flash Video en realidad no tienen nada que ver técnicamente el único con el otro, FLV es un contenedor (como lo son MOV de Quicktime y WMV de Windows Media) que hace que los archivos de video dependan del Flash Player, cosa con la que no estoy de acuerdo con ello al haber formatos mucho mejor para el video y por el hecho de que el video no es contenido multimedia y por tanto no necesita interactividad.

Veamos lo que dice la Wikipedia sobre Flash Video:

FLV (Flash Video) es un formato de archivo propietario usado para transmitir video sobre internet usando Adobe Flash Player (anteriormente conocido como Macromedia Flash Player), desde la versión 6 a la 10. Los contenidos FLV pueden ser incrustados dentro de archivos SWF. Entre los sitios más notables que utilizan el formato FLV se encuentran YouTubeGoogle VideoReuters.comYahoo! VideoMySpace.

Por lo visto Flash Video se ha convertido en un estándar de la web dado su alto soporte pero el hecho de HTML5 soporte como estándar a los vídeos en formato H.264 hará que buena parte de las páginas web acaben siendo actualizadas para dar soporte a dicho formato. Además, nada nuevo bajo el sol, simplemente tenemos un contenedor de video que usa una aplicación que no es la adecuada para este tipo de contenido. Pero sigamos con la definición de la Wikipedia:

Flash Video puede ser visto en la mayoría de los sistemas operativos, mediante Adobe Flash Player, el plugin extensamente disponible para navegadores web, o de otros programas de terceros como MPlayerVLC media player, o cualquier reproductor que use filtros DirectShow (tales como Media Player Classic, Windows Media Player, y Windows Media Center) cuando el filtro ffdshow está instalado.

Un momento…

¿significa esto que es posible reproducir contenido en formato FLV sin necesidad de que el Flash Player este instalado? Veamos en que consiste el famoso filtro ffdshow.

ffdshow es un filtro codificadordecodificador de audio y video parte del Proyecto FFMPEG, este es capaz de reproducir múltiples formatos de audio y video, su código esta sobre licencia GPL. Utiliza la biblioteca libavcodec del Proyecto FFMPEG la cual codifica y decodifica programada en lenguaje C.

Teniendo en cuenta que el código es GPL a Apple no le costaría nada adoptar una solución para quitarse de encima el Flash Player para el video tomando como referencia el ffdshow para la creación de un servicio relacionado con Quicktime que permitiera la reproducción del contenido en FLV que acabara para siempre con la lacra de los vídeos a través del horrible formato FLV.

Mejor aún, podrían incorporarlo dentro de los servicios webkit, esta solución sería mucho mejor para todos en vez de la que propone Eran que lo único que busca es meter miedo a base de mentiras para que hagamos contenido exclusivo para webkit. Pero claro, el problema a solucionar no es flash de cara a contenido SWF (animaciones interactivas) sino que es Flash para reproducir video, el hecho de que exista contenido de video en internet que no use los estándares MPEG y que se base en un reproductor de contenidos en concreto (ya sea Quicktime, Windows Media o Flash) es llanamente vergonzoso ya que limita enormemente la visualización a los usuarios y provoca perdidas enormes de rendimiento, en ese punto estoy muy de acuerdo con Eran ya que Flash Video es el mismo tipo de lacra que hace ya una década  tuvimos que aguantar con Real Media.

Lo que eran no comenta es que Apple tiene la misma política que Microsoft en cuanto a los lenguajes de programación, Microsoft pone trabas en la ruedas para que sea enormemente dificil portar a plataformas que no son Windows y Apple esta haciendo lo mismo al no permitir que cierto contenido pueda ir a parar al iPhone, este tipo de actitud es completamente denunciable lo haga quien lo haga. En el caso de los archivos SWF lo único que necesita hacer Adobe es crear un interprete, hay una parte del articulo de Eran que no he comentado por el hecho de que quería introducir el tema:

Mientras ClickToFlash trabaja para matar Flash en los ordenadores de sobremesa, la batalla abierta entre Flash de Adobe y HTML5 ha sido solventada radicalmente en el ámbito de los móviles. Apple presentó el iPhone sin soporte para las versiones Flash o Flash Lite, un subconjunto de Flash dirigido a los teléfonos inteligentes. A medida que Apple se hacía cada vez más inflexible en su oposición a Flash en el iPhone, Adobe informaba que tenían un Flash Player para el iPhone en marcha y casi acabado, y sugerían que incluso Apple estaba trabajando con ellos en el proyecto.

No me extrañaría para nada que Apple y Adobe hubieran trabajado en un interprete de archivos SWF que no fuera el Flash Player sino un servicio del sistema operativo que permitiera reproducir ese tipo de contenido de forma más eficiente, al final Apple decidió cortar por lo sano con el proyecto en su política de desarrollo para el iPhone ya que esto significaba que podría aparecer contenido compatible con varias plataformas y eso no es lo que quieren, quieren que solamente haya contenido que funcione únicamente en el iPhone y que los desarrolladores se vean atrapados a esta plataforma.

En fin, eso es todo lo que tenía que decir.

134 Comentarios

  1. Rebequitateodia

    FLASH ES UNA MIERDA COMO UN CASTILLO DE GRANDE

    Reply

  2. Rebequitanoteodia

    Estoy de acuerdo contigo y lo has explicado con datos y objetividad. En definitiva los de Adobe y Apple van a lo suyo y en vez de facilitar las cosas estan jodiendo todo cada vez mas. Es como el CSS con los exploradores, una locura absurda.

    Reply

  3. “Por otro lado LLVM no es más que una tecnología para crear maquinas virtuales para diferentes plataformas que hagan el código compatible con GCC (C, C++ y Objective-C) totalmente independiente de cualquier hardware, la idea de LLVM no esta pensada para el iPhone sino para los Stream Processors, para hacer uso de estos de forma más eficiente sin tener que aprender lenguajes ni APIs específicas como OpenCL. Cierto es que Apple le da apoyo a OpenCL pero su preferencia es que los desarrolladores de OS X de cara al futuro puedan usar el código fuente de sus aplicaciones en los Stream Processors sin tener que variarlo.”

    En realidad LLVM es tambien un nuevo modelo de backend de compilador. En Snow leopard puedes elegir compilar con GCC o con el compilador LLVM. El LLVM en realidad comenzó como un nuevo modelo para la creación de un lenguaje intermedio de compilador para el GCC nada que ver con los Stream Procesors (no directamente, la mejora en el lenguaje intermedio tiene en cuenta nuevos desarrollos tales como los los susodichos Stream Procesors)

    En realidad AccionScript se ejecuta en una maquina virtual similar a la maquina virtual Java aunque no tan autocontenida ( en ese aspecto tiene algunos aspecto de maquina virtual en emulación tipo VMware ). Me parece que estas teniendo una colisión de nomenclatura. Si te quieres poner pijo con nomenclatura en realidad Flash no usa SVG sino su propio lenguaje vectorial el SVG es posterior al desarrollo de Flash.

    Tu dices son mentiras yo diria tenéis muy diferentes bagajes respecto a la nomenclatura tecnica y tu crees que la tuya es la unica correcta.

    Pero el contenedor MOV por ejemplo permite interactividad es mas puedes añadir programas javacript enteros dentro del formato MOV. :) No se que nivel de interactividad soporta FLV directamente pero el ascenso a la fama de FLV es por que es el unico contenedor soportado por flash como tal descargas un player en swf que corre dentro del plugin (proceso, maquina virtual, sistema de renderizado interactivo como quieras llamarlo) que es Flash que como tal tiene toda la interactividad de Flash que el desarrollador del player quiera darle

    No, te dice que el contenido para lite no correra en el futuro Flash mobil y que el flash de la web podrá correr en el lite o en el nuevo Flash mobil pero no en los dos.

    ¿Quieres decir un interprete como el de MacOsX (la arquitectura mas parecida al iphone en la que tenemos Flash) que consume un procesador intel a 2.6Ghz al 100% mientras muestra una imagen estatica esperando a que hagas algo? En realidad Apple no pone ningún problema en que escribas tu programa en lo que quieras te da las herramientas para facilitarte la vida con Objetive-C pero mientras el resultado final sea in .ipa valido no hay problemas, que trates de
    instalar una aplicación que pueda tomar control del telefono pues como que no.

    Tu dices odia Flash por que Apple no lo soporta pero puede ser que odia Flash (en parte porque usa Mac y Flash es un orden de magnitud peor en Mac que en windows) y le encanta que Apple no lo soporte y a ver si por fin alguien le clava una estaca en el corazón le corta la cabeza le llena la boca de ajos la arroja a un rio, quema su cuerpo y dispersa sus cenizas en el oceano. Y esto es posible por que ahora comienzan a existir alternativas. Flash es bueno para diseñador que quiere que el visitante vea las cosas exactamente en la forma en que el las ha creado para alguien que recuerda que en la web el que debe decidir finalmente como se ve algo debe ser el usuario por que es el unico que realmete puede conocer sus circunstancias Flash es la ultima abominación de la Web. Seamos sinceros Flash puede que tenga sus usos que son un 1% de el uso que actualmente se le da el otro 99% es solo una forma de molestar.

    Reply

  4. ¿A que te refieres con bagajes?

    Reply

  5. Bagaje cultural, la serie de experiencias previas en este caso desde las que partes para determinar a que lado de una linea cae algo.

    Salvo contadas ocasiones una tecnica o tecnología a partir de un cierto nivel de complejidad corresponde a un concepto preciso sino que mezcla y utiliza diferentes ideas y conceptos así que cuando le intentas dar un nombre exacto son tus experiencias las que determinas si para ti algo es un JIT, un lenguaje interpretado o una maquina virtual por ejemplo.

    Reply

Leave a Reply