Bien qu'en pratique, la plupart des codes d'octets compilés soient indépendants de la plate-forme, l'expérience acquise au cours de mes 12 années de développement sur la plate-forme Java m'a appris qu'il existe encore des particularités d'une plate-forme à l'autre.
Par exemple, lors du développement d'une application Java 1.4 Swing pour PC et MacOSX, le comportement des boîtes de dialogue était différent si le cadre parent est nul.
Un autre exemple pourrait être le travail avec le système de fichiers et les fichiers en général. L'API Java dispose de méthodes permettant de protéger le développeur des différences entre les séparateurs de chemin ( /
vs \
). Lorsque vous écrivez dans un fichier, il est important d'utiliser l'API FileWriter comme prévu afin que les caractères de retour et autres soient générés correctement pour la plate-forme sur laquelle ils sont écrits.
Ainsi, bien que la devise soit "écrire une fois, exécuter n'importe où", mon expérience m'a montré que pour les environnements de production, il faut écrire une fois, test partout.
Par conséquent, le fait de disposer de solides tests unitaires et d'intégration peut y contribuer, car vous pouvez exécuter ces tests sur les différentes plateformes sur lesquelles vous souhaitez distribuer votre logiciel.
Malgré quelques problèmes mineurs ici et là, il est agréable de voir votre code fonctionner sur Linux, Unix, Windows et MacOSX (BSD Unix) en utilisant les mêmes JARs.