2010-03-30 10 views
0

Assez clair à partir du titre lui-même, que signifie porter une application X sur une plate-forme Y? Dites par exemple que j'ai une application X en cours d'exécution sur certains systèmes d'exploitation, disons Y, que dois-je faire pour porter cette application sur un autre système d'exploitation, disons Z?
Est-ce que cela signifie la réécriture d'une nouvelle application pour un système d'exploitation Z qui imite nécessairement le comportement de l'application X sur le système d'exploitation Y.Qu'entend-on par porter une application X sur une plate-forme Y?

S'il vous plaît expliquer.

Répondre

3

Il n'existe pas de méthode précise pour cela. Dans certains cas, une réécriture complète est nécessaire. Dans d'autres, il peut s'agir de compiler pour un OS ou un processeur différent. Cela dépend vraiment de l'application, de la plate-forme source et de la plate-forme cible. Tout ce qui fonctionne!

1

Certains programmes, vous pourriez juste être en mesure de recompiler pour une nouvelle plate-forme, pas de problèmes. Si c'est un programme très simple, n'utilisant rien de spécifique à ce système d'exploitation, vous pourriez être en mesure de s'en tirer avec ça. Fondamentalement, en prenant la source, en le déplaçant vers un autre système d'exploitation, et en utilisant un compilateur là-bas. Cependant, même s'il existe un code spécifique, vous pouvez utiliser des indicateurs de compilation ou des constantes dans votre code pour que le compilateur fonctionne différemment. Je suis rouillé sur ma syntaxe C++, mais je pense que cela devrait montrer ce que je veux dire:

#if OS == WINDOWS 
root = "C:\\"; 
#elseif OS == LINUX 
root = "/"; 
#endif 

Une autre méthode consiste à exécuter le programme à l'intérieur d'une machine virtuelle, comme Java. Cette machine virtuelle fonctionnerait sur différentes plates-formes et votre exécutable devrait être capable de fonctionner de manière transparente sur tout ce qui l'utilise. Vous devrez peut-être effectuer une recompilation avec quelques petites modifications, s'il y avait du code spécifique au système d'exploitation, mais si vous avez l'intention de le faire depuis le port, vous ne vous inquiéterez probablement pas de cela.

Une troisième façon est une combinaison des deux, et est, si je me souviens bien, ce que fait Firefox. La plupart du code reste exactement le même, mais il utilise une base pour fonctionner, qui est compilée spécifiquement pour ce système d'exploitation, qui définit des choses différentes, crée des types spécifiques de variables, tels que nsInt (depuis longtemps, j'ai regardé FF code, donc je suis probablement faux, mais je sais que ns est leur convention) que vous utiliseriez à la place de int, car il serait spécifiquement conçu pour être le même sur toutes les plates-formes. Lorsque vous compilez, la plate-forme correcte est choisie pour la base, puis le programme entier est compilé en utilisant cela.

1

Je suis d'accord avec Peter.

« Porting », lorsque lesdits types de non-techniques, signifie généralement: « Je veux utiliser X sur mon système - comment puis-je faire » Cela peut être aussi simple que copier le même code (disons Java ou .Net) et l'exécuter (ta da!), Ou cela peut être aussi compliqué que de prendre X comme base d'une spécification et de reconstruire à partir de zéro (réécriture complète par Peter). "Portage" pour les utilisateurs techniques se réfère généralement à déplacer une fonctionnalité d'un système à l'autre. Il peut s'agir d'un système d'exploitation (OS), d'un framework (par exemple Java vers .Net), d'une technologie (par exemple Flash to JavaScript + CSS + xHTML) ...

De toute façon, vous avez besoin de plus d'informations pour fournir une recommandation /Solution.