-
Debuter en Android
Salut tout le monde !
J'ai déjà programmer en C, j'ai crée un petit jeux en c++, une application du gestion en PHP (avec SQL pour la base de données), mais je voudrais être un pro en Android, je sais qu'il me faut des connaissances en JAVA. Bon mes questions sont :
- Quel est le meilleur IDE ?
- Puisque je connais pas mal de chose en C++, est ce que si je connais juste la différence entre JAVA et C++ suffit sans avoir pratiqué en JAVA ?
Et si vous avez des tutoriels, ou bien de quoi commencer je serai content de les recevoir :D
-
Réponse de normand: Oui et Non :D
Commençons par le début. Le meilleur IDE est celui supporté officiellement déjà... donc Android Studio, même si je lui préfère parfois Eclipse (et sa capacité à faire du C, C++, PHP, Java, js, le tout en parallèle, sans compter les multiples plugins existants).
Ensuite la différence entre Java et C++ est plus grande qu'il n'y parait (elle est plus ténue entre Java et C# par exemple).
D'abord C++ est très limité. Et il faut donc considérer des librairies annexes (certains utilisent stdlib mais ce n'est pas la seule). Java vient par défaut avec tout un tas de librairies (java.io, java.lang, ...) c'est bien d'ailleurs là dessus que Sun râlait à propos d'Android :D
La notion d'héritage (la relation "est un") en Java est découplée de la notion de fonctionalité (les interfaces). Un objet ne peut hériter que d'un seul autre objet, mais peut implémenter plusieurs interfaces.
Il n'y a pas de "fonction virtuelle". En Java elles le sont toutes.
Les "scopes" aussi sont gérés différemment (en particulier le "scope" par défaut qui permet de rendre visible une classe ou une fonction uniquement au package auquel elle appartient).
Et probablement le plus important: la gestion mémoire. Inexistante en C++ (il fallait fréquemment surcharger l'operateur "new" pour améliorer l'allocation par défaut), et transparente en Java. De plus en Java tout est une "référence" impossible donc de créer un objet "dans la pile".
Enfin bref, la manière de programmer est du coup bien différente.
Passé la "barrière" du langage (après tout, on peut s'adapter au langage), il y a aussi des éléments de programmation dont Android fait usage à foison qu'il faut maitriser.
Par exemple le pattern "observer" est utilisé quasiment de partout (c'est un bon pattern de toute manière...).
Ensuite on parle de programmation de device portable, pour lesquels l'optimisation de la batterie est le facteur le plus important.
On ne fait donc jamais de boucle d'attente (le célèbre "while (!ready) sleep(50);" qui de toute manière est une aberration dans tout OS), mais systématiquement de la programmation événementielle.
Même le démarrage d'une application (en réalité l'ouverture d'une activité ou le lancement d'un service) se fait par événement (les "Intent" dans Android).
-
J'ai toujours avais l'idée qu'il est simple d'immigré du C++ vers JAVA, alors qu'il n'est jamais simple.
Je vous remercie pour votre réponse bien détaillée :)