Partons du principe que tu souhaites développer une même application pour Windows, Linux, MacOS, iOS et Android. Déjà, il faut savoir que Windows, Linux, MacOS et iOS ont un énorme point commun, à savoir une interface système propriétaire. Pour la contourner, il suffit le plus souvent d’utiliser un framework(1) universel au lieu d’utiliser celui proposé nativement par le système. Celui qui a la cote ce moment, c’est QT(2). Une fois installé, il te permettra de programmer de la même manière ces 3 environnements. Pourquoi pas les 4 ? Tout simplement, car iOS nécessite obligatoirement l’utilisation de l’interface système (via le SDK XCode(3) proposé gratuitement par Apple), tout en rendant indispensable la présence d’une signature numérique. Mais en dehors de cela, le principe de programmation reste le même.
La deuxième exception, c’est donc Android. Celui-ci, je le rappelle, repose sur du Linux. Logiquement, si mon programme fonctionne sous Linux, il devrait pouvoir fonctionner sous Android. Or, ce n’est pas le cas. En effet, Google a fait le choix délibéré d’interdire le système à ses utilisateurs en confiant l’installation et l’utilisation de ses applications à sa machine virtuelle Java. Et le Java, plus particulièrement sous l’une de ses versions (appelée aussi Bytecode Java(4)), est ce que l’on appelle un langage intermédiaire (comme LLVM(5) ou comme le CIL, pour Common Intermediate Language(6), qui a notamment donné naissance au .NET Framework de Microsoft).
En clair, cela veut dire que si tu souhaites avoir un seul et même code, quel que soit l’environnement auquel tu le destines, il te faut passer par des compilateurs qui vont être capables de te sortir ton programme en langage intermédiaire. Et ça tombe bien puisque FreePascal(7) ou encore GCC(8) te permettent de le faire. Par contre, attention, la sortie en langage intermédiaire nécessite le plus souvent d’être activée lors d’une recompilation du compilateur. En effet, ce n’est pas une option qui est proposée en standard.
Ensuite, il ne te restera plus qu’à compiler ton code en langage intermédiaire à l’aide d’un compilateur supportant celui-ci en entrée. C’est notamment le cas d’ANT(9) d’Apache qui te permettra de transformer assez facilement le langage intermédiaire produit par FreePascal/GCC en application Java. Il te restera plus qu’à packager ton application Java en fichier APK(10).
Et voilà !
Pour aller plus loin :
(1) fr.wikipedia.org/wiki/Framework
(2) fr.wikipedia.org/wiki/Qt
(3) fr.wikipedia.org/wiki/Xcode
(4) fr.wikipedia.org/wiki/Bytecode_Java
(5) fr.wikipedia.org/wiki/LLVM
(6) fr.wikipedia.org/wiki/Common_Intermediate_Lang...
(7) fr.wikipedia.org/wiki/Free_Pascal
(8) fr.wikipedia.org/wiki/GNU_Compiler_Collection
(9) fr.wikipedia.org/wiki/Apache_Ant
(10) fr.wikipedia.org/wiki/APK_(format_de_fichier)