Flash sur iPhone : comment ça marche ?
par Arnauld de La Grandière le Mardi 06 Octobre 2009 à 16:04
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.
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.
| |
3
2
1
Vos réactions (40 réactions)
misterbrown
[06/10/2009 16:46]
AH ! Voila un bel article qui me réconforte dans mon choix de lire encore Macgé.
AH ! Voila un bel article qui me réconforte dans mon choix de lire encore Macgé.
GStepper
[06/10/2009 17:07]
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...
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...
f-factor
[06/10/2009 17:07]
"c'est un pied de nez autour du bras de fer"
Faites attention, vous allez vous faire un noeud ;-) !
"c'est un pied de nez autour du bras de fer"
Faites attention, vous allez vous faire un noeud ;-) !
406
[06/10/2009 17:14]
ha cool. on va pouvoir avoir les pubs à la noix sur iphone :-p
ha cool. on va pouvoir avoir les pubs à la noix sur iphone :-p
Lemmings
[06/10/2009 17:39]
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.
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.
Lemmings
[06/10/2009 17:40]
406 : il y en a déjà, et c'est pas lié à flash.
406 : il y en a déjà, et c'est pas lié à flash.
GStepper
[06/10/2009 17:48]
@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
@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
Workke
[06/10/2009 17:49]
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 !
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 !
GStepper
[06/10/2009 18:16]
@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.
@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.
Zed-K
[06/10/2009 18:55]
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.
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.
lennoyl
[06/10/2009 18:58]
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.
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.
6ix
[06/10/2009 18:59]
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 ?).
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 ?).
Zed-K
[06/10/2009 19:01]
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 =)
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 =)
ederntal
[06/10/2009 19:17]
Je craint le pire, mais on verra bien !
Je craint le pire, mais on verra bien !
DarkDestiny
[06/10/2009 21:14]
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.
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.
3
2
1
Réagir
Cinq consignes avant de réagir :
- Rester dans le cadre de la dépêche. Pour des discussions plus générales, vous pouvez utiliser nos forums.
- Développer son argumentation. Les messages dont le seul but est de mettre de l'huile sur le feu seront modifiés ou effacés sans préavis par la rédaction.
- Respecter les acteurs de l'informatique et les autres lecteurs. Les messages agressifs, vulgaires, haineux, etc. seront modifiés ou effacés sans préavis par la rédaction.
- Pour toute remarque concernant le contenu de l'article, pour nous signaler une erreur, une faute d'orthographe, une omission, merci de nous contacter exclusivement par e-mail.
- Relisez-vous, et pour les utilisateurs de Safari profitez de l'aide du navigateur : activez le menu édition > Orthographe > Vérifier l'orthographe lors de la frappe.





Mai 2012