salut,
pour faire bref: j'ai le même genre de problématique (casual game multijoueur), j'ai passé du temps à hésiter entre applet java et flash et j'ai finalement choisi Java. Je n'ai pas une connaissance approfondie de Flash, mais essentiellement de java + applets + 2D.
Je vais essayer d'être exhaustif, donc désolé d'avance pour le pavé de texte imbuvable ... mais il y a une récompense à la fin ;)
Je ne peux pas parler de Flash par expérience, donc je vais éviter de parler de ce que je connais peu. D'un autre côté, il y a pas mal de choses qui 'tournent bien' sur le web.Citation:
java est un langage de programmation alors que flash utilise des scripts très lents
Java n'a pas de VSync non plus !Citation:
flash n'a pas de vsync, le rendu n'est pas très élégant
Il y a bien des workarounds, mais ça implique du JNI (autant oublier pour de l'applet cause sandbox et portabilité).
Tu soulèves un peu le point le plus important selon moi: ton profil et ton expérience.Citation:
le java pose moins de problèmes de documentation: plus facile de porter du c+, beaucoup de docs en ligne, communauté très importante
Tu sembles avoir un profil de 'développeur' plus que de graphiste (d'après le peu que je t'ai lu et ce que j'en ai interprété, j'ai peut-être tort).
Il semble que Flash implique une approche du projet beaucoup plus orientée 'esprit graphiste' qui demande un temps d'adaptation quand on a plutôt une expérience de 'pisseur de code objet'.
C'est mon cas également.
Et ça a pesé lourd dans mon choix final de Java.
cf orientations 'graphistes' vs 'développeurs'. J'ai peut-être une explication: les anims flash sont en règle générale des petits projets avec des petits budgets qui doivent être développées rapidement. Pas de quoi mettre un développeur + un graphiste sur le coup (trop cher). Flash est plus indiqué pour un projet avec une seule personne: le graphiste poru le coup.Citation:
le script de flash est moins complexe et donc le développement serait plus facile.
Vrai dans la théorie.Citation:
là je ne suis pas d'accord car la lenteur du flash fait qu'il faut trouver des optimisations exotiques qui peuvent devenir un véritable casse-tête, alors qu'avec java il suffit d'appliquer les principes de programmation classiques.
Dans la pratique, tu n'échaperas pas aux bidouillages à un moment ou à un autre, même avec Java.
Sans aucun doute meilleure que java.Citation:
la portabilité du plugin flash est parfaite
Différents points ennuyeux avec Java qui méritent attention:
- Java 1.1 n'est pas utiliable car trop restreint en termes de possibilités. Il ne faut donc pas compter dessus pour développer quelque chose de 'viable'. La version minimum à prendre en compte pour la portabilité est la 1.4. Ca a une scrée conséquence: beaucoup moins de monde a le plugin déjà installé, d'où un part moins négligeable des visiteurs devra installer le plugin Java. Et là, c'est le (gros) souci:
* va-t-il accepter la popup plus ou moins obscure lui demandant d'installer un truc supplémentaire? Ca peut faire peur à certains visiteurs.
* peut-il installer le plugin ? droits admins sur sa bécane, donc au revoir les ordis 'publics', d'une université par exemple
* si oui, il va devoir charger une JVM. Et la JRE 1.6 c'est 12.5Mo, à comparer aux ... 1.5Mo de Flash player 10.
De plus, une applet de 'jeu', c'est bien, mais en règle générale on aura envie à terme de l'intégrer dans un site plus complet. Cela implique deux choses:
* pouvoir avoir plusieurs applets sur la même page éventuellement qui communiquent entre elles. Sur Java, avoir plusieurs applets qui cohabitent pose des soucis (partage de la même JVM ; interaction avec les membres statiques, ...). LA communication entre deux applets n'est pas triviale non plus.
* pouvoir communiquer entre le javascript de la page et l'applet. Java peut également poser des soucis pour certains triplets (OS + version de JRE + navigateur). Dans certains cas (marginaux, genre Opera + MacOs si je me souviens bien), c'est impossible. Le bon point: le browser par défaut de chaque OS (Linux, MacOS, Windows) y arrive quand même. Donc au pire, on peut inciter l'utilisateur à utiliser le bon browser.
Le plus important: Java et son SDK de base n'est vraiment pas fait pour faire du graphisme 'eye candy' en 2D. Si tu regardes du côté de l'API 2D, tu te rendras vite compte que tu devras fournir un boulot énorme pour implémenter des fonctionnalités basiques (animations non sacadées, sprites, zooms, effets 2D, ...) et un boulot encore plus énorme pour garder des performances décentes.
Heureusement, une solution JAVA existe ... (la récompense pour m'avoir lu jusqu'au bout ;)).... un framework LGPL Java spécialement conçu pour faire des applets 'eye candy' et qui vont:
* t'éviter l'immense majorité des soucis de base de compatibilité (JRE 1.4+)
* te fournir toutes les fonctionnalités techniques pour ce genre de besoin (gestion des ressources associées à l'applet, barre de progession lors du chargement de l'applet, sprites, animations, effets 2D, ...)
Son nom: pulpcore.
- Le jeu milpa te donnera un aperçu général des possibilités.
- Les quelques exemples 'techniques' parleront d'eux même quand aux possibilités du framework.
Je participe (un peu) à ce projet (hébergé ici sur Google code), donc n'hésite pas à demander plus d'infos.
Une dernière chose: il ne faut surtout pas croire que la portabilité n'est plus un souci avec Java. Les différences de versions, de navigateur, ... causent des soucis, bien plus que ce qu'on s'imagine au départ. Et ça alourdit d'autant la charge de travail. Donc mieux vaut commencer 'petit' et étoffer ensuite étape par étape.
Les quelques points abordés ci-dessus n'en sont qu'un aperçu et quelques pistes de réflexion. Il y a une foultitide de petits trucs à la c** comme ça qu'on ne prévoit pas au départ.
C'est mon cas: j'avais largement sous-estimé le nombre de petits imprévus auxquels j'ai finalement dû faire face (et pourtant, estimer des projets informatiques, ça fait partie de mon métier ;)).
Bon, il est vrai aussi que mes besoins sortent quelque peu des sentiers battus par rapport à une anim' flash 'de base' (comme le réseau, la comm' inter-applets, la comm' Java<->Javascript/AJAX, ...).
Donc en résumé: oui Java peu être une bonne solution, mais pas 'out of the box'. S'appuyer sur un framework rien que pour la partie 2D est indispensable. (je ne parle pas de la 3D, mais pour faire court dans une applet portable il ne faut même pas y penser. En Webstart à la rigueur, et encore c'est pas gagné).
Perso, j'ai fais le choix de Java et je ne le regrette pas. Mais comme toujours la techno dépend surtout de tes besoins.
Tu peux peut-être nous détailler ce que tu comptes faire, et on pourra certainement rentrer dans les détails ... à moins que ce ne soit 'secret défense' ;)