Flash sur iPhone : comment ça marche ?

Arnaud de la Grandière |
Adobe a donc annoncé que la prochaine version de Flash (CS5) permettrait d'exporter des applications pour iPhone. Apple refusant à Flash d'entrer par la grande porte, Adobe a réussi à passer par la fenêtre. Commençons par nous pencher sur l'approche technique qu'Adobe a choisie, et par faire le détail du fonctionnement de Flash.

Flash est basé sur le langage ActionScript, un langage de type script proche de JavaScript. Ce type de langage nécessite un « interprète » : pour pouvoir être exécuté sur tout type de processeurs, il n'est pas compilé en langage machine. En lieu et place, un interprète fait l'interface entre le script et le processeur, en convertissant à la volée les instructions du script en commandes compréhensibles pour le processeur : ainsi, un fichier Flash peut être exécuté sans modification sur toute machine qui dispose du player ad-hoc, quel que soit son processeur ou les API de son système d'exploitation. Flash étant une technologie dédiée au web, et donc susceptible de fonctionner sur tout type de machine, c'est cette approche qui a été choisie (l'ActionScript n'ayant pas vocation à s'adresser à une plateforme matérielle en particulier).

Le problème d'un tel système, c'est que l'interprétation est bien plus lente que l'exécution d'un code compilé. Pour y remédier, on a parfois recours à un compilateur JIT (pour "just-in-time", à la volée), qui, au lieu d'interpréter les commandes, les compile directement en langage machine. C'est certes plus rapide que l'interprétation, mais malgré tout pas autant qu'une compilation "ahead-of-time", qui aboutit à du code assembleur exécutable directement (mais qui n'est donc pas distribuable universellement). D'autre part, la compilation JIT doit se faire très rapidement, au moment de l'exécution, et n'est donc pas aussi finement optimisée qu'une compilation réalisée en amont (celle-ci prend en effet beaucoup plus de temps).

Flash s'est vu adjoindre un compilateur JIT depuis sa version 9, mais reste malgré tout très gourmand en ressources (sans parler de la version Mac très critiquée pour ses lourdeurs), ce qui le rend difficilement exploitable sur des machines plus modestes telles que les smartphones. Apple a fait un choix tranché : pas de Flash sur iPhone ni iPod touch. D'autres constructeurs ont intégré Flash mobile avec plus ou moins de bonheur. Apple et Adobe se sont échangé quelques amabilités sur le sujet, la seconde n'appréciant manifestement pas qu'on pointe du doigt la pesanteur de son logiciel.

Une fois cet état des lieux dressé, comment Adobe compte-t-elle remédier à cette problématique avec Flash CS5 ? Rien de plus simple, en permettant de compiler ActionScript en langage machine ARM (le processeur des iPhone), à l'aide d'une bonne vieille compilation ahead-of-time. Ainsi Flash pourra produire des applications exécutables de la même manière que Xcode le fait avec l'Objective-C. Concrètement, Flash CS5 exploitera LLVM (voir notre une Apple tire le jus des processeurs) pour créer directement une application pour iPhone. Moralité, plus de problèmes de vitesse, une application réalisée avec Flash est susceptible de fonctionner aussi bien que n'importe quelle autre, pour peu du moins qu'Adobe fasse les choses comme il faut.

Certes, on peut se réjouir de la multiplication des points d'entrée sur l'App Store, qui offrent autant d'opportunités d'augmenter le nombre d'applications pour l'iPhone de manière exponentielle. Mais toutes les solutions en la matière ne se valent pas.

Car l'approche d'Adobe n'est pas sans inconvénients : si l'éditeur ouvre les portes de l'App Store aux innombrables développeurs Flash de tous bords, elle n'en reste pas moins un intermédiaire. Dès lors, si Apple vient à modifier ses API (ce qu'elle fait régulièrement), il en résultera nombre d'incompatibilités. De même, pour peu qu'Adobe ait laissé quelques bugs dans son compilateur, et ce sont toutes les applications développées par ce biais qui en souffriront, sans possible recours.

De même, pour peu que certaines fonctions de l'iPhone ne soient pas prises en compte par le compilateur d'Adobe, (comme c'est le cas pour l'accès au micro ou à la caméra par exemple), il n'y aura aucun moyen de contourner cette limitation. En outre, le « débugage » d'une application iPhone développée avec Flash consistera à tâtonner dans le noir, puisqu'un tel système ne permet aucun outil de traçage du code ni de remonter la piste d'un plantage, la seule manière de tester le code étant de le faire tourner sur un iPhone et de brûler un cierge. Enfin, ce système ne permet d'utiliser aucun des éléments d'interface graphique natifs de l'iPhone, dans lesquels Apple a mis tant d'efforts. Chaque application créée par ce biais proposera donc ses propres ersatz hétéroclites.

Cependant, Adobe est loin d'être la première à proposer une alternative pour le développement sur iPhone. On en compte nombre d'autres, comme Unity, Mono, GameSalad, ou encore Torque 3D qui permettent chacun de créer des applications compatibles iPhone OS sans coder en Objective-C. Cependant, pour la plupart, ces solutions proposent de convertir le code en Objective-C plutôt que de le compiler directement en assembleur ARM, ce qui laisse autrement plus de latitudes de contrôler la chaîne de production, et ce qui répond également aux problématiques soulevées plus haut.

L'autre élément à noter sur la démarche d'Adobe concerne le plan stratégique : pour mieux faire la démonstration de sa solution, Adobe a fait publier par des développeurs tiers une poignée d'applications sur l'App Store, toutes réalisées par le biais de Flash (Chroma Circuit, Trading Stuff, Fickleblox, Just Letters, South Park Avatar Creator, That Roach Game (ci-dessous), Red Hood).

phototahtroachgame


Quel meilleur moyen en effet de montrer la validité du principe que de montrer des applications validées par Apple et publiées sur l'App Store ? Certains pourraient d'ailleurs y voir la démonstration que Flash peut bel et bien fonctionner normalement sur un iPhone, mais ce serait oublier les nombreuses différences entre ce moteur et le player Flash standard. Cependant, aucune des applications en question ne fait figurer de fonctionnalité avancée ou gourmande en ressources, difficile donc de juger de son efficacité. Cependant, les différentes applications ont montré quelques saccades sur des appareils de générations précédentes, ce qui ne laisse guère augurer du meilleur pour des fonctions plus poussées (voir l'article Premier test des applications Flash pour iPhone). N'oublions pas cependant qu'il ne s'agit encore que d'une version bêta (Adobe a annoncé qu'une bêta publique de ses outils sera disponible d'ici la fin de l'année).

Une fois qu'on a fait le tour de la question, il reste cependant une inconnue : comment Apple va-t-elle réagir à cette initiative ? D'une part, c'est un pied de nez autour du bras de fer concernant Flash sur iPhone, et d'autre part Apple perd le contrôle de la façon dont les applications sont créées pour iPhone, qui plus est sans cohérence graphique, et avec le risque de se retrouver avec des applications trop lentes. D'un autre côté, Flash pourrait également offrir une manne de nouvelles applications, permettant à l'App Store de continuer à gagner de l'importance, pour peu que les applications soient dignes d'intérêt. Enfin, si jusqu'ici il fallait obligatoirement avoir un Mac pour compiler une application pour iPhone, avec Flash CS5 il sera possible de le faire également à partir de Windows.
avatar misterbrown | 
AH ! Voila un bel article qui me réconforte dans mon choix de lire encore Macgé.
avatar GStepper | 
L'article est sympa en effet. Par contre je reste dubitatif. Quel intérêt pour les utilisateurs d'iPhone iPod Touch ? Quelles "merveilleuses" applications que l'on ne peut pas faire avec Objective-C/CocoaTouch ??? J'ai quand même un peu l'impression que c'est juste pour permettre aux devs paresseux de ne pas apprendre un langage OO extrement simple (Objective-C)... Le prix ne peut être en cause car un mac mini (avec Xcode) coute moins cher qu'une licence Adobe... Quand je verrais un "Beatmaker" ou un "Blades Of Fury" écrit en ActionScript la seule chose que je me dirais c'est: "Super, ils font la meme chose qu'avec le Framework d'origine !!!" Bref, je ne vois pas l'interet pour les users... Et, franchement, un dev qui peut pas apprendre en moins de 2 jours un langage aussi simple que l'Objective-C il peut changer de metier...
avatar f-factor | 
"c'est un pied de nez autour du bras de fer" Faites attention, vous allez vous faire un noeud ;-) !
avatar 406 | 
ha cool. on va pouvoir avoir les pubs à la noix sur iphone :-p
avatar Lemmings | 
On dit "interpréteur" et non "interprète" ;) GStepper : L'Obective C est loin d'être un langage simple, et pour m'être attelé à la programmation d'application iPhone c'est loin d'être une sinécure sur les débuts. Accessoirement il y a bien bien bien plus de développeurs déjà formés en ActionScript 3 (qui n'est qu'une surcouche de l'ECMA Script, utilisé aussi par JavaScript). Donc l'intérêt est évident. Maintenant c'est certain que c'est pas une solution à toutes les applications.
avatar Lemmings | 
406 : il y en a déjà, et c'est pas lié à flash.
avatar GStepper | 
@Lemmings "'Obective C est loin d'être un langage simple, et pour m'être attelé à la programmation d'application iPhone c'est loin d'être une sinécure sur les débuts." C'est ton avis basé sur ton expérience que je respecte. En revanche, d'autres (dont moi) trouvent cela simple (et pas seulement sur iPhone, mais aussi *NIX avec GNUstep).En tout cas le livre PDF gratuit fourni par Apple est suffisament simple et bien fait (et pour cause puisque produit à l'origine par NeXT) pour apprendre le langage en moins de 2 jours, désolé. "Accessoirement il y a bien bien bien plus de développeurs déjà formés en ActionScript 3" En effet, mais 1 an et quelque après l'ouverture de l'appStore AUCUN de ces nombreux devs ne nous a manqué je t'assure. Le succès de l'iPhone et de l'appStore nous le démontre tous les jours... "Donc l'intérêt est évident." Non justement cela est tout sauf évident. Petites questions: - Quelles applications vont nous fournir ces nombreux devs que nous ne pouvons déjà faire avec Objective-C/CocoaTouch ? - Quel interet pour les utilisateurs ? Merci d'avance
avatar Workke | 
Moi je dirais que tout ça n'a rien à voir avec du flash. Finalement dans cette approche Adobe propose d'utiliser Flash comme plate-forme de dev, or dans mon esprit quand on dit flash c'est plutôt du genre "intégré" dans une apge web ... Oui il y a des milliers d'appli flash qui traine par ici et par là mais peut-on réellement parler d'intégration du flash dans l'iPhone ? Je répondrai non !
avatar GStepper | 
@Workke "Flash comme plate-forme de dev," C'est bien ce qui me choque car c'est loin d'être la spécialité d'Adobe. C'est juste un moyen détourné de profiter du très lucratif marché iPhone/AppStore. J'espère vraiment qu'Apple va réagir.
avatar Zed-K | 
Petite précision vis à vis de l'article, l'ActionScript 3 n'est pas ce qu'on pourrait qualifier de "proche de Javascript" (dieu merci), c'est juste que les 2 langages se basent sur la norme ECMAScript (dont JS implémente la version 3 et l'AS3 la version 4). @ GStepper: Tout l'intérêt est de bénéficier d'une communauté de plusieurs milliers (me demandez pas les chiffres exacts ^^; ) de développeurs AS3, dont beaucoup développent des jeux, dont beaucoup de qualité (il suffit de faire un tour sur Kongregate pour vous en convaincre). La compilation via LLVM permettra de s'affranchir des problèmes de ressources du Flash Player, et d'avoir à priori des jeux tout à fait fluides et honnête en terme de consommation de mémoire/processeur. Ça permettra aussi, au grand dam d'Apple, de développer des applications pour iPhone... sous Windows, et ce sans avoir à apprendre un langage guère peu utilisé en dehors du monde Mac.
avatar lennoyl | 
Finalement, au lieu d'avoir une seule application pour lire le flash sur iphone, on va (ou plutot vous allez ^^ ) avoir pleins d'applications faites avec flash. Ça sera mieux pour Apple, mais pas pour ceux qui paieront chacune de ces applications qu'ils auraient pu avoir gratuitement sur le web s'il y avait eu un flash player.
avatar 6ix | 
D'accord avec Workke. Il ne s'agit donc pas de "profiter" du flash intégré à certains sites / applications Web, mais de pouvoir développer et faire tourner une application Flash, au même titre que n'importe quelle autre application. Et tout comme GStepper, je n'en vois pas trop le but… Déjà car ce n'est pas forcément cela qu'on attend de la part d'Adobe avec Flash (mieux vaudrait faire des plug-ins légers et robustes), et puis on en revient à la même problématique qu'avec Mono et son C#: si on veut développer pour iPhone, on utilise les outils mis à disposition par Apple (qui sont d'ailleurs bien foutus). Apprendre l'objective-c ce n'est pas dramatique quand on est développeur (le gars qui apprend un langage et demi et s'en tient à ça pour tout ce qu'il veut faire, désolé mais c'est passer à côté de bcp de choses; l'idée ce serait plutôt d'utiliser les meilleurs outils selon le contexte), et on rentre assez vite dans l'API d'Apple. J'ai plutôt l'impression que ce genre d'action permettra aux devs C#/Flash/etc… de se jeter sur l'iPhone sans chercher à comprendre ce que cela implique. Et le résultat risque pour l'utilisateur de se retrouver avec plein d'apps qui n'ont plus du tout de cohérence. Ca vaut pour l'iPhone, mais c'est pareil pour d'autres plate-formes (par exemple Google met à disposition toute une API (essentiellement en Java) pour Android, pourquoi chercherait-on à utiliser à tout prix autre chose ?).
avatar Zed-K | 
Il faut savoir au passage qu'il était déjà possible depuis peu de compiler des applications iPhone sous Windows et Linux en utilisant HaXe. Quant à une réaction d'Apple, je ne sais pas s'ils pourront faire grand chose. On va vite voir s'ils préfèrent forcer les gens à développer sur Mac en Objective-C, ou encaisser les revenus grassement générés par la multitude de développeurs AS3 qui vont payer les 100€ annuels + les 30% par vente via l'AppStore... Dilemme =)
avatar ederntal | 
Je craint le pire, mais on verra bien !
avatar DarkDestiny | 
GStepper de quel PDF parle tu ? Et si vous avez des liens vers des forums/sites aux tutoriaux et à l'aide bien garnie sur le Cocoa je suis preneur.
avatar Rez2a | 
Bravo pour cet article synthétique et la rapidité de réaction compte tenu de la date de l'annonce. Et évidemment bravo à Adobe, qui après avoir tiré la qualité perçue des Mac vers le bas (allez faire comprendre à un novice que si un Mac se met à souffler dans tous les sens à la moindre animation Flash, ce n'est pas à cause du matériel), s'attaque maintenant à l'iPhone, pourquoi pas aller chercher le pognon là où il est après tout. Cette boîte me donne de plus en plus envie de chier, ils auraient vraiment mieux fait de s'en tenir aux outils de retouche graphique. [Edit] @ en-dessous : oups, il a suffi que tu postes pour que je fasse mon intégriste... ;)
avatar gazobu | 
bravo à Arnauld de La Grandière pour son article (comme d'hab) mais surtout bravo à vous tous pour vos réactions, pour une (rarissime) fois c'est de bon niveau, pas de troll, pas de fanatique, pas d'Ayatollah de la Pomme, des opinions, des avis divergents, du bon macG comme on l'aime.
avatar GStepper | 
@DarkDestiny Voici le lien vers le PDF sur le langage Objective-C: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/ObjC.pdf Attention toute la doc dev d'Apple est en anglais ! Le site est: http://developer.apple.com de là l'inscription est gratuite et tu as accès à toute la doc Apple (des dizaines de milliers de pages...) ainsi qu'aux divers outils de développement. Bon développement et bon courage ;)
avatar dorfr | 
Alors quelques lectures intéressantes à l'adresse suivante : http://developer.apple.com/mac/library/navigation/index.html Les pdf sont accessibles à partir des pages de présentation, en haut à droite, sous la loupe. Ah mince, gratté...
avatar Thierry61 | 
Bon papier. Finalement, on arrive à une sorte de compromis. D'une certaine façon l'intransigeance d'Apple a payé. Pour ce qui est de la performance et de la qualité technique et fonctionnelle des futures applications, les testeurs en tous genre auront un nouveau terrain de jeu qui s'ouvrira à eux (au boulot Macge :-) ). Quant aux utilisateurs, ils gardent la possibilité de critiquer ou descendre les dites applications sur l'Appstore si le coeur leur en dit :-). Donc tout va bien non ? Les "flasheux" vont devoir faire attention à ne pas sortir n'importe quoi.
avatar Goldevil | 
Il est en effet possible d'avoir une connaissance suffisante d'ObjectiveC en 2 jours pour commencer à travailler mais il est illusoire de savoir programmer une appli qui tiens la route en moins de 2 semaines. L'apprentissage des APIs est de loin le gros du boulot. Par ailleurs c'est la même chose avec ActionScript et tout autre langage. L'avantage de développer en Flash pour iPhone est de pouvoir faire la même appli sur plusieurs OS et browsers/environnements différents. Le portage d'une appli flash vers iPhone est certainement plus facile qu'une appli objectiveC. Le langage est le même mais pas les API.
avatar GStepper | 
@Goldevil "il est illusoire de savoir programmer une appli qui tiens la route en moins de 2 semaines. L'apprentissage des APIs est de loin le gros du boulot. Par ailleurs c'est la même chose avec ActionScript et tout autre langage." - Entièrement d'accord avec ça. "L'avantage de développer en Flash pour iPhone est de pouvoir faire la même appli sur plusieurs OS et browsers/environnements différents." - Certes, toutefois tu conviendras que fonctionnellement cela n'apporte rien de nouveau par rapport à l'existant et que, dans le meilleur des cas les applis ActionScript/Flash feront aussi bien que les applis Objective-C/CocoaTouch (ce qui est déjà très optimiste voire utopique). Explique moi juste comment tu vas coder un "BeatMaker" en ActionScript ou un "Blades Of Fury"!?! "Le portage d'une appli flash vers iPhone est certainement plus facile qu'une appli objectiveC." - Tout dépend le type d'application portées (pour le fun je code des applis simples qui tournent aussi bien sur mes veilles NeXTstation, sur mac, sur iPhone et sur linux via GNUstep moyennant très très peu de modifications ca fait juste 6 architectures différentes:Motorola 68k, x86, x64, PPC, PPC64 et ARM...). Et comme tu le sais surement le premier inconvénient de la portabilité c'est la performance. Vouloir me faire croire qu'on peut être portable ET optimisé relève du rêve et les codeurs Java le savent bien (Sun en premier lieu). "Le langage est le même mais pas les API." En respectant tant que faire se peut le paradigme MVC, tes modèles sont portables sans soucis, les vues demandent au pire quelques cliques (merci interface builder et merci M, Hullot) et tes controleurs demandent plus ou moins de boulot selon ton appli et surtout la qualité de son design parce porter une applis lorsque elle est finie et prévoir une appli dans le but de la porter n'amène pas forcement le même design, ce sont des choix à faire, et ce, quelque soit le langage/plateforme choisi(e)
avatar Bjeko | 
Flash peut être un trés bon produit pour développer des applis, mais des applis différentes : des présentations multimédia interactives de produits par exemple, n'oubliez pas que Flash est le fils spirituel de Director, qui à la base servait à faire des "applis" offline ;) En tout cas, bonne démarche de Adobe pour moi, qui s'il elle n'apportera rien à certains utilisateurs comme ça a été dit, ne leur retirera rien non plus... et pourra en satisfaire d'autres :)
avatar jean_claude_duss | 
" Explique moi juste comment tu vas coder un "BeatMaker" en ActionScript ou un "Blades Of Fury"!?! --> l'idée n'est pas vraiment de coder blades of fury, c'est de permettre à énormément de monde de développeur sur iphone sans avoir à connaitre OC... au niveau technique, ca n'apporte rien, au niveau pratique énormément... maintenant, n'importe quelle boite pourra faire des aplis iphone en confiant le dev à un dev flash. la solution est moins élégante que de tout faire en natif mais si ca marche bien, je vois pas vraiment ou est le problème. Et même si OC s'apprend en 2 minutes ou 2 jours, il rete toujours bien plus compliqué et moins convivial que l'AS3 basé sur l'ecma script... des fois j'ai fini mes 100 lignes en OC et je me marre en me disant que j'aurai fait la même chose en moins de 2 lignes en AS3... bon, pour l'instant c'est des grandes démos d'adobe...on ne sais pas vraiment en pratique ce que ça va donner !... si c'est fluide cool, si ça rame : poubelle !
avatar GStepper | 
@jean_claude_duss "c'est de permettre à énormément de monde de développeur sur iphone sans avoir à connaitre OC..." - J'entend bien, mais je vois pas pourquoi Apple se devrait de satisfaire les besoins des devs ActionScript sur sa plateforme la plus lucrative ? Apple n'a jamais demandé au devs AC/Flash de venir... Et franchement aucun des programmes AC/Flash ne nous manques (en terme de fonctionnalité). Moins de 2 ans après l'ouverture de l'AppStore il y a juste environ 80000 apps, tu penses réelement qu'il y a carence ? Tu connais d'autre plateforme qui ont eu un tel succès ? Pour moi Adobe veut juste prendre sa part du gateau (pardon de marché)en vendant des licences Flash, ca n'est que mon avis. "il rete toujours bien plus compliqué et moins convivial que l'AS3 basé sur l'ecma script..." - ActionScript et Flash sont propriétaires et fermés(avec des prix prohibitifs) alors le coup du c'est basé sur une norme, s'il te plait à d'autre. Objective-C est basé sur le C ANSI, GCC est libre et gratuit tout comme GNUstep d'ailleurs. "j'ai fini mes 100 lignes en OC et je me marre en me disant que j'aurai fait la même chose en moins de 2 lignes en AS3..." - Et moi je te fais un viewer d'image avec dragndrop, copier/coller sans une seule ligne de code !!! Comment tu fais en ActionSctipt ? Tu vois moi aussi je peux me "marrer".

Pages

CONNEXION UTILISATEUR